38
Operating System Concepts Myongji Univ. 7.1 7장 장장장장 (Deadlocks) 시시시 시시 시시시시시 시시 시시시시 시시 시시 시시시시 시시 시시시시 시시 시시시시 시시 시시시시시시시시 시시

7 장 교착상태( Deadlocks)

Embed Size (px)

DESCRIPTION

7 장 교착상태( Deadlocks). 시스템 모델 교착상태의 특징 교착상태 처리 방법 교착상태 예방 교착상태 회피 교착상태 탐지 교착상태로부터의 회복. 교착상태란 ?. 여러 프로세스들이 각자 자원을 점유하고 있으면서 다른 프로세스가 점유하고 있는 자원을 요청하면서 무한하게 대기하는 상태 예 1: 시스템에 두개의 테이프 드라이브가 있을때, 프로세스 P 1 과 P 2 가 하나씩 테이프 드라이브를 사용하면서 상대방 프로세스의 테이프 드라이브를 필요로 함 예 2: - PowerPoint PPT Presentation

Citation preview

Page 1: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.1

7 장 교착상태 (Deadlocks)

• 시스템 모델

• 교착상태의 특징

• 교착상태 처리 방법

• 교착상태 예방

• 교착상태 회피

• 교착상태 탐지

• 교착상태로부터의 회복

Page 2: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.2

교착상태란 ?

• 여러 프로세스들이 각자 자원을 점유하고 있으면서 다른 프로세스가 점유하고 있는 자원을 요청하면서 무한하게 대기하는 상태

• 예 1: – 시스템에 두개의 테이프 드라이브가 있을때 , 프로세스 P1 과

P2 가 하나씩 테이프 드라이브를 사용하면서 상대방 프로세스의 테이프 드라이브를 필요로 함

• 예 2:– 두개의 세마포어 A 와 B, ( 초기값은 1)

P0 P1

wait (A); wait(B);

wait (B); wait(A);

Page 3: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.3

교착상태란 ?

• 두 자동차가 다리의 한쪽을 차지하고 있으면서 서로 다른 한쪽을 차지하려고 함 .

• 상대방 자동차가 뒤로 가주기를 무한히 기다림 .

Page 4: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.4

시스템 모델

• 시스템의 자원들 : CPU, 기억장치공간 , 파일 , 입출력장치 등

• 각 자원 유형 Ri 는 여러개의 사례 (instances) 를 가질 수 있다 .– 시스템에 두개의 CPU 가 있다면 , CPU 자원 유형은 두개의

사례를 가짐

• 프로세스가 자원을 사용하려면 다음 순서로 수행함– 요청 (request)

요청이 즉시 허용되지 않는 경우 , 자원을 얻을때까지 대기함

– 사용 (use)

– 해제 (release)

Page 5: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.5

교착상태의 특징

• 상호배제 (Mutual exclusion): 한번에 오직 한 프로세스만이 자원을 사용할 수 있다 .

• 점유와 대기 (Hold and wait): 프로세스가 적어도 하나의 자원을 점유하면서 다른 프로세스가 점유하고 있는 자원을 추가로 얻기위해 대기한다 .

• 비선점 (No preemption): 점유된 자원은 강제로 해제될 수 없고, 점유하고 있는 프로세스가 작업을 마치고 자원을 자발적으로 해제한다 .

• 순환대기 (Circular wait): 대기하고 있는 프로세스 집합 {P0, P1, …, Pn} 에서 P0 은 P1이 점유한 자원을 대기하고 , P1은 P2가 점유한 자원을 대기하고 , Pn–1 은 계속해 Pn 을 대기하며 , Pn 은 P0이 점유한 자원을 대기한다 .

교착상태는 다음 네 조건이 동시에 만족될때 발생한다 .

Page 6: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.6

자원 할당 그래프

• 자원 할당 그래프 : 프로세스와 자원간의 관계를 나타내는 그래프

• 정점의 두 형태– 프로세스들을 나타내는 정점 P = {P1, P2, …, Pn}– 자원들을 나타내는 정점 R = {R1, R2, …, Rm}

