CS/운영체제

    운영체제(OS) - 데드락(Deadlock)

    Deadlock - 어떤 프로세스 집단 내의 각 프로세스가 그 집단 내의 또 다른 프로세스에 의해서만 발생할 수 있는 이벤트를 기다리고 있으면, 그 프로세스 집단은 deadlock상태에 있다. 이 그림처럼 차량이 또다른 차량의 앞을 막고, 또 그 차량이 또 다른 차량의 앞을 막아 아무도 빠져나갈 수 없는 상태가 되었을 때 Deadlock상태라고 할 수 있다. 프로세스가 후진을 할 일은 없기 때문에 deadlock이 발생하면 손해없이 복구할 수 없다, deadlock에 관련된 프로세스중 누군가는 rollback또는 사라져야 한다. 위의 사진에서도 차량중 한 개의 차량만 사라져도 Deadlock은 풀리게 된다. Deadlock 발생 4가지 필요조건 1. 상호 배제(mutual exclution) - 각 자원..

    운영체제(OS) - Segmentation

    세그먼트 - 완전히 독립적인 주소 공간이다. - 각 세그먼트는 0부터 시그템에서 허용된 최대 크기까지 값을 갖는 선형 주소로 구성된다. 세그먼트는 서로 다른 크기이다.(page는 모두 동일한 크기) 세그먼트 크기 는 다른 세그먼트에 영향을 주지 않으면서 독립적으로 증가하거나 감소할 수 있다. 조건 페이징(paging) 세그멘테이션(segmentation) 프로그래머는 어떤 기술이 사용되고 있는지 알고 있어야 하는가? no yes 주소 공간의 크기의 종류가 몇개나 있는가 1 many 총 주소공간의 크기가 실제 메모리의 크기보다 클 수 있는가 yes yes 절차와 데이터를 구분하고 보호할 수 있는가? no yes 공간의 크기를 쉽게 변경할 수 있는가? no yes 사용자와의 절차 공유를 하게 되는가 ? no..

    운영체제(OS) - 페이지 교체(Page Replacement)

    프로세스를 사용하기 위해선 메모리에 올려야 한다. 그럼 언제 메모리에 가져다 놓는가? - Demand fetch(필요로 할 때 가져온다) - Anticipatory fetch(예상해서 가져온다) 메모리 빈 공간중 어디에 가져다 놓는가? - First-fit(첫 번째로 빈공간), Best-fit(필요한 공간과 크기가 비슷한 공간), Worst-fit(best의 반대, 가변 파티션이 가능한 조건에서) 교체가 발생할 때 무엇을 교체할 것인가? - 교체전략을 말한다. 디스크에서 데이터를 갖고 왔는데 메모리에 빈자리가 없을 경우 메모리를 점유하고 있는 것 중에서 누군가를 교체시켜야 한다. 이게 바로 replacement 문제이다. 메모리에서 쫓겨날것은 앞으로 잘 사용되지 않을 프로그램이 쫓겨나야 한다. 페이지 교..

    운영체제(OS) - 가상메모리(Virtual Memory)

    Overlay vs Virtual Memory Overlay 프로그램의 실행간에 메모리 관리를 프로그램이 직접한다. 어떤 데이터는 필요 없으니까 메모리에서 지우고, 필요한 데이터는 메모리로 가져오면서 필요한 부분씩 쪼개서 실행하는것. 게임이라면 게임이 메모리 관리를 직접하는데, 직접하게 만들기 위해선 프로그래머가 직접 개발 당시에 코딩한다. 게임을 만들 때 프로그래머가 직접 설계한다. 운영체제가 메모리 관리를 하지 않는다 Virtual Memory 프로그래머가 메모리 관리를 하지 않고 운영체제가 한다. 운영체제가 알아서 어떤 부분을 가져오고, 지운다. 하지만 한계점이 존재한다. 성능상의 최적화가 안될 수 있고 제대로 동작하지 않으면 성능이 안좋을 수 있다. MMU(Memory Management Unit..

    운영체제(OS) - 메모리 관리(Basic Memory Management)

    Real Memory(Real Storage) 실제 메모리(주 기억장치)라고도 한다. 메모리는 CPU와 상호작용을 통해 CPU는 메인메모리에 주소로 접근하면 CPU는 메모리에서 해당 주소에 위치한데이터를 가져온다. 주소의 개수 128M의 Ram이 있을 경우 M(메가바이트) = 2의 20승 128 = 2의 7승 2^20 * 2^7 = 2^27만큼의 주소 개수가 사용된다. 재배치 문제 a와 b는 개별 프로그램의 메모리구조이며 각 메모리마다 0~16380의 메모리 영역을 차지한다.. a를 실행하면 0번이 실행되고 24번으로 점프한 후 나머지가 실행되고 끝난다. b는 28번으로 점프해서CMP(비교)를 실행하고 프로그램이 끝난다. 이렇게 작성된 프로그램을 한개의 메모리에 적재를 시킨다. a가 낮은 주소 영역(흑색..

    운영체제(OS) - 세마포어(Semaphore)와 뮤텍스(Mutex)

    프로세스간 메시지를 전송하거나, 공유메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생한다. 즉, 공유된 자원에 여러 개의 프로세스가 동시에 접근 하면서 문제가 발생하는 것으로써 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하는데, 이를 위하여 고안된 것이 바로 세마포어(Semaphore)다. 세마포어와 뮤텍스의 차이 - 세마포어(Semaphore): 공유 자원의 데이터 혹은 임계영역(Critical region)등에 여러 Process 혹은 Thread가 접근하는 것을 막아줌.(동기화 대상이 하나 이상) - 뮤텍스(Mutex): 공유 자원의 데이터 혹은 임계영역(Critical region)등에 하나의 Process 혹은 Thread가 접근하는 것..

    운영체제(OS) - 식사하는 철학자 문제(Dining Philosophers Problem)

    식사하는 철학자 문제 철학자 다섯이서 원형 식탁에 둘러앉아 생각에 빠지다가, 배고플 땐 밥을 먹는다. 그들의 양쪽엔 각각 젓가락 한 짝씩 놓여있고, 밥을 먹으려 할 땐 다음의 과정을 따른다. 1. 왼쪽 젓가락부터 집어든다. 다른 철학자가 이미 왼쪽 젓가락을 쓰고 있다면 그가 내려놓을 때 까지 생각하며 대기한다. 2. 왼쪽을 들었으면 오른쪽 젓가락을 든다. 들 수 없다면 1번과 마찬가지로 들 수 있을 때까지 생각하며 대기한다. 3. 두 젓가락을 모두 들었다면 일정 시간동안 식사를 한다. 4. 식사를 마쳤으면 오른쪽 젓가락을 내려놓고, 그 다음 왼쪽 젓가락을 내려놓는다. 5. 다시 생각하다가 배고프면 1번으로 돌아간다. 발생할 수 있는 문제 식사하는 철학자 문제는 교착상태(Deadlock)의 대표적인 예제이..

    운영체제(OS) - 스케줄링(Scheduling)

    스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업이다. CPU는 한 번의 하나의 작업만 처리 가능한데, 여러개의 작업이 존재할 경우 해당 작업들이 번갈아 가면서 수행되도록 만드는 것을 스케쥴링이라고 한다. 프로세스가 실행되는 순서를 정해주는 작업이라고도 한다. 스케줄링 과정 1. 문맥교환(Context Switching) 문맥교환 "Context Switching에서 Context는 현재 프로세스에 사용되는 자원 혹은 개체들의 상태를 의미한다. Switching은 교환을 의미한다. CPU가 스케줄링에 따라서 프로세스들에게 CPU를 할당해 줄 때 1) 현재 CPU가 할당된 프로세스의 정보를 저장.(프로세스 테이블에 레지스터값과 메모리맵(참조비트)) 2) ..

    운영체제(OS) - IPC(2)(Inter-Process Communication), ITC(Inter-Thread Communication)

    race cindition을 피하기 위해 하드웨어 지원을 통한 Busy Waiting TSL(Test and Set Lock) TSL R, A 명령어를 사용한다. 메모리 A에서 레지스터 R로 값을 읽고 동시에 A에 0이 아닌 값을 저장한다. 프로그램 코드상 동시에 일어나기 때문에 스케쥴러에 의해 코드가 실행되다 cpu사용권을 넘겨주는 일은 발생하지 않는다. 실행 횟수 cpu memory 초기 0 0 실행 1 0 1 실행 2 1 1 0번 프로세스와 1번 프로세스가 있다고 가정한다면 0번 프로세스가 메모리의 0을 읽는다. 그럼 cpu의 레지스터엔 0이 읽히고 메모리는 1이된다. 그리고 1번 프로세스로 넘어가서 다시 메모리를 읽으려한다면 메모리엔 실제 값인 0이 아닌 1의 값을 읽게된다. 메모리의 값이 0이면..

    운영체제(OS) - IPC(Inter-Process Communication), ITC(Inter-Thread Communication)

    Concurrency는 프로그램의 성질이고 parallism은 기계의 성질이다. Concurrency(병행성) - 프로그램 여러 부분들이 순서에 상관없이 부분순서(partial-order)로 수행될 수 있는 능력을 일컫는다. 어떤 프로그램이나 알고리즘이 순서에 상관없이 동시에 수행될 수 있다면 concurrent하다고 말한다. 예를들어 1부터 100까지 숫자를 더하는 과정을 생각해보자면 숫자 100개를 여러 부분 집합으로 나눈 뒤 동시에 부분합을 구한다. 그리고 이 부분합을 다시 더하면 원래 얻고자 하는 값을 얻을 수 있다. 이 때 이 알고리즘을 concurrent하다고 말한다. 그런데 이 알고리즘이 정말 물리적으로 병렬로 돌아갈지 아닐지는 이 알고리즘이 어떤 하드웨어 위에서 돌아가는지 알아야 확답을 할..