공부기록
코타쿠
« 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. 17:18
- 교착 상태 예방
- 교착 상태가 발생하기 위한 4가지 필요충분 조건 중 하나를 설계단계에서 배제
- 간접 예방 vs 직접 예방
- 4가지 조건에 대한 해결 방안
- 상호배제
- 상호배제는 공유 자원의 일관성을 유지하기 위해 반드시 필요
- 점유 대기
- 프로세스가 자신이 사용할 모든 자원을 한번에 요청
- 모든 자원을 할당 받을 수 있다면 계속하고 그렇지 않으면 어떠한 자원도 할당 받지 않고 대기
- 비효율적
- 모든 자원을 할당받기 위해 오랜 기간 대기 하게 됨
- 한꺼번에 할당 받은 자원중 일부는 실제 수행이 끝날 때 쯤 사용될 수 있음. 실제로 이용되지 않으면서 점유될 가능성이 있다.
- 프로세스가 미래에 사용될 모든 자원 미리 예측 불가능
- 비선점
- 방법 1 : 자원을 점유한 프로세스가 다른 자원을 요청했을 때 할당 받을 수 없다면, 자신이 점유한 자원을 반납 후 프로세스는 원래 자원 + 새로 원하는 자원을 함께 요청
- 방법 2 : 한 프로세스에서 다른 프로세스가 점유한 자원을 원하면, 운영체제는 다른 프로세스가 점유한 자원을 강제적으로 반납시키고 그것을 원하는 프로세스에게 할당
- 프로세스들이 서로 다른 우선순위를 가지고 있을 때만 교착상태를 예방할 수 있다.
- 자원의 상태를 저장하고 복구하기 쉬운 자원에만 사용할 수 있다. ex) CPU
- 환형대기
- 자원들의 할당 순서를 정해 환형 대기조건 제거 가능
- 이 말은 자원 1>2>3>4 의 순서가 있어 자원 4를 이용하기 위해서는 1 > 2 > 3을 거쳐 와야 한다는 것
- 자원 사용의 비효율성과 프로세스의 오랜 대기를 야기
- 프로세스 A가 현재 3을 앞으로 오랜 기간 사용하고, B가 자원 4를 사용하려 할 때, 프로세스 B는 프로세스 A가 자원 3을 다 사용할 때 까지 기다려야 한다.