• 간선의 두 형태– 요청선 (request edge) : 프로세스 정점에서 자원 정점으로의 연결선

Pi Rj

– 할당선 (assignment edge) : 자원 정점에서 프로세스 정점으로의 연결선 Rj Pi

그래프란 , 정점 (vertex) 들과 정점을 연결하는 간선 (edge) 들로 이루어진 것 .

Page 7: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.7

자원 할당 그래프 (Cont.)

• 프로세스 : 원으로 표현

• 자원 : 사각형으로 표현하며 , 사례의 개수를 점으로 나타냄

• Pi 가 자원 형태 Rj 의 한 자원을 요청함

• Pi 가 자원 형태 Rj 의 한 자원을 점유하고 있음Pi

Pi

Rj

Rj

Page 8: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.8

자원 할당 그래프의 예

Page 9: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.9

교착상태가 있는 자원 할당 그래프의 예

주기 ( 싸이클 ) 가 존재 -> 교착상태

두 개의 주기가 존재함

P1 -> R1 -> P2 -> R3 -> P3 -> R2 -> P1

P2 -> R3 -> P3 -> R2 -> P2

Page 10: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.10

주기는 있지만 교착상태가 아닌 자원 할당 그래프

P1 -> R1 -> P3 -> R2 -> P1

그러나 , P4 가 R2 를 해제하면 ,

P3 가 R2 를 사용할 수 있다 .

따라서 , 교착상태가 아니다 .

Page 11: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.11

관찰

• 그래프에 주기가 없으면 교착상태가 없다

• 그래프에 주기가 있으면 – 자원 유형에 하나의 사례만 있으면 , 교착상태– 자원 유형에 여러 사례가 있으면 , 교착상태 가능성

Page 12: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.12

교착상태 처리 방법

• 세가지 방법

1) 교착상태가 발생하지 않도록 보장 : 예방 , 회피

2) 교착상태를 허용하고 , 발생을 탐지한 후 , 복구

3) 문제를 무시하고 교착상태가 발생하지 않는다고 가정 (대부분의 운영체제에서 사용하는 방법 ) 대부분의 시스템은 교착상태가 잘 발생하지 않으며 ,

교착상태 예방 , 회피 , 탐지 및 복구 방법을 사용하는 것은 비용이 많이든다 .

Page 13: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.13

교착상태 예방

• 상호배제 – 공유가능한 자원들은 배타적인 접근이 아니므로 교착상태가 발생하지 않는다 . 예 ) 읽기 전용의 파일

• 점유와 대기 예방 방법– 프로세스가 실행되기 전에 사용할 모든 자원을 함께 요청– 프로세스가 자원을 전혀 갖고있지 않을때만 자원을 요청– 단점

자원의 낮은 사용률 : 자원을 실제로 사용하지 않는 동안에도 자원을 점유하고 있어야 함

기아 상태 가능성

교착상태 발생 네가지 조건 중에서 하나라도 성립하지 않으면 됨

Page 14: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.14

교착상태 예방 (Cont.)

• 비선점 예방 방법– 어떤 자원을 가진 프로세스가 추가의 자원을 요청하여

대기하게 되면 , 가지고 있던 자원을 해제하고 대기함– 대기 중인 프로세스는 이전의 자원들과 새 자원을 모두

갖게되면 재시작함

• 순환대기 예방 방법– 모든 자원 유형에 전체 순서를 부여하고 , 프로세스는

오름차순으로 자원을 요청

• 교착상태 예방법들은 자원의 사용률을 저하시키는 문제점이 있다 .

Page 15: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.15

교착상태 회피

• 각 프로세스는 자원 유형마다 필요한 최대 개수를 선언하고 , 시스템은 이 정보를 이용해서 교착상태가 되지 않도록 하는 방법

• 교착상태 회피 알고리즘은 자원 - 할당 상태를 감시하여 순환대기 조건이 발생하지 않도록 한다 .

