Computer Science/운영체제
[운영체제] 프로세스 동기화
Sky Titan
2020. 9. 14. 17:06
728x90
※출처 : TOPCIT 에센스
프로세스 동기화
- 2개 이상의 프로세스가 동시에 처리 중인 동일한 자료에 접근하여 변경하거나, 자료 조작 순서가 실행된 결과에 영향을 줄 때를 경합상태 (Race Condition) 이라고 한다.
- 경합 상태에서는 하나의 프로세스만 자료를 조작하도록 보호해야함 -> 프로세스 동기화
임계구역 (Critical Section)
- 다른 프로세스와 공유하는 자료를 변경하는 작업을 수행
- 한 번에 1개의 프로세스만이 접근 가능한 영역
do {
entry section
critical section //임계구역
exit section
remainder section //잔류구역
}while(TRUE);
임계구역 문제 해결 방안의 3가지 조건
|
조건 |
설명 |
|
상호배제 (Mutual Exclusion) |
한 프로세스가 임계구역에 진입하면 다른 프로세스들은 진입 못함 |
|
진행 (Progress) |
임계구역에 실행되는 프로세스가 없을 때, 잔류 구역에서 실행 중이지 않는 프로세스만 임계구역 진입 가능 |
|
한정된 대기 (Bounded Waiting) |
프로세스가 임계구역에 진입 요청 한 후 진입할 때까지 다른 프로세스들이 임계구역에 진입할 수 있도록 허용하는 시간은 한정적이어야 함 |
교착 상태
- 멀티 프로그래밍 환경에서 여러 프로세스들이 한정된 자원을 두고 경쟁한다.
- 한 프로세스가 자원을 요청했는데 사용 불가능하다면 '대기 상태'가 되고 다른 대기 중인 프로세스에 의해 해당 자원이 점유되고 있으면 다시 프로세스 상태를 변경시킬 수 없음 -> 이것을 '교착 상태' 라고 함
- 교착 상태 발생 -> 프로그램 종료 불가 -> 다른 작업 시작 불가
교착 상태 발생 조건
|
조건 |
설명 |
|
상호배제(Mutual Exclusion) |
한 번에 하나의 프로세스만이 공유 자원을 사용할 수 있는 상태 |
|
점유 및 대기 (Hold & Wait) |
프로세스들이 현재 자원을 점유하고 다른 자원을 요구하는 상태 |
|
비선점 (Non-Preemption) |
각 프로세스에 할당된 자원은 사용 완료 시 까지 강제로 해제 불가능 |
|
환형 대기 (Circular Wait) |
서로 다른 프로세스 간의 자원 요구가 연속적으로 반복되는 상태 |
교착상태 해결 방안
|
방안 |
설명 |
|
예방(Prevention) |
교착상태 발생 조건을 제거 -> 미리 예방 |
|
회피(Avoidance) |
교착상태 발생 조건 제거 x -> 적절하게 피해 나감 |
|
발견(Detection) |
교착상태 발생 허용 -> 발생 시 원인을 찾아 해결 |
|
회복(Recovery) |
교착상태 빠진 프로세스 재시작, 혹은 복구 |
728x90
