4장 교착상태

Download Report

Transcript 4장 교착상태

4장 교착상태
4.1 교착상태 개요
4.2 교착 상태의 특성
4.3 교착상태의 해결 방안
4.4 프로세스 스케줄링
연습문제
4.1 교착상태 개요1

프로세스들이 결코 발생되지 않을 사건을 무한정 기
다리는 상태를 의미

동일한 자원을 공유하고 있는 두 개의 프로세스들이
상대방의 자원에 접근하는 것을 서로 방해함으로써,
두 프로세스 모두 기능이 중지되는 결과를 낳는 상
황

두 프로세스의 우선 순위가 같아 서로 양보하기를
바라고 계속 기다리는 경우
4.1 교착상태 개요2



초창기의 컴퓨터 운영체제들은 한번에 오직 한 개의
프로그램만을 실행 가능
시스템의 모든 자원들은 하나의 프로그램만이 사용
운영체제의 발전으로 한번에 여러 개의 프로그램들
을 실행 가능
[그림 4.1] 교착상태 예
4.1 교착상태 개요3
[그림 4.2] 두 프로세스간의 교착상태
4.2 교착 상태의 특성

상호 배제(mutual exclusion) 조건

점유와 대기(hold and wait) 조건

비선점(nonpreemption) 조건

환형 대기(circular wait) 조건
4.3 교착상태의 해결 방안

교착상태의 예방(prevention)

교착상태의 회피(avoidance)

교착상태의 탐지(detection)