• 자원 - 할당 상태 : 자원의 가용 개수와 할당 개수 , 프로세스들의 최대 요구 개수로 정의됨

Page 16: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.16

안정 상태 (Safe State)

• 어떤 프로세스가 자원을 요청하면 , 시스템은 이 자원을 할당한 후의 상태가 안정 상태인지 검사함 .

• 안정 상태 : 특정한 순서대로 각 프로세스에 자원을 할당할 수 있고, 교착상태를 방지할 수 있는 경우

• 프로세스들의 순서 <P1, P2, …, Pn> 는 , 모든 Pi, 에 대해서 Pi 가 요청하는 자원들이 현재 사용가능한 자원들과 j < i 인 Pj 가 점유하는 자원으로서 만족된다면 안정상태이다 .

– 이때 Pi 가 필요한 자원들을 즉시 사용할 수 없다면 , Pi 는 Pj 가 끝날때까지 대기한다 .

– Pj 가 끝나면 , Pi 는 필요한 자원을 획득하고 , 작업을 수행한 후 모든 점유하는 자원을 해제하고 종료한다 .

– Pi 가 종료하면 , Pi+1 이 필요한 자원을 확보하고 계속 처리를 진행한다 .

Page 17: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.17

안정 상태의 예

• 3 개의 프로세스 : P0, P1, P2

• 12 개의 자기 테이프

• 시간 t0에서의 시스템 상태

• 이때 , 시스템은 안정 상태에 있다 .– 프로세스 P1이 먼저 수행되면 , 테이프 장치를 할당받아 작업을 마칠

수 있고 , 다음에 프로세스 P0이 수행되어 테이프 장치를 할당받을 수 있으며 , 다음에 프로세스 P2가 수행되면 모두 완료되기 때문이다.

– 즉 , <P1, P0, P2> 순서는 안정 상태를 충족한다 .

최대 수요 현재 수요

P0 10 5

P1 4 2

P2 9 2

현재 총 수요가 9이므로 남아있는

테이프는 3 개이다

Page 18: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.18

안정 , 불안정 , 교착 상태

Page 19: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.19

관찰

• 시스템이 안정상태라면 교착상태가 없다

• 시스템이 불안정상태라면 교착상태 가능성

• 교착상태는 불안정 상태이다 .

• 그러나 , 불안정 상태라고 해서 모두 교착상태는 아니다 .

• 교착상태 회피 시스템이 불안정상태에 들어가지 않도록 함

Page 20: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.20

자원 할당 그래프 알고리즘

• 자원 유형마다 하나의 자원을 가진 시스템에서 사용한다 .

• 요청가능 선 (Claim edge) Pi Rj : 프로세스 Pj 가 미래에 자원 Rj

를 요청할 것을 의미함 . 점선으로 표현 .

• 요청가능 선은 프로세스가 자원을 요청하면 요청선으로 변환됨

• 요청선은 자원이 할당되면 할당선으로 변환됨

• 프로세스가 자원을 해제하면 할당선은 요청가능선으로 변환됨

• 프로세스가 실행되기 전에 , 프로세스의 모든 요청가능 선들을 자원 할당 그래프에 포함시킴 .

• 그래프에 주기가 생기는 지 검사함– 주기가 없다면 시스템은 안정상태– 주기가 생기면 불안정상태

Page 21: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.21

요청선할당선

요청가능선 요청가능선

Page 22: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.22

불안정 상태

Page 23: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.23

은행가 알고리즘 (Banker’s Algorithm)

• 자원 유형에 다수개의 자원을 가진 시스템에서 사용

• 각 프로세스는 실행되기 전에 필요로 하는 모든 자원 형태들의 최대수를 선언한다 .

• 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는 지를 검사함 .

– 안정 상태에 있으면 자원을 할당하고– 그렇지 않으면 다른 프로세스들이 자원을 해제할 때까지

대기함

Page 24: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.24

은행가 알고리즘의 자료 구조

• Available: 길이가 m 인 벡터 .

