멀티 스레딩에 문제점에서도 나오듯, 동일한 자원을 동시에 접근하는 작업을 실행하는 코드 영역을 Critical Section (임계영역)이라 칭한다.
프로세스들이 Critical Section을 함께 사용할 수 있는 프로토콜을 설계하려는 것
Mutual Exclusion(상호배제)
프로세스 P1이 Critical Section 에서 실행중이라면, 다른 모든 프로세스들은 그들의 critical section에 들어가면 안 된다.
Progress(진행)
아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해줘야 한다.
Bounded Waiting(한정된 진행)
프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때 까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야 한다.
Mutex Lock
Semaphores
일련의 프로세스들이 서로가 가진 자원을 기다리며 Block된 상태
Mutual Exclusion (상호배제)
No Preemption(비선점)
Hold And Wait (보유대기)
Circular Wait (순환 대기)
Deadlock Prevention (예방)
Deadlock Avoidance (회피)
Deadlock Detection and recovery (회복)
Deadlock Ignorance (무시)