본문 바로가기
운영체제

[운영체제] 7. 교착상태 - (3) 교착상태 회피

by NoDapKeepGoing 2025. 5. 1.

✔️ 운영체제는 교착상태 발생 3가지 필요조건을 지키도록 강제함

 

📍1. 교착상태 회피 핵심 아이디어

✔️운영체제는 프로세스의 현재 자원 할당 요청을 승인하면, 잠재적인(가능성) 교착상태가 유발될지 또는 아닐지를 동적으로 조사함
✔️운영체제는 수행 중인 모든 프로세스의 미래 자원 요청 정보를 미리 알아야 함

 

 

📍2. 교착상태 회피를 위한 2가지 접근법

1️⃣프로세스 시작 거부(process initiation denial)

2️⃣프로세스 자원 할당 거부(process resource allocation denial)

 

 

📍3. 프로세스 시작 거부 방법

✔️프로세스가 시작하려 할 때 그 프로세스가 수행 중 필요한 모든 자원들에 대해 교착상태 발생의 가능성이 있으면, 프로세스를 시작시키지 않음

✔️모든 프로세스들이 요구하는 각 자원들의 개수가 전체 각 자원들의 개수보다 적으면 교착상태가 발생하지 않음

✔️프로세스가 필요한 자원의 수 > 먼저 커널이 갖고 있던 자원

 

 

📍4. 프로세스 시작 거부 방법

☑️시스템 상태

 

 

☑️다음 조건이 만족될 때만 새로운 프로세스 Pn+1을 시작시킴

이 정책은 최악의 경우, 모든 프로세스들이 동시에 최대 자원을 요구하여 사용함을 가정하고 있음

➡️효율적이지는 않다.

 

 

📍5. 자원 할당 거부 방법: Banker’s 알고리즘 : 수행 순서 고려x

✔️프로세스가 어떤 자원을 요구했을 때, 이 자원 할당이 교착상태 발생의 가능성이 있으면 자원을 할당하지 않음

✔️안전한 상태(safe state)
- 운영체제가 어떤 순서로든 프로세스들이 요청하는 모든 자원을 할당하여 모든 프로세스들을 완료할 수 있는 수행 순서가 존재함

✔️불안전한 상태(unsafe state)
- 운영체제가 어떤 순서로든 프로세스들이 요청하는 모든 자원을 할당하여 모든 프로세스를 완료할 수 있는 수행 순서가 존재하지 않음

 

✔️시스템 상태
- 프로세스 시작 거부와 동일

 

✔️자원 할당 요청을 받을 때마다 자원을 할당해 주었을 때 교착상태가 발생하지 않을 만큼 안전한 상태인지 판단하여 안전한 상태일 때만 자원 할당

✔️각 프로세스가 필요한 자원의 개수, 현재 각 프로세스가 할당 받은 자원의 개수, 그리고 시스템 내 할당 가능한 자원의 개수를 토대로 현재 요청된 자원을 할당해도 안전한지 동적으로 판단함

- 가용 자원의 개수가 현재 프로세스가 요구하고 있는 자원의 개수(전체 요구 개수 – 할당개수)보다 크면 그 프로세스는 수행을 완료할 수 있음

 

📍6. 안전한 상태 사례

☑️4개의 프로세스와 3 종류의 자원을 가진 시스템 상태

☑️P2(1, 0, 1)의 자원 요청을 승인하면 이 시스템 안전한 상태인가?

프로세스 i의 수행 완료 가능성 : Cij - Aij ≤ Vj, 모든 j에 대해

 

☑️P2의 (1, 0, 1) 요청을 승인하면, 초기 상태에서

✔️현재 할당 가능한 자원으로 수행 완료할 수 있는 프로세스는 P2임

- P2는 C – A <= V 조건을 만족하여 이 자원들을 이용하여 수행 완료함

✔️현재 할당 가능한 자원으로 다음 수행 완료할 수 있는 프로세스를 찾음

P1 ➡️ P3 ➡️ P4

✔️모든 프로세스의 수행 경로가 존재하기 때문에 안전한 상태임

➡️P2(1,0, 1) 자원 요청을 승인

 

 

📍7. 불안전한 상태 사례

☑️ P1(1, 0, 1) 자원 요청을 승인하면 이 시스템의 상태는 안전한 상태인가?

P1의 자원 할당 요청은 승인되지 않음 ➡️ 불안전한 상태임

 

 

☑️자원 할당 거부 예

 

 

📍8. 교착상태 회피의 장단점

8-1. 장점

✔️프로세스를 선점하고 롤백(rollback)할 필요가 없음
✔️교착상태 예방 방법보다 더 많은 병행성을 허용함

 

8-2. 단점

✔️각 프로세스는 자신의 최대 자원 요구량을 미리 명시해야 함
✔️ 프로세스들 간에 수행 순서 종속 관계(동기화)가 없어야 함
✔️ 할당할 자원의 개수가 고정되어야 함
✔️ 오랜 기간 프로세스 수행이 지연될 수 있음