티스토리 뷰
- 교착상태(deadlock)
- 2개 이상의 프로세스가 서로 상대방의 작업이 끝나기만을 기다리고 있는 상태
- 결과적으로 아무도 완료하지 못함
- 교착상태가 아닌 경우
- 프로세스1: 요구 --자원획득--> 사용 --> 해제
- 프로세스2: 요구(대기) --자원획득--> 사용 --> 해제
- 교착상태인 경우
- 프로세스1: 자원1요구 --자원1획득--> 사용 --> 자원2요구(대기)
- 프로세스2: 자원2요구 --자원2획득--> 사용 --> 자원1요구(대기)
- 교착상태의 필요조건
- 네가지조건이 동시에 만족될 경우 교착상태가 발생할 수 있음
- 상호배제 조건
- 프로세스 들이 자원에 대한 배타적인 통제권을 요구
- 적어도 하나 이상의 자원은 공동사용될 수 없음
- 즉, 필요로 하는 자원을 다른 프로세스가 점유하고 있으면 반드시 대기해야 함
- 점유대기조건
- 프로세스가 이미 다른 자원을 할당받아 배타적으로 점유하고 있는 상황에서 다른 프로세스가 점유하고 있는 자원이 해제되기를 기다리는 상황
- 비선점조건
- 프로세스에 할당된 자원은 그 프로세스가 사용을 마치고 스스로 반환하기 전에 제거되지 않음
- 다른 프로세스에 의해서는 해제되지 않음
- 환형대기조건
- 프로세스의 자원 점유 및 점유된 자원의 요구 관계가 환형을 이루며 대기
- 상호배제 조건
- 네가지조건이 동시에 만족될 경우 교착상태가 발생할 수 있음
- 자원할당 그래프 G = (V, E)
- 정점의 집합 V = P U R
- P = n개의 프로세스 pi
- R = m개의 자원 rj
- j: 자원의 유형, k: 단위자원(자원의 개수)
- 방향있는 간선의 집합 E = Q U S
- 프로세스 pi가 자원 rj를 요구함(요구간선)
- 자원 rj가 프로세스 pi에 할당됨(할당간선)
- 자원할당 그래프의 예
- 정점의 집합 V = P U R
- 프로세스 집합 P = {p1, p2, p3}
- 자원의 집합 R = {r1, r2, r3}
- 방향 있는 간선의 집합 E = Q U S
- 요구간선의 집합 Q = {(p1, r2)}
- 할당간선의 집합 S = {(r1, p1), (r2, p2), (r3, p3)}
- 교착상태와의 관계
- 상호배제 조건 - 할당간선
- 점유대기조건 - 할당간선 + 요구간선
- 비선점조건 - 요구간선
- 환형대기조건 - 사이클(cycle)
- 자원할당 그래프에 사이클이 없음 -> 교착상태 발생 X
- 자원할당 그래프에 사이클 존재 -> 교착상태 발생 O / X
- 사이클이 존재하지만 교착상태가 아닌 예
- 자원이 2개인 경우 상황에 따라 사이클이 존재하지 않을 수 있음
- 정점의 집합 V = P U R
- 정점의 집합 V = P U R
- 교착상태 처리
- 교착상태 방지
- 교착상태의 필요조건 중 하나라도 발생할 수 없도록 막음
- 상호배제 조건의 제거
- 공유할 수 있는 자원: 상호배제와 무관
- 공유할 수 없는 자원: 반드시 상호배제 해야 함
- 상호배제 조건을 제거하여 교착상태를 방지하는 것은 불가능
- 점유 대기 조건의 제거
- 프로세스가 자원을 요청할 때 그 프로세스는 어떠한 자원도 할당받지 않은 상태여야 함
- 방법1
- 프로세스가 수행을 시작하기 전에 필요한 자원을 한꺼번에 요구하여 할당받음
- 자원 이용률이 매우 낮아질 수 있음
- 방법2
- 자원을 부분적으로 요청하여 할당받을 수 있도록 하되 자원을 추가로 요청할 때에는 이전에 가지고 있던 자원을 반드시 모두 해제한 후 할당받음
- 기아상태가 발생할 수 있음
- 비선점 조건의 제거
- 방법1
- 자원을 점유하고 있는 프로세스가 즉시 사용할 수 없는 상황의 다른 자원을 요청하는 경우 점유하고 있던 자원을 해제
- 방법2
- 프로세스가 가용하지 않은 자원을 요청
- 그 자원이 할당된 프로세스가 다른 자원을 기다리며 대기중인지 조사
- 대기중이면 대기상태인 프로세스로부터 자원을 선점하여 요청한 프로세스에게 할당, 대기중이 아니라면 요청한 프로세스는 대기
- 상태를 쉽게 보관하고 복구할 수 있는 자원이 아니라면 적용이 불가능
- 방법1
- 환형 대기 조건의 제거
- 모든 자원의 유형에 일련번호를 지정하기 위해 함수 f 정의
- 방법1
- 프로세스는 자원을 일련번호 기준으로 항상 오름차순으로 요청
즉, 자원 ri를 점유하고 있는 경우 반드시 f(ri) < f(rj)인 경우만 rj를 요청할 수 있음
- 프로세스는 자원을 일련번호 기준으로 항상 오름차순으로 요청
- 방법2
- 프로세스가 자원 rj를 요구할 때마다 f(rj) <= f(rj)인 자원 rj는 모두 해제
- 교착상태 회피
- 프로세스에 필요한 자원의 최대량에 대한 정보를 활용하여 교착상태가 발생하지 않도록 함
- 교착상태 탐지 및 복구
- 교착상태가 발생하면 이에 따른 적절한 조치를 취하여 정상상태로 복구
- 교착상태 방지
'운영체제' 카테고리의 다른 글
[운영체제] 메모리 관리 (0) | 2021.05.01 |
---|---|
[운영체제] 교착상태 (0) | 2021.04.15 |
[운영체제] 병행프로세스 (2) (0) | 2021.04.02 |
[운영체제] 병행프로세스 (0) | 2021.03.30 |
[운영체제] 스케줄링 알고리즘 (0) | 2021.03.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 인접행렬
- 알고리즘
- 병행프로세스
- react
- client side rendering
- 이진탐색
- C
- stackframe
- 소프트웨어
- 재귀함수
- server side rendering
- BFS
- 구조체
- 입출력장치
- 자료구조
- 인접리스트
- 최단경로
- 스텍
- 세마포어
- 퀵정렬
- 교착상태
- 배열
- 운영체제
- Stack
- javascript
- 동적프로그래밍
- Java
- dfs
- C++
- 클래스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함