프로세스 동기화
여러 프로세스의 접근이 가능한
공유 데이터
에 여러 프로세스가 동시에 접근해도 데이터의 일관성 (data consistency)을 유지하기 위한 개념
- 공유된 데이터에 동시에 여러 프로세스들이 접근했을 경우 예측하지 못한 일이 발생하는 경우를 배제하기 위함.
- Data consistency를 보장해줘야함.
Critical Section
상호 배제의 원리가 지켜져야 하는 영역 (임계영역)
- 공유 데이터에 접근하는 코드 블록
- 공유 데이터에 동시에 접근하면 데이터의 무결성(일관성)이 손상될 수 있음.
Critical Section Problem
- 생산자-소비자 문제
- 생산자와 소비자 역할을 하는 프로세스 2개가 동시에 공유 자원에 접근함으로써 기대했던 값과는 다른 결과가 나옴.
Race Condition
임계 영역의 부적절한 처리로 예상치 못한 결과를 발생시킬 수 있는 상황.
- 해소하기 위해선 하나의 프로세스만 임계 영역을 실행할 수 있도록 함. (mutual)
임계구역의 3가지 요구 조건
mutual exclusion
상호배제- 특정한 프로세스가
critical section
에서 실행되는 동안 다른 프로세스가 접근할 수 없다.
- 특정한 프로세스가
process
진행critical section
을 사용하지 않고 있다면 다른 프로세스가 접근할 수 있도록 한다.
bounded waiting
한정된 대기ciritical section
진입 횟수에 한계가 있어 같은 프로세스가 계속 독점해서 사용하지 못하게 한다.- 다른 프로세스들이 기아 상태에 빠지지 않도록 한다.
deadlock
교착상태, 두개 이상의 작업이 서로 성대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태
교착상태가 발생하는 조건
-
mutual exclusion
프로그램들이 공유 자원을 동시에 쓸 수 없는 상황.
-
점유 상태로 대기
공유 자원을 점유한 상태에서 다른 자원을 기다리는 것.
-
선점 불가
자원을 어떤 프로세스가 점유 중일 때 다른 프로세스가 그 자원을 뱃을 수 없다는 것
-
순환성 대기
대기가 꼬리게 꼬리를 문 상황