728x90
모든 프로세스는 실행을 위해 자원이 필요하다. 그런데 서로의 자원을 무한히 기다리기만 한다면 어떻게 될까?
교착 상태
교착 상태는 일어나지 않을 사건(필요한 자원의 할당)을 기다리며 일부 자원을 보유한 채로 무한히 대기하는 현상이다.
교착 상태가 발생할 수 있는 조건
- 상호 배제: 동시에 자원 사용이 불가능한 경우
- 점유와 대기: 자원을 할당받은 채 다른 자원의 할당을 기다리는 경우
- 비선점: 강제로 자원을 빼앗을 수 없는 경우
- 원형 대기: 자원을 원형으로 대기할 경우
교착 상태 해결 방법
- 교착 상태 예방
- 교착 상태 회피
- 교착 상태 검출 후 회복
교착 상태 예방
- 교착 상태 발생 조건 네 가지 중 하나를 없애는 것
- 교착 상태가 발생 배경 원천 차단
- 교착 상태가 발생하지 않음을 보장할 수 있지만, 여러 부작용이 따르는 방식이다.
상호 배제 조건 없애기
자원을 공유 가능하도록 변경한다. 단, 모든 자원에 대해 적용할 수 없다. (e.g. 프린터기)
점유와 대기 조건 없애기
특정 프로세스에 자원을 모두 할당, 아예 할당하지 않기. 단, 자원의 활용률 저하
비선점 조건 없애기(자원을 뺏을 수 있게 하기)
선점하여 사용 가능한 자원에 대해서는 효과적 (e.g. CPU). 단, 모든 자원에 대해 적용 가능한 것은 아니다 (e.g. 프린터기)
원형 대기 조건 없애기
자원에 번호 매기기. 오름차순으로 자원 할당
교착 상태 회피
교착 상태가 발생하는 이유를 무조건! 자원의 무분별한 할당으로 간주한다. 그렇기 때문에 교착 상태 회피에서는 교착상태가 발생하지 않을 정도로만 조금씩 자원을 할당하는 방법이다.
- 포크가 무한한 상황에서 한 두 개의 자원만을 요구했다면? (X)
- 포크가 두 개 있는 상황에서 여러 개의 자원을 요구했다면? (O)
교착 상태가 발생할 수 있는지, 현재 자원을 할당할 수 있는지 없는지 판단하는 알고리즘을 은행원 알고리즘 banker's algorithm이라고 부른다.
교착 상태 검출 후 회복
교착 상태가 발생하면 그때 회복하는 방식
- 선점을 통한 회복
- 프로세스 강제 종료(=강제로 자원을 반환하게 함)를 통한 회복
'Upstage AI Lab 4기 > 컴퓨터 공학' 카테고리의 다른 글
[운영 체제] 동기화 해결 방법 (2) - 조건 변수와 모니터 (0) | 2024.07.25 |
---|---|
[운영 체제] 동기화 해결 방법 (1) - 뮤텍스 락과 세마포 (0) | 2024.07.25 |
[운영 체제] 운영 체제(커널 영역과 사용자 영역) (0) | 2024.07.25 |
[컴퓨터 구조] 논리 주소와 물리 주소 (0) | 2024.07.25 |
[컴퓨터 구조] CPU 성능 (1) | 2024.07.24 |