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
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 교착상태 (Deadlock) (0) | 2020.09.23 |
---|---|
[운영체제] 컴퓨터 시스템 구성요소 (0) | 2020.09.20 |
[운영체제] Pthread 개요 (0) | 2020.09.14 |
[운영체제] 인터럽트 (Interrupt) (0) | 2020.09.14 |
[운영체제] 스레드(Thread) (0) | 2020.09.14 |
댓글