본문 바로가기

분류 전체보기

(212)
[운영체제] Memory Management 메모리는 주소를 통해 접근을 하는 매체 메모리는 주소가 매겨진다. 주소의 종류가 2가지가 있다. 1.논리적인 주소 - 프로그램이 가지고 있는 독립적인 주소 공간 2.물리적인 주소 - 물리적인 메모리의 주소. 0번지부터 통으로 관리된다. 독자적인 주소공간들을 물리적인 메모리 어딘가로 옮겨가야되고 , 주소 변환이 일어난다. (주소 바인딩이라 한다) 컴파일이 되어서 실행파일로 만들어지게 되면 Symbolic address 가 숫자로 된 주소로 변경되게 된다. 프로그램마다 가지고 있는 주소라 로지컬 어드레스가 된다. 이제 이게 실행이 되려면 물리적인 메모리로 올라가야한다. 이 물리적인 메모리로 올라가는걸 주소 바인딩이라 하는것 그 중 제일 위 컴파일 타임 바인딩은? 컴파일 시점에 이미 물리적인 메모리 주소가 결..
[운영체제] Deadlock 프로세스들이 서로가 가진 자원을 기다리면 block 된 상태다 1. 상호배재 - 하나의 프로세스만 자원을 사용할 수 있다. 2. 비선점 - 자원을 빼앗기지 않는다. 3. 보유대기 - 다른 자원을 기다릴때 보유 자원을 놓지 않는다. 4. 순환대기 - 내가 필요한 자원은 다른 프로세스가 가지고 있고 , 또 그 프로세스도 다른 프로세스의 자원을 기다리고 하는 싸이클 위에 2가지는 데드락이 생기지 않게 미연에 방지하는 방법 위로갈수록 더 강력한 방법. 밑에 2가지는 생기게 두는데 , 3번 방법이 데드락이 있으면 recover 시키고 , 4번째는 데드락이 생겨도 시스템이 책임지지 않는방법 대부분 ignorance를 채택하고있다. 데드락이 생겨도 관여하지 않는다. ignorance - 운영체제가 관여하지 않고 사람..
[운영체제] Process Synchronization3 이번엔 Synchronization로 해결할 수 있는 문제 3가지를 알아보자 Bounded - Buffer - Problem 버퍼의 크기는 유한하다. 생산자와 소비자가 있다. 생산자는 공유 버퍼에다가 데이터를 만들어서 집어 넣는역할을 한다. 소비자가 데이터를 가져가는 역할 이 상황에서 무슨 문제가 있냐? 생산자 둘이 동시에 비어있는 곳에 데이터를 넣을 경우 - 생산자가 데이터를 넣으려고 할때 락을 걸어야한다. , 소비자도 마찬가지로 가져갈때 락을 걸어야한다. Readers - Writers Problem 읽는 프로세스와 쓰는 프로세스가 있는 경우다. Writer 는 Synchronization 을 해야되지만 Reader 는 동시에 해도 상관없는 상황 Reader 든 Writer 든 P 연산을 해서 DB ..
[운영체제] Process Synchronization 2 세마포어 - 추상 자료형 세마포어 자료형은 P 연산과 V 연산 이렇게 2가지로 정의가 된다. 세마포어를 왜 사용하냐면 , 락을 걸고 락을 풀고 , 이걸 프로그래머에게 간단하게 제공할 수 있다. 공유 자원을 획득하고 반납하는걸 세마포어가 처리해주는것. P 연산은 세마포어 변수를 획득하는 과정이고 , 공유 데이터를 획득하는 과정이고 (락을 거는과정) V 는 다 사용하고나서 반납하는 과정이다.(락을 푸는 과정) 세마포어 변수 mutex 를 1로 두면 P 연산으로 락을걸고 CS 를 쓰고 V 로 반납하는 과정을 거친다. 세마포어를 획득할 수 없으면 프로세스를 block 시켜버린다. 그러다 세마포어가 반납된곳이 있으면 wakeup 으로 깨워서 레디 큐로 옮긴다. P 연산 (자원을 획득하는 과정) 자원의 여분이 없으..
[Hive] - Overview Apache Hive 는 SQL 구문으로 쿼리해서 분산 스토리지 데이터셋을 읽고 쓰고 관리 할 수 있도록 지원하는 소프트웨어다 SQL 을 통해 extract/transform/load (ETL) , 데이터 분석 같은 데이터 웨어 하우스 일을 할 수 있게 해준다. Apache HDFS 또는 Apache HBase 같은 다른 데이터 스토리지 시스템에 직접 접근 할 수 있다. Apache Tez, Apache Spark , Map Reduce 를 통해 실행을 쿼리한다. Sub second query 를 Hive LLAP , Apache YARN , Apache Slider 를 통해 검색한다. Hive SQL은 UDF(사용자 정의 함수), UDAF(사용자 정의 에그리게이트) 및 UDTF(사용자 정의 테이블 함수..
[운영체제] Process Synchronization 컴퓨터 시스템에서 데이터가 접근되는 패턴을 알아보자 데이터가 저장된 위치가 있을 것이고 그걸 읽어와서 연산을 하고 다시 데이터를 저장하는 패턴을 거친다. 근데 이 방법은 누가 먼저 데이터를 읽어오느냐에 따라서 결과가 달라질 수 있다. 이걸 해결하는 Synchronization 방법을 알아보도록 하자 Storage 박스를 여러곳에서 쓰게되면? ++ 가 먼저 수행되고 -- 가 다시 가져가서 수행이되면 ++ 연산이 적용되지 않고 --만 저장되는 Synchronization 문제가 생긴다. 하나의 데이터를 동시에 접근 하려고 할때 Race Condition 이라고 한다. CPU 가 여러개인 멀티프로세서 시스템 상황에서 발생할수있는 문제 예제로 봐보자면, 이미지와 같다. P a 가 Count 를 사용해서 1을 추..
[운영체제] CPU Scheduling 2 이 페이지는 가볍게 봐보자 이전에 본 스케줄링 알고리즘을 이어서 보겠다 줄마다 우선순위가 있다. foreground 큐와 background 큐가 있다. 가장 위에 줄의 큐가 비어있어야 그 다음 줄의 큐가 실행된다. CPU 가 여러개 있을때의 스케줄링을 봐보자 - 가볍게 보자 한줄로 줄세워서 각 프로세스를 CPU 들이 알아서 꺼내가서 쓰는방법이 있다. 특정 CPU 에서 수행해야 하는 프로세스가 있으면 복잡해짐 SMP - 각 CPU 가 각자 알아서 스케줄링 Asymmetric - 하나의 CPU 가 Main CPU 느낌을 가짐 데드라인이 있는 스케줄링 소프트 리얼타임은 - 데드라인은 있지만 조금 어겨도 된다. User Level Thread - 사용자 프로세스가 스레드를 관리하고 운영체제는 이 스레드의 존재..
[운영체제] CPU Scheduling 프로그램의 path는 보통 이미지 처럼 실행된다. 왼쪽이 CPU 가 사용하는 인스트럭션 기계어들이다. 쭉 실행을 하다가 read file 같은 I/O 작업을 만나게되면 오래걸리는 작업이기 때문에 CPU 를 놓고 I/O 작업을 하고 I/O 작업이 끝나면 ready 상태로 CPU 할당을 기다린다. CPU 만 연속적으로 쓰면서 인스트럭션을 실행하는 게CPU burst 라 하고, I/O 를 사용하는게 I/O burst 라 한다. I/O 바운드 잡은 사람과 인터렉션을 많이 해서 I/O를 많이 사용한다. CPU 바운드 프로세스는 I/O 가 많이 없기때문에 연속적으로 CPU 를 사용하는 프로세스다. 이 두 종류들의 프로세스를 CPU 가 잘 사용하기 위해선 CPU 스케줄러가 필요하다. 누구에게 CPU 를 줄지 결정하는..