Computer Science
Chapter 8. Deadlock
# The Deadlock Problem - Deadlock이란 무엇인가? : 프로세스가 여러개 있을 때 주로 발생하는데, 잘못된 자원 관리로 인해서 프로세스들이 서로 다른 프로세스가 소유하고 있는 자원을 얻기를 바라면서 무기한 교착 상황에 빠지는 것을 의미한다. Example로 두가지를 들 수 있다. 1. P1, P2 프로세스가 각자 disk drive를 소유하고 있는데, 다른 상대방의 disk를 필요로 하면서 자신의 disk를 놓지 않는다면 deadlock이 발생하게 된다. 2. 만약 Semaphore A와 B가 둘다 1로 초기화되어있는 상태에서, P0가 Wait A를 통해서 A를 0으로 만들면서 자원 A를 갖고, P1이 Wait B를 통해서 B를 0으로 만들어 자원 B를 갖는 상태에서, P0는 wa..
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에서는 이를 냉장고를 잠가버려서 두번째 사람이 확인을 못하..