공부기록
코타쿠
« 2024/11 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
관리 메뉴
공부기록
교착상태 회피 본문
CS/OS
교착상태 회피
코타쿠
2021. 5. 14. 18:01
- 교착상태 회피
- 회피 방법은 발생 조건 1~3은 허용
- 자원 할당시 교착상태가 발상 가능하지 않도록 고려
- 예방 방법에 비해 더 많은 병행성을 제공 (효율성이 높음)
- 교착상태 회피는 프로세스가 자원을 요청하고 그 자원이 사용가능 할 때 그대로 할당해 주지 않고, 이 할당이 교착상태를 발생 시킬 가능성이 있는지 조사
- 교착 상태 발생 가능성이 있다면 자원을 할당하지 않음
- 문제점 - 현재 자원의 가용 개수와 프로세스 자원 요구량을 미리 알고있어야 한다.
- 회피 기법
- 프로세스 시작거부
- 프로세스가 시작하려 할 때 요구하는 자원 할당이 교착상태 발생의 가능성이 있으면, 프로세스를 시작시키지 않는 방법
- 자원 할당 거부
- 수행중인 프로세스가 요구하는 추가적인 자원 할당이 교착상태 발생의 가능성이 있으면, 자원을 할당하지 않는 방법
- 프로세스 시작 거부
- 자원 R = (R1, R2, ..., Rn)
- 요구 C
C11 |
.... |
C1M |
... |
... |
... |
CN1 |
... |
CNM |
- row1부터 각 column에 대해서 R이 채울 수 있는 자원이면 R에서 채우고 다음 행으로 넘어간다.
- 다음 행으로 넘어갈 수 없다면 멈춘다.
- 모든 프로세스들이 요구한 자원의 개수가 전체 자원 개수보다 적으면 교착 상태가 발생하지 않는다.
- 교착 상태 회피를 위한 프로세스 시작 거부 방법은 다음 행으로 넘어 갈 수 있다면 새로운 프로세스의 시작을 허가하고, 그렇지 않다면 허가하지 않는 것이다.
- 집합의 모든 프로세스들이 시작될 수 있는지를 검사한다.
- 비효율적이다.
- 최악의 경우를 가정하여 계산하기 때문에 비효율 적이다.
- 자원 할당 거부
- 은행원 알고리즘
- 시스템의 상태를 안전한 상태 (safe state), 그렇지 않은 상태 (unsafe state)로 구분
- safe state
- V = R - A
- C - A 벡터에서 P2가 수행가능하다.
- P2의 A를 V에 더함
- 계속 반복해서 모든 프로세스를 수행할 수 있다면 safe
- 모든 프로세스가 자신의 자원요구량을 모두 만족하여 수행을 마칠 수 있는 경로가 존재한다.
- unsafe state
- C-A에서 현재의 V로 진행할 수 있는 경로가 없다.
- 교착상태 회피의 장점
- 교착상태 예방에 비해 자원 할당이 더 자유로움
- 시스템에서 자원 효율이 높음
- 교착상태 회피의 단점
- 각 프로세스들이 사용할 최대 자원 요구량을 미리 운영체제에게 알려줘야함
- 프로세스들은 서로 독립적이어야함
- 프로세스 간 수행 순서가 종속적인 경우가 없어야 한다.