교착 상태

Post on 29-Jun-2015

647 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

교착 상태최윤종

시스템 모델 교착 상태의 특징 교착 상태 처리 방법 교착 상태 예방 교착 상태 회피 교착 상태 탐지 교착 상태로부터 회복

목차

시스템 모델

장치 1 == 인스턴스 1 프로세스는 자원 수보다 많은 자원 요청 불가 커널 함수 호출

◦ request/release, open/close, max/free 등◦ 자원에 대한 wait/signal 연산 지원

자원 사용 시나리오◦ 요청 : 사용 가능할 때까지 프로세스 대기◦ 사용 : 사용합니다◦ 방출 : 자원 사용 후 방출합니다

시스템 모델

자원을 할당할 때마다 자원 상태 조사◦ 자원의 사용 여부 (idle/use)◦ 프로세스의 사용 요청 여부◦ 자원을 사용중인 프로세스

시스템 모델

시스템 모델

hdd0 dev

monitor dev

keyboard dev

hdd1 dev

instance

instance

instance

instance

process 1

process 2

process 3

kernel

hdd0 input

monitor output

hdd0 input

request

request

request

교착 상태의 특징

한 프로세스 집한 내의 모든 프로세스가 그 집합 내의 다른 프로세스에 의해서만 발생될 수 있는 사건을 기다림

물리적인 자원 / 논리적인 자원에 대해서 정의◦ 물리 : 각종 장치들◦ 논리 : 커널 객체

교착 상태의 정의

교착 상태 ( 전체 시점 )◦ 프로세스 집합 내에서 다른 프로세스를 대기

기아 ( 프로세스 시점 )◦ 교착 상태의 부산물◦ 프로세스가 자원을 무한정 대기◦ 무한 봉쇄라고도 합니다 .

교착 상태와 기아

상호 배제 (mutual exclusion)◦ 뮤텍스와 이름이 같습니다◦ 최소한 하나의 자원이 비 ( 非 ) 공유 모드로 점유

점유하며 대기 (hold and wait)◦ 프로세스는 최소한 하나의 자원을 점유한 채 , 다른

프로세스가 점유한 자원을 얻기 위해 대기 비선점 (no preemption)

◦ 다른 프로세스가 자원을 해제할 수 없습니다 순환 대기 (circular wait)

◦ 대기하고 있는 프로세스의 집합 내에서 각각의 프로세스가 자원을 점유하고 있고 다른 프로세스의 자원이 필요

교착 상태의 필요 조건

뮤텍스 사용시 교착 상태

R1 의 인스턴스는 P2 가 소유 R3 의 인스턴스는 P3 이 소유 R2 의 인스턴스는 P1, P2 가 소유 P1 이 R1 을 요청 P2 가 R3 을 요청

자원 할당 그래프

P1 P2 P3

R1 R3

R2 R4

R1 의 인스턴스는 P2 가 소유 R3 의 인스턴스는 P3 이 소유 R2 의 인스턴스는 P1, P2 가 소유 P1 이 R1 을 요청 P2 가 R3 을 요청 P3 이 R2 를 요청

교착 상태의 자원 할당 그래프

P1 P2 P3

R1 R3

R2 R4

R1 의 인스턴스는 P2, P3 이 소유 R2 의 인스턴스는 P1, P4 가 소유 P1 이 R1 을 요청 P3 이 R2 을 요청

사이클이 있지만 교착상태는 아닌 자원 할당 그래프

P1

P2

P3

P4

R1

R2

교착 상태 처리 방법

시스템이 결코 교착 상태가 되지 않도록 보장하기 위하여 교착 상태를 예방하거나 회피하는 프로토콜 사용하는 방법

시스템이 교착 상태가 되도록 허용한 다음에 회복시키는 방법

문제를 무시하고 , 교착 상태가 시스템에서 결코 발생하지 않는 척 하는 방법◦ 대부분의 운영체제가 사용합니다◦ 프로그래밍은 우리들의 몫

교착 상태 처리 방법의 예

교착 상태 예방

상호 배제 (mutual exclusion)◦ 뮤텍스와 이름이 같습니다◦ 최소한 하나의 자원이 비 ( 非 ) 공유 모드로 점유

점유하며 대기 (hold and wait)◦ 프로세스는 최소한 하나의 자원을 점유한 채 , 다른

프로세스가 점유한 자원을 얻기 위해 대기 비선점 (no preemption)

◦ 다른 프로세스가 자원을 해제할 수 없습니다 순환 대기 (circular wait)

◦ 대기하고 있는 프로세스의 집합 내에서 각각의 프로세스가 자원을 점유하고 있고 다른 프로세스의 자원이 필요

교착 상태의 필요 조건교착 상태를 예방하려면 저 상황만 아니게 만들면 됩니다

상호 배제는 도저히 막을 수가 없습니다 .◦ 출력 장치 등

read-only lock◦ 읽기 전용 상태에서는 어떤 프로세스든 읽기 가능

상호 배제

요청할 자원이 있는 프로세스는 모든 자원 방출◦ 자원이 없을 때에만 자원 요청 가능하게 유도◦ 프로세스 수행 중 자원 요청

프로세스의 시작과 동시에 자원을 요청하지 않습니다◦ 두 방법의 문제점

