Process Synchronization
- 협력하는 프로세스들 사이에서 실행 순서 규칙을 정하여 공유된 자원의 일관성 (consistency)을 보장하는 것
- 하나의 프로세스가 공유된 자원에 접근하고 난 뒤에 다른 프로세스가 쓰도록 만들어주어야 함
Critical Section (Shared Resource)

n개의 프로세스들이 있을 때, 이 프로세스들은 공유된 자원을 사용하기 위해 경쟁한다 (race condition). 각각의 프로세스에는 “code segment”라는 것이 있는데 일반적으로 “Critical Section (CS)”이라고 불린다. CS을 통해 공유된 자원에 접근할 수 있다.
CS resource that “allows only one user at a time”.
- 위의 문장과 같이 한 번에 하나의 프로세스만 허용
- Race condition이 일어나지 않기 위해 사용
Solutions for CS problem
- Mutual exclusion (상호 배제)
- 하나의 프로세스가 CS 내에서 실행 중일 때 다른 프로세스는 CS으로 진입할 수 없음
- Progress (진행)
- CS에서 실행 중인 프로세스가 없다면 CS으로 진입하려는 프로세스들 중 하나는 반드시 유한한 시간 내에 진입해야함
- Bounded waiting (한정된 대기)
- 다른 프로세스의 starvation (기아)를 방지하기 위해 CS에 한 번 접근했던 프로세스는 다시 CS에 들어갈 때 제한을 둠
- 즉, CS에 대한 진입 요청 후 무한히 기다리지 않도록 함
Mutex와 Semaphore
- Synchronization 방법 중 여러 프로세스나 스레드가 공유 자원에 접근하는 것을 제어하기 위한 방법들
Mutex

- “Mutual Exclusion”의 약자로서 CS를 가진 프로세스 (or 스레드)들에 의해 소유될 수 있는 key와 lock, unlock을 기반으로 한 상호 배제 기법
- 오직 1개만의 프로세스 (or 스레드)만 접근 가능
- Mutex는 semaphore가 될 수 없음
- Mutex 구현의 문제: starvation (기아) - 무한 대기
- 높은 우선순위의 프로세스가 계속 들어오면 무한히 대기만 하는 상황이 발생
- 시간이 지날 수록 우선순위를 높여주는 방법으로 해결 (aging)
Semaphore

- Signaling mechanism. 현재 공유 자원에 접근할 수 있는 프로세스 (or 스레드)의 수를 나타내는 값을 두어 상호 배제를 달성하는 기법
- Semaphore의 정수형 변수인 S 만큼 프로세스 (or 스레드)가 접근할 수 있음
- Semaphore는 mutex가 될 수 있음
- Semaphore 구현의 문제: busy waiting
- Lock의 해제를 기다리는 동안 빈 반복문을 계속 도는 것을 반복하기 때문에 context switching이 발생
- 따라서 block()을 통해서 프로세스를 대기 상태로 전환하고 CPU 스케줄링을 실행
Reference
Deadlock

- 두 개 이상의 프로세스가 서로 lock을 해제하기만을 기다리는 상황으로써 서로의 작업이 끝나기만을 기다리고 있는 상태. 결과적으로 아무것도 완료되지 못하는 상태
- CS에 아무것도 들어있지 않은데 deadlock이 걸려서 아무도 들어갈 수 없는 상태
- Multi-programming에서 흔히 발생할 수 있는 문제
Deadlock의 발생 조건
- Mutual exclusion (상호 배제): 자원은 한 번에 하나의 프로세스만이 사용할 수 있어야 함
- Hold and wait (점유 대기): 하나의 프로세스가 최소한 하나의 자원을 점유하고 있으면서도 다른 프로세스에 할당되어 있는 자원을 추가로 점유하기 위해 대기하고 있어야 함
- No preemption (비선점): 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음
- Circular wait (순환 대기): 프로세스의 집합 {P_0, P_1}이 있다고 했을 때, P_0의 프로세스는 P_1의 프로세스가 점유한 자원을 대기하고, P_1의 프로세스는 P_0의 프로세스가 점유한 자원을 대기해야 함
'운영체제(OS) > 프로세스 관리' 카테고리의 다른 글
프로세스 구조 및 관리 기법 (0) | 2020.08.17 |
---|