📍1. 교착상태 해결 방법
아래로 갈수록 병행성/병렬성 자원율 ⬆️
1️⃣교착상태 예방(prevention) : 가장 좋고 보수적인 방법
- 교착상태에 빠지는 4가지 조건 중 하나 이상의 조건이 성립되지 못하도록 시스템 구성
2️⃣교착상태 회피(avoidance)
- 프로세스 수행 시작 또는 자원 할당 시마다 미래의 교착 상태 가능성을 검사하여 교착 상태가 발생하지 않을 것이라고 확신하는 경우에만 자원 할당
3️⃣교착상태 발견 및 복구(detection and recovery)
- 교착상태를 발견하는 프로그램을 백그라운드에서 구동, 발견 후 교착상태 해제(해결)
4️⃣교착상태 무시
- 교착상태는 없다고 단정, 아무런 대비책 없음
- 사용자나 관리자가 이상을 느끼면 컴퓨터 시스템을 재시작할 것이라고 믿는 방법
📍2. 상호 배제(mutual exclusion) 조건
✔️운영체제를 설계할 때 상호 배제 조건을 없앨 수는 없음
- 공유 자원의 일관성을 유지하기 위해 반드시 필요함
✔️사례: 파일 같은 자원의 경우
- 다수의 읽기 접근은 허용됨
- 다수의 쓰기 접근은 한 시점에 하나만 배타적으로 허용되어야 함 ➡️ 교착상태 발생 가능
📍3. 점유와 대기(Hold & Wait) 조건 제거 방법
✔️프로세스가 사용할 모든 자원을 수행 시 한 번에 할당 받도록 함
- 만일 전체 중 하나의 자원이라도 할당 받을 수 없다면, 프로세스는 어떠한 자원도 할당 받지 않은 채 대기함
- 모든 자원이 동시에 필요한 응용에 적합
✔️단점
1️⃣모든 자원을 할당 받기 위해 오랜 시간 대기할 수 있음
2️⃣당장 사용하지 않는 자원을 프로세스에게 묶어 두므로 자원 활용률 저하
3️⃣미래에 사용될 모든 자원을 미리 알아야 함
📍4. 비선점(Non-preemption) 조건 제거 방법
1️⃣어떤 자원을 소유한 프로세스가 새로 요청한 자원 획득에 실패하면 소유하고 있던 모든 자원들을 반납
✔️프로세스는 자신이 요청하였던 자원은 물론 점유하였던 자원들을 함께 요청하여 할당 받을 수 있을 때 수행됨
✔️단점
- 프로세스는 모든 자원을 할당 받기 위해 오랜 시간 대기할 수 있음
- 자원의 상태를 저장하고 복구하기 쉬운 자원에 적용할 수 있음
- 프로세스들의 강제적 중단이 자주 일어나 오버헤드가 큼
2️⃣어떤 프로세스가 자원을 요청했을 때, 그 자원을 소유하면서 대기 중인 프로세스로부터 강제적으로 빼앗아 할당함
✔️우선순위 기반 자원 할당 정책에 적용 가능함(교착상태 예방)
✔️상태를 저장하고 복구하기 쉬운 자원(프로세스)에 적용할 수 있음 (비선점이기 때문)
📍5. 환형 대기(Circular Wait) 조건 제거 방법
✔️모든 자원들의 할당 순서를 미리 설정하여 놓고, 프로세스의 자원 요청 시 정해진 순서에 따라 할당 받도록 강제함
- 두 자원 Ri, Rj가 있으면, 운영체제가 i < j인 할당 순서를 정했다고 하자
- 이때 한 프로세스가 Ri, Rj 두 개의 자원이 필요한 경우, Ri가 먼저 할당되어야 하며, 그 이후에 Rj가 할당될 수 있다는 것을 의미함
✔️장점
- OS 설계 시점에 문제를 해결했기 때문에 동적 부하가 적음 (커널의 자원 할당 정책)
✔️단점
1️⃣자원 사용의 효율성이 낮음
2️⃣프로세스의 오랜 대기를 야기할 수 있음
3️⃣사용될 자원을 미리 모두 알고 있어야 함
☑️환형 대기가 발생하는 자원 할당 사례와 그렇지 않는 사례
'운영체제' 카테고리의 다른 글
[운영체제] 7. 교착상태 - (4) 교착상태 발견 및 복구 (0) | 2025.05.01 |
---|---|
[운영체제] 7. 교착상태 - (3) 교착상태 회피 (0) | 2025.05.01 |
[운영체제] 7. 교착상태 - (1) 교착상태 개념 (0) | 2025.05.01 |
[운영체제] 4. 스레드 관리 - (5) 멀티스레딩에 관한 이슈 (0) | 2025.04.17 |
[운영체제] 4. 스레드 관리 - (4) 멀티코어와 멀티스레딩 (0) | 2025.04.17 |