이용 빈도가 낮은 자원을 불필요하게 점유 이용 빈도가 높은 자원에 대해 기아 상태 야기

점유하며 대기

다른 프로세스가 소유중인 자원을 요청하는 경우 해당 자원을 커널이 선점

프로세스는 선점된 자원을 다시 소유할 때까지 대기 주로 레지스터 / 메모리에 적용됩니다 .

◦ 프린터 등에 적용할 수 없습니다 .

비선점

자원에 순서 부여 프로세스는 순서대로만 자원을 점유

◦ 저장 장치 키보드 모니터 순서 등 역시 구현은 우리들의 몫

순환 대기

교착 상태 회피

교착 상태 예방은 장치 /CPU 효율에 영향 교착 상태 회피

◦ 프로세스가 커널에 자원 요청 방법 , 추가 정보 제공 프로세스의 자원 요청 / 해제 순서 등

교착 상태 회피

시스템이 어떤 순서로든 프로세스들이 요청하는 자원을 차례대로 모두 할당해 줄 수 있는 상태

프로세스 순서 (process sequence)◦ 다른 프로세스가 소유중인 자원을 요청하는 순서

프로세스 순서에서 안전 순서 (safe sequence) 를 찾을 수 있는 상태

안전 상태

처음에는 무조건 안전 상태 많은 자원 중 하나를 할당 그냥 안전 상태 안전 상태에서 불안전 상태로 전이할 수 있습니다 . 불안전 상태 ∋ 교착 상태

안전 상태 , 불안전 상태 , 교착 상태

불안전 상태

안전 상태

교착 상태

예약 간선◦ P1, P2 가 차후 R2 를 요청

사이클 탐지 알고리즘◦ R2 를 P2 에게 먼저 할당하지 않음◦ ( 프로세스 수 )² 만큼의 연산이 필요합니다◦ 같은 종류의 자원이 여러 개 있으면 적용 불가

O(n²)

자원 할당 그래프 알고리즘

R2

P1 P2

R1

R2

P1 P2

R1

자원 할당 그래프 알고리즘에 비해 효율성이 다소 떨어집니다 .

O(m*n²) 자료 구조 소개

◦ 가용 자원 (available) 벡터 n 번 자원의 가용 개수◦ 최대 자원 벡터 (max) m 번 프로세스가 가질 수 있는 자원

n 번의 최대 개수◦ 할당 벡터 (allocate) m 번 프로세스의 n 번 자원의 사용

수◦ 요구 벡터 (need) m 번 프로세스가 향후 요청할 수 있는 n

번 자원의 개수

은행원 알고리즘

1. work 와 finish 는 크기가 m 과 n 인 벡터이다 . work = available 로 초기값을 준다 . finish[i] = false 를 초기값으로 준다 .2. if(finish[i] == false && need[i] <= work) {

work = work + allocation[i]finish[i] = true

} else모든 i 에 대해finish[i] == true 이면 안전 상태이다 .

은행원 알고리즘 – 안전성 알고리즘

request[i] 는 i 번 프로세스의 요청 벡터 p[i] 가 자원을 요청하는 경우if(request[i] <= need[i]) {

if(request[i] <= available) {결과를 need 에 반영해서안전성 알고리즘 수행

} elsewait()

} else {초과 요청에 따른 오류

은행원 알고리즘 – 자원 요청 알고리즘

교착 상태 탐지

교착 상태인지 검사하는 알고리즘 지원 여부 교착 상태로 회복하는 알고리즘 지원 여부 알고리즘을 수행하는 데에 드는 비용 , 교착 상태에서

회복하면서 드는 손실에 대한 추가 비용 발생

교착 상태 탐지 요구 사항

자원 할당 그래프에 대응되는 대기 그래프 작성 대기 그래프에 사이클이 있는지 탐지하는 알고리즘

호출 O(n²)

각 자원이 한 개씩 있는 경우

P1 P2

R2

R1

P3

P4

R3

R4

R5

P5

P1 P2 P3

P4

P5

은행원 알고리즘을 대기 그래프처럼 적용하면 됩니다 . O(m*n²)

각 자원이 여려 개 있는 경우

교착 상태 발생 빈도 교착 상태 발생 시 참여하는 프로세스의 평균 개수

교착 상태 탐지 빈도의 단점들◦ 너무 적으면 한번에 여러 개의 사이클 발생◦ 너무 자주하면 많은 비용 소모

탐지 알고리즘 사용시 고려사항

교착 상태로부터 회복

프로세스 종료◦ 교착 상태에 빠진 프로세스 모두 종료

매우 많은 비용 소모◦ 교착 상태가 제거될 때까지 한 프로세스씩 중지

프로세스가 중지될 때마다 다시 탐지 알고리즘 호출 종료할 프로세스를 선택해야 하는 문제

교착 상태 회복 방법

자원 선점◦ 희생자 선택

비용을 최소한으로 줄일 수 있는 희생자로 선택◦ 롤백

프로세스가 자원을 할당 받기 전의 상태로 롤백◦ 기아 상태

특정 프로세스는 자원을 계속 선점 당할 수 있습니다 .

교착 상태 회복 방법

top related