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.기아상태에 빠지지 않게 하기 위해서는 어떤 방법이 있는가?