내가 OS에서 상당히 좋은 성적을 받았고 나름 이해도가 높다고 생각햇는데
남에게 어떠한 용어에 대해 명확하게 설명하는 것은 좀더 구체적이고 디테일하게 개념을
이해해야 한다는 것을 뼈저리게 느꼈다.
Dead Lock이란..
이런 상황에서 S, Q 모두 1로 세팅되어 있다고 생각하자. P_0가 전부 수행되고 P_1이 수행되고를 반복하는 것은 아무 문제가 없다. 하지만 multi process 환경에선 이러한 순서를 보장해 줄 수 없다. P_0, P_1 이 거의 동시에 들어가서 S, Q의 값이 0이 된다면 서로 semaphore의 값을 올려주길 기다린다. 따라서 진행이 되지 않는데 이런 상태를 Deadlock(교착상태) 라고 한다.
우리의 메모리가 고작 8MB 뿐이라고 생각해보자. 여러 프로그램을 돌리다가 메모리가 꽉차면 더 이상 메모리에 적재가 되지 않을까? 그렇지 않다. 메모리에 적재된 내용중에 일부가 디스크로 옮겨지고 해당 내용이 빠진 메모리 공간를 이용할 수 있다. 나중에 메모리 공간에 여유가 생기거나 접근하게 되면 디스크로 옮겨둔 내용을 다시 메모리에 적재해 수행시킬 수 있다. 이러한 과정을 swap out / swap in 이라 하고, 이 방법으로 실 메모리보다 더 큰 메모리를 사용할 수 있는 것이다.
즉 프로세스들에게 일정 time quantum을 주어 그 시간이 지나면 다른 프로세스에게 CPU를 할당하는 것인데 이럴 경우 각 프로세스마다 응답시간이 줄어드는 장점이 있다. 또 priority에 구애받지 않고 골고루 프로세스를 수행하리 때문에 starvation도 일어나지 않는다. 하지만 계속해서 context switching이 일어나기 때문에 오버헤드가 크다.

내용은 정말 좋은데
답글삭제생각햇는데 라고 오타났어요 징어님