분류 전체보기

    Chapter 7. Classic Problems & POSIX API

    # Liveness : Synchronization에서 핵심적인 변수는 Semaphore이다. => Wait 함수 호출시, 두번째 오는 프로세스가 block되는데, 이를 잘못 사용하면 프로세스가 둘다 아예 실행되지 않는 문제점이 발생하여 Progress property를 위반하게 된다. : DEADLOCK이 발생하게 된다. - Liveness는 Deadlock과 반대 개념으로, 어떤 경우에도 프로세스가 make progress할 수 있도록 보장한다. : 만약 어떤 프로세스가 무한정으로 block된다면, Liveness와 반대되는 개념인 Deadlock상태가 된다. +) Ji-Dum님 포스팅 참고. http://www.jidum.com/jidums/view.do?jidumId=447 지식덤프 I. 교착상태..

    Chapter 6. Process Synchronization

    # Background - Process Synchronization이란? : 여러 개의 프로세스가 shared resource를 동기화하지 않고 접근했을 때 발생할 수 있는 문제이다. => 쉬운 예로, too much milk problem을 들 수 있는데, 한 사람이 집에 우유가 없는 것을 발견하고, 이미 사러 갔는데, 다른 사람이 알지 못하고 또 다른 우유를 사와서 우유가 필요없이 너무 많이 생기는 문제가 발생한다. : 이는, 두개 이상 프로세스를 sync하지 않고 접근해서 발생할 수 있는 문제와 비슷하다. => 이를 해결하기 위해, 실제 프로그램 상에서는 locking mechanism을 사용한다. : too much milk problem에서는 이를 냉장고를 잠가버려서 두번째 사람이 확인을 못하..

    Ch 5-3) Process scheduling

    #Operating Systems Examples : 실제의 OS에 앞에서 학습한 내용을 적용해 보도록 하자. - 기본적으로, Linux Scheduling은 Scheduling class에 의존하여 작용한다. => Scheduling class의 숫자에 따라서 우선순위가 적용된다. 1) 0- 99 까지의 우선순위 : Real-time class (우선순위가 높다) 2) 100-139 : conventional class (우선순위 낮음) : 각 task를 클래스로 분류하고, 서로 다른 priority를 부여한다. ( 큐와 비슷하다) : Multi-Level Queue와 유사한 방식으로 개발되고, 여러개의 큐로 나누어져 큐 안과 큐 간 스케줄링이 각각 존재한다. - 각 프로세스들은 세가지 클래스로 분류된..