– available [j] = k : 자원 유형 Rj 에 k 개의 자원 사례가 사용가능함

• Max: n x m 행렬 . – Max [i,j] = k : 프로세스 Pi 는 자원 유형 Rj 에 최대 k 개의 자원을

요청할 수 있음 .

• Allocation: n x m 행렬 . – Allocation[i,j] = k : 프로세스 Pi 는 현재 자원 유형 Rj 의 자원을 k

개 할당받았음 .

• Need: n x m 행렬 . – Need[i,j] = k : 프로세스 Pi 작업을 끝내기 위해서 자원 유형 Rj 의

자원을 k 개 필요로 함 .– Need [i,j] = Max[i,j] – Allocation [i,j].

n = 프로세스의 개수 , m = 자원 유형의 개수

Page 25: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.25

안정 알고리즘 (Safety Algorithm)

시스템이 안정상태인지 판단하는 알고리즘

1.Work 와 Finish 를 길이가 각각 m 과 n 인 벡터라고 하자 . 초기값은 ,

Work := Available

Finish [i] = false, i = 1,2, …, n.

2. 다음과 같이 되는 i 를 찾는다 .

(a) Finish [i] = false

(b) Needi Work

이런 i 가 없다면 , 단계 4 로 간다 .

3. Work := Work + Allocationi

Finish[i] := true단계 2 로 간다 .

4. 모든 i 에 대해서 , Finish [i] = true, 시스템은 안정 상태이다 .

Page 26: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.26

프로세스 Pi 의 자원 요청 알고리즘

Requesti = 프로세스 Pi 의 요청벡터 , 즉 , Requesti [j] = k 이면 , 프로세스 Pi 가 자원 유형 Rj 의 자원 k 개를 요청

1. Requesti Needi 이면 단계 2 로 간다 . 그렇지 않으면 , 오류 .

2. Requesti Available 이면 단계 3 으로 간다 . 그렇지 않으면 Pi 는 대기한다 .

3. 시스템은 상태를 다음과 같이 수정한다 :

Available := Available - Requesti;

Allocationi := Allocationi + Requesti;

Needi := Needi – Requesti;;

• 결과가 안정 상태이면 , 프로세스 Pi 에게 자원을 할당 .

• 불안정 상태이면 , Pi 는 대기하고 , 자원할당 상태는 이전으로 복원된다 .

Page 27: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.27

은행가 알고리즘의 예제

• 5 개의 프로세스 : P0 ~ P4

• 3 개의 자원 유형 : A (10 instances), B (5 instances), C (7 instances).

• 시간 T0:

Allocation Max Available

A B C A B C A B C

P0 0 1 0 7 5 3 3 3 2

P1 2 0 0 3 2 2

P2 3 0 2 9 0 2

P3 2 1 1 2 2 2

P4 0 0 2 4 3 3

Page 28: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.28

예제 (Cont.)

• 행렬 Need 의 내용 : Max – Allocation

Need

A B C

P0 7 4 3

P1 1 2 2

P2 6 0 0

P3 0 1 1

P4 4 3 1

• 이때 이 시스템은 안정상태에 있다 . – < P1, P3, P4, P2, P0> 순서가 안정조건을 충족함

Page 29: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.29

예제 : P1 이 (1,0,2) 를 요청

• Request Available 인지 검사 ( 즉 , (1,0,2) (3,3,2) true 인지 검사 ).

• 조건이 만족되어 다음의 새로운 상태로 가게 됨

Allocation Need Available

A B C A B C A B C

P0 0 1 0 7 4 3 2 3 0

P1 3 0 2 0 2 0

P2 3 0 1 6 0 0

P3 2 1 1 0 1 1

P4 0 0 2 4 3 1

• 이 상태가 안정상태인지 검사 : <P1, P3, P4, P0, P2> 가 안정조건을 충족함

• P4 가 (3,3,0) 을 요청하면 : 자원 부족이므로 허용 불가

• P0 이 (0,2,0) 을 요청하면 : 불안정 상태이므로 허용 불가