교착상태의 복구(recovery
4.3.1 교착상태의 예방

Havender는 교착상태 필요 조건이 발생하
지 않게 다음과 같은 방법 제안

점유와 대기 조건 방지

비선점 조건 방지

환형 대기 조건 방지

자원의 전체 할당 기법
4.3.1 교착상태의 예방1

점유와 대기 조건 방지

각 프로세스에게 필요한 자원들을 한꺼번에 모두 요
청하게 하고

한 프로세스가 요구한 자원을 전부 할당하여 주거나

또는 하나라도 부족하면 전혀 할당하지 않는 방식으
로 자원을 할당

단점
 자원의 낭비를 초래할 수 있어서 비용이 증가
 한꺼번에 원하는 자원을 제공할 수 없는 경우에는 무한 연
기의 원인
4.3.1 교착상태의 예방2

비선점 조건 방지
추가 자원에 대한 요구가 거절되면 그 프로세스는 자원을 전부
반납, 필요하다면 추가 자원과 함께 다시 요구하도록 하는 방안
 이러한 방법을 사용할 경우 자원을 선점 당한 프로세스가
비정상적으로 종료되고 처음부터 다시 실행을 시작하는 경
우가 발생

이 경우 프로세스가 기존에 실행해 왔던 과정이 모두 취소됨
으로써 그 동안에 사용한 자원들을 모두 낭비

또한 임의의 프로세스가 실행 과정에서 비정상적으로 종료
되는 일이 계속해서 발생한다면 이는 해당 프로세스가 무기
한 연기되는 결과를 초래

비용이 증가하여 현실적으로 구현하기 매우 어려운 기법
4.3.1 교착상태의 예방3

환형 대기 조건 방지
모든 자원들에게 고유 번호를 부여하여 프로세스들이 자원을
요청할 때마다 번호가 증가하는 순으로 요청, 추가로 요청하는
경우에는 현재 가지고 있는 자원보다 더 큰 번호를 가진 자원만
을 요청하도록 제한하는 방법
 프로세스에게 당장 필요 없는 자원을 사전에 할당하므로 자
원 낭비
 반납이 가능한 자원에 대해서도 이를 지연시켜야 하는 단점
 새로운 자원이 시스템에 추가되면 현존하는 프로그램과 시
스템을 재작성 하여야 하는 번거로움 발생
 이 기법은 이론적으로는 좋은 듯 하지만, 효율성이 낮고 시
스템 처리량을 감소
4.3.1 교착상태의 예방4

자원의 전체 할당 기법

프로세스들로 하여금 실행하는 동안 필요로 하는 모든 자원
을 미리 할당 받은 후에 실행을 하도록 하는 방법

전체 자원의 할당을 위해 대기해야 하는 상황 발생

결국 이용이 가능함에도 불구하고 대기를 야기시켜 자원의
낭비를 초래

프로세스가 무기한 연기 상태 놓일 수 있음
4.3.2 교착 상태의 회피

항상 시스템의 상태를 감시하다가 교착 상
태로 전이될 가능성이 있어 보이면 이를 피
해 가는 형태의 기법

안정 및 불안정 상태 개념 사용

교착 상태 회피 알고리즘으로는 보통 은행가
알고리즘을 이론적으로 많이 이용
4.3.2 교착 상태의 회피1
[표 4.1] 안정 상태의 예
[표 4.2] 불안정 상태의 예
4.3.2 교착 상태의 회피2

은행가 알고리즘 단점



사용 가능한 일정량의 자원이 미리 존재하도록
요구, 그러나 기계적인 고장 등으로 남아 있는 자
원의 수를 파악 곤란
사용자 수가 고정되어야 판단이 용이하지만, 다중
처리나 시분할 시스템은 수시로 사용자 수가 변
함
사전에 필요한 자원을 최대한 제시, 그러나 현재
운영체제는 동적으로 처리하기 때문에 최대 요구
량 파악 곤란
4.3.3 교착상태 탐지

교착상태 탐지는 교착상태가 시스템 내에 존
재할 때 이에 관련된 자원들이 어떤 것들인
가를 규명하는 것

교착상태 탐지는 자원 할당 및 대기 그래프를 이
용한 알고리즘을 가지고 설명

자원 할당 그래프에 사이클이 존재하면 사이클
에 속해있는 프로세스는 반드시 교착 상태 발생
4.3.3 교착상태탐지1
[그림 4.3] 자원 할당 및 대기 그래프
4.3.3 교착상태 탐지2
<단계 1> Work와 Finish는 길이가 각각 m과 n인 1차원 배열이라 할 때,
Work:=Available // 각 자원들은 사용 가능함으로 설정
if Allocationi=0 then // 어떤 프로세스에게 할당할 자원이 없으면
Finish[i]:=true
else // 어떤 프로세스에게 할당할 자원이 있으면
Finish[i]:=false
(i = 1, 2, 3 ......m)
<단계 2> 다음의 조건을 만족하는 프로세스 i를 구한다.
Finish[i]=false
Request(i)≤Work
// 자원을 할당받은 프로세스들 중에서 현재 유용한 자원보다 적은
요구를 하는 프로세스가 있으면 <단계 3>으로 없으면 <단계 4>로
간다.
4.3.3 교착상태 탐지3
<단계 3> Work:=Work+Available(i)
Finish(i)=true // 이 상태는 안정상태
<단계 2>로 간다. 자원 할당을 기다리는 또 다른 프로세스를 찾
는다.
<단계 4> 모든 프로세스(m)에 대해여 다음 조건이 만족하는지 조사
Finish[i]=false // 남아있는 자원보다 요구량이 커서 할당받지 못
하면 이 시스템은 교착상태
4.3.4 교착상태 복구

교착상태의 프로세스를 강제적으로 종료시키는 방
법과 교착상태의 프로세스가 점유하고 있는 자원을
선점 시키는 방법

프로세스 종료 기법

선점 방식
4.3.4 교착상태 복구1

프로세스 종료 기법
교착상태의 모든 프로세스를 한꺼번에 종료시키는
가장 단순한 방법

가장 확실하게 해결할 수 있지만 강제로 종료된 프로세
스들은 다시 처음부터 실행시켜야 하는 오버헤드 발생

오버헤드를 개선하기 위하여 교착상태가 해결될 때까지
교착상태의 프로세스를 하나씩 종료해 나가는 방식

이 방식에서는 프로세스를 종료시킬 때마다 교착상태 알
고리즘을 실행시켜야 하는 오버헤드가 발생
4.3.4 교착상태 복구2

희생자 선정 고려 사항

프로세스 우선 순위

프로세스의 종류

각 프로세스의 현재까지의 실행시간

각 프로세스가 실행을 마치기 위하여 앞으로 남은 시간

다른 프로세스와의 관계 등

종료 비용이 가장 낮은 프로세스부터 하나씩 종료시키
되 이 과정을 교착상태가 제거될 때까지 계속

종료 비용이 가장 낮은 부분집합을 선정하는 기법
4.3.4 교착상태 복구3

선점 방식
교착상태를 제거하기 위하여 필요한 자원들을 프로세
스들로부터 선점하고 이를 필요로 하는 프로세스들에
게 할당해 주는 기법

자원을 선점 당한 프로세스들은 종료되어 다시 시작

프로세스 종료 기법과 결과적으로 같은 기법일 수도 있음
4.3.4 교착상태 복구4

희생자의 선정





복귀 문제


프로세스들의 우선 순위
프로세스가 얼마나 오랫동안 연산하였고, 또 일을 완료하기
위해서 앞으로 얼마만큼의 시간을 요구하는가?
프로세스가 어떤 유형의 자원과 몇 개의 자원들을 사용하고
있는가?
몇 개의 프로세스를 희생시킬 것인가?
자원을 선점 당한 프로세스를 어떻게 복귀시킬 것인가?
기아 현상의 문제

비용의 감소에만 국한하여 선정할 경우 어느 한 프로세스가
반복적으로 희생자로 선정될 수 있는 가능성 있음
연습 문제
1.교착상태란 무엇인가?
2.교착상태 회피 방법에서 안정 상태와 불안정 상태에 대해서 비교 설명
하시오.
3.교착상태 복구 기법에서 프로세스 종료 기법과 선점 기법에 대해서 설
명하시오.
4.교착상태의 발생 원인에 대해 설명하고, 또한 교착상태의 4가지 필수
조건은 무엇인가?
5.일상 생활에서 볼 수 있는 교착상태의 예를 들어 보아라.
6.교착상태의 방지법은 무엇인가?
7.상태가 불완전하다는 것이 반드시 교착상태에 빠진다는 것을 나타내지
않는다. 왜 그런지 예를 들어 설명하시오.
8.교착상태는 왜 복구가 어려운지 설명하시오.
9.Havender는 왜 첫 번째 조건인 상호 배제 조건을 부정하지 않았는가?
10.기아상태에 빠지지 않게 하기 위해서는 어떤 방법이 있는가?