Page 30: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.30

교착상태 탐지

• 교착상태가 일어나도록 허용함

• 교착상태가 발생했는 지를 탐지하는 알고리즘이 수행

• 교착상태로부터 회복하는 알고리즘이 수행

Page 31: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.31

각 자원 형태가 하나의 자원을 가진 경우

• 대기 그래프 (wait-for graph)

– 자원 할당 그래프의 변형을 사용함 ( 자원 형태의 노드를 제거 )– 대기 그래프의 노드는 프로세스를 표현함– Pi 가 Pj 의 자원을 대기하는 상태 : Pi Pj

• 탐지 알고리즘은 주기적으로 수행하면서 대기 그래프에 주기가 생기는지 검사함 .

– 그래프의 노드가 n 개 이면 , n2 의 연산이 필요함

Page 32: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.32

자원 할당 그래프와 대기 그래프

자원 할당 그래프 대응하는 대기 그래프

Page 33: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.33

각 자원 형태가 여러 자원을 가진 경우

• 자원 형태의 개수 : m, 프로세스의 개수 : n

• Available: 각 자원 형태마다 사용가능한 자원의 수를 표시하는 길이가 m 인 벡터

• Allocation: 각 프로세스에 현재 할당된 각 형태들의 자원의 수를 표시하는 n x m 형렬

• Request: 각 프로세스의 현재 요청을 표시하는 n x m 행렬 . 만약 Request [I, j] = k 라면 , 프로세스 Pi 는 자원 형태 Rj 의 자원을 k 개 더 요청

Page 34: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.34

탐지 알고리즘

1.Work 와 Finish 는 길이가 각각 m 과 n 인 벡터이고 초기값은 ,(a) Work := Available

(b) For i = 1,2, …, n, if Allocationi 0, then Finish[i] := false; otherwise, Finish[i] := true.

2. 다음과 같은 색인 i 를 찾는다 :

(a) Finish[i] = false

(b) Requesti Work

만약 이런 i 가 없다면 , 단계 4 로 간다 .

Page 35: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.35

탐지 알고리즘 (Cont.)

3.Work := Work + Allocationi

Finish[i] := true단계 2 로 간다 .

4. 어떤 i(1 i n) 에서 Finish[i] = false 가 되면 시스템은 교착상태가 됨 . 그리고 , Finish[i] = false 이면 , Pi 는 교착상태에 있다 .

이 알고리즘은 교착상태에 있는 지를 탐지하기 위해 m x n2 의 연산을 요구한다 .

Page 36: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.36

탐지 알고리즘의 예제

• 다섯개의 프로세스 (P0 ~ P4) 와 세개의 자원 형태 A (7 자원 ), B (2 자원 ), C (6 자원 ).

• 시간 T0:

Allocation Request Available

A B C A B C A B C

P0 0 1 0 0 0 0 0 0 0

P1 2 0 0 2 0 2

P2 3 0 3 0 0 0

P3 2 1 1 1 0 0

P4 0 0 2 0 0 2

• <P0, P2, P3, P1, P4> 순서는 모든 i 에 대해서 Finish[i] = true 로 됨

Page 37: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.37

예제 (Cont.)

• P2 가 자원 형태 C 의 자원을 한 개 더 요청하면 :

Request

A B C

P0 0 0 0

P1 2 0 2

P2 0 0 1

P3 1 0 0

P4 0 0 2

• 시스템의 상태는 ?– 교착상태가 존재

Page 38: 7 장  교착상태( Deadlocks)

Operating System Concepts Myongji Univ.7.38

교착상태로부터 회복

• 오퍼레이터가 수동적으로 처리

• 시스템이 자동적으로 처리

• 프로세스 중지– 교착상태에 있는 모든 프로세스를 중지시킴– 교착상태가 해결될 때까지 프로세스를 하나씩 중지

• 자원 선점– 프로세스로부터 자원을 선점해 이들을 교착상태가 해결될

때까지 다른 프로세스에게 준다