교착 상태

Download Report

Transcript 교착 상태

Chapter 06. 교착 상태
6.1
6.2
6.3
6.4
6.5
교착
교착
교착
교착
교착
상태의
상태의
상태의
상태의
상태의
개요
예방
회피
발견
회복
6.1 교착 상태의 개요
• 모든 프로세스들이 원하는 모든 자원들을 컴퓨터 시스템이 충분히 갖추지
못하는 것이 현실이기 때문에 특정 프로세스가 자원의 사용을 위하여 대기하
는 경우도 발생하고 때로는 무한 대기 상태로 빠지기도 하며 최악의 경우에는
아무리 기다려도 도저히 해결할 수 없는 교착 상태(deadlock)로 되기도 한다.
• 교착 상태를 이해하기 위해서는 우선 컴퓨터 시스템 내에 있는 각종
자원들의 일반적인 성격의 이해가 필요하다.
표 6-1 컴퓨터 자원의 종류 및 성격
종류
성 격
선점형
자원
자원이 어떤 프로세스에게 할당되면 도중에 빼앗기는
경우
CPU, 주기억장치
비선점형
자원
자원이 어떤 프로세스에게 일단 할당되면 절대
빼앗기지 않는 경우
자기 테이프 구동기, 프린터
전용 자원
특정 한 프로세스가 독점하여 사용하는 경우
자기 디스크. 자기 테이프
공용 자원
다수의 프로세스들 사이에서 공동으로 사용되는 경우
CPU, 주기억장치, 데이터베이스
전체 총량이 고정되어 있고, 부수적인 자원들이
생성되거나 파괴되지 않는 경우
CPU, I/O 채널, 기억장치, 버스,
파일, 데이터베이스
전체 총량이 고정되어 있지 않고, 부수적인 자원들이
생성되거나 파괴되는 경우
인터럽트, 신호, 메시지, I/O
버퍼 내의 정보 등
재사용
자원
소비 자원
자원의 예
6.1.1 교착 상태의 정의 (1)
교착 상태
• 시스템 내에서 자원을 사용하기 위해 경쟁 하거나 상호간에 통신하
는 프로세스 집합 들이 영구적으로 블록킹(blocking)된 상태.
• 즉 자원 을 사용하기 위해 경쟁하고 있는 하 나 또는 둘 이상의 프로
세스들이 영원히 해 결 불가능한 특 정 사건을 기 다릴 때 발생.
• 교착상태는 시스템의 효율을 급격히 떨어뜨리는 문제점이 발생한다.
• 일반적인 교착 상태의 의미는 다음과 같이 정의할 수 있다.
ㆍ 하나 또는 둘 이상의 프로세스가 더 이상 계 속할 수 없는 어떤 특정 사건을
기다리고 있는 상태를 말한다. 여기서 특정 사건은 자원의 할당과 해제를
의미한다.
ㆍ 둘 이상의 서로 다른 프로세스가 요구한 자 원을 할당 받아 점유하고 있으
면서 상호간 의 상대방 프로세스가 가지고 있는 자원을 요구하는 경우를
말한다.
6.1.1 교착 상태의 정의 (2)
그림 6-1 두 프로세스의 교착 상태 예
각 프로세스는 자신에게 할당된 자원을 가지
고 있으면서 상대방 프로세스의 자원을 요구
하는 상태로 서로 상대방이 자원을 놓아주기
를 기다리고 있으면서 자신이 가지 고 있는
자원을 놓아주지 않는 상태이다. 이러한 현상
을 환형 대기(circular wait)라 한다.
그림 6-2의 자원 할당 그래프도 교착 상태의 예를 나타
내고 있으며 여기서 프로세스 집합 P={P1, P2, P3}, 자
원 집합 R={R1, R2 ,R3, R4}, 정점 집합 V={(P1, R1),
(P 2, R3), (P3, R2), (R1, P2), (R2, P1), (R2, P2), (R3,
P3 )}으로 나타낼 수 있다. 이 그래프에서는 프로세스
P1, P2, P3은 교착 상태에 빠져 있다. 그 이유는 이 그래
프에서 두 개의 사이클이 존재하기 때문이다.
그림 6-2 자원 할당 그래프에서 교착 상태 예
6.1.2 무한 연기의 정의 (1)
• 교착 상태는 무한 연기(infinite postponement)와 비슷하며, 이들
모두는 자원을 사용할 수 있기를 기다리며 무한정 대기 상태에 있는
하나 이상의 프로세스를 포함하고 있다.
• 교착 상태 에 있는 프로세스는 다른 프로세스가 이미 자원을 가지고
있기 때문에 결코 해제되지 않을 자원을 기다리고 있는 상태이다.
• 무한 연기 는 어떤 프로세스가 단계적으로 자원을 사용 가능하게
하지만 자원 할당 스케줄링 정책 때문에 그 프로세스에게 결코
할당되지 않는 자원을 기다릴 때 발생한다.
• 다중 프로그래밍 시스템에서 자원 할당 및 CPU 스케줄링에 의해
하나의 프로세스를 선택하는 동안 다른 프로세스들은 기다리게 된다.
이러한 상황에서 여러 다른 프로세스들이 시스템에서 스케줄링되어
처리되는 동안 한 특정 프로세스의 스케줄링이 무기한으로 연기될
수 있으며 이러한 현상을 무한 연기라고 한다.
6.1.2 무한 연기의 정의 (2)
무한 연기 발생 원인 : 운영체제의 편중된 자원 할당 정책 때문에 발생하
며 자 원 할당 정책이 우선 순위에 의해 수행된다면 우선순위가 낮은
프로세스는 자신보다 높은 우선 순위의 프로세스가 계속 도착하여
자원을 할당 받게 되 므로 우선순위가 낮은 프로세스는 그 자원을 무
기한으로 기다리게 될 수 있는 것이다.
에이징(aging) 기법 : 일부 시스템에서 무한 연기를 해결하는 방법으로
프로세스가 자원을 기다리 고 있는 시간에 비례하여 우선순위를 부
여함으로써 무한 연기 문제를 방지하 는 기법이다.
표 6-2 무한 연기와 교착 상태의 비교
구분
의 미
무한 어떤 특정 프로세스가 자원을 할당
연기 받기 위해 무한정 기다리는 상태
해결 방법
자원의 편중된 분배정책으로 발생하
며 에이징기법(aging)에 의해 해결
교착 시스템에 있는 여러 개 또는 모든
상호배제, 점유와 대기, 비선점, 환
상태 프로세스가 아무 일도 못하고 어떤 형대기와 같은 조건에 의해 발생하
특정 사건을 기다리며, 무기한 연기 며 이를 부정함으로써 해결한다.
되어 있는 상태
6.1.3 교착 상태의 발생 조건 (1)
•
•
교착 상태에 있는 프로세스들은 결코 실행을 끝낼 수 없으며 시스템 자원들
이 묶여 있어서 다른 작업을 실행하는 것도 불가능하다.
교착 상태가 발생하기 위해서는 다음의 네 가지 조건이 만족되어야 하며 이
네 가지 조건이 동시에 만족 될 때 교착 상태가 발생하며 이 조건 중 하나만
발생하지 않아도 교착 상태의 발생을 방지할 수 있다.
(1) 상호 배제(mutual exclusion)
–
프로세스들이 그들이 필요한 자원에 대해 배타적인 통제권을 요구함에
따라서 최소한 한 번에 한 프로세스만이 자원을 사용할 수 있으며 다른
프로세스가 그 자원을 요구하면 자원을 요구한 프로세스는 자원이
해제될 때까지 임계 구역 밖에서 대기한다.
(2) 점유와 대기(hold and wait)
–
–
프로세스가 자신에게 이미 할당된 자원들을 점유하고 있으면서, 다른
자원을 추가로 요구하며 기다리고 있는 것이다
따라서 최소한 하나의 자원을 점유하고 있는 프로세스가 존재해야 하며
이 프로세스는 다른 프로세스에 할당된 자원을 추가로 점유하기 위하여
대기해야 한다.
6.1.3 교착 상태의 발생 조건 (2)
(3) 비선점(non-preemption)
– 다른 프로세스가 사용하고 있는 자원을 타 프로세스가 강제로 선점 할 수
없는 것으로 현재 프로세스에게 일단 할당된 자원은 모든 처리가 끝나서
해당 프로세스가 그 자원을 해제시킬 때까지 중단되지 말아야 한다는
것이다.
(4) 환형 대기(circular wait)
– 프로세스와 자원들이 원형을 이루며 각 프로세스는 자신에게 할당된
자원을 가지면서 상대방의 자원을 상호 요청하는 경우를 말한다. 따라서
대기하고 있는 프로세스 집합{P0, P1, ..... Pn}에서 P0는 P1이 점유한
자원을 대기하고 있고 P1은 P2, Pn-1은 Pn, Pn은 P0가 점유한 자원을
대기한다.
• 교착 상태 발생 네 가지 조건 중에서 상호 배제, 점유와 대기, 비선점
조건은 교착 상태 발생할 때 반드시 나타나게 되는 필요조건이나 이
세 가지 조건만으로는 결코 교착 상태가 발생하지 않는다.
• 그러나 환형 대기 조건은 위의 3가지 조건을 갖고 있는 형태이므로 이
조건은 교착 상태가 되기 위한 필요충분조건이라 할 수 있다.
6.2 교착 상태의 예방
• 교착 상태 예방(deadlock prevention)은 교착 상태가 발생하지
않도록 사전에 제거하여 시스템을 제어하는 것이다.
• 교착 상태의 예방은 가장 정확한 해결 방법 및 자원 사용 정책을
제시해야 하므로 자원의 비효율적인 이용 결과를 낳을 수 있다.
• 교착 상태 예방은 교착 상태 발생 필요조건의 네 가지 중 하나를
제거함으로써 수행된다.
6.2.1 상호 배제 조건의 제거
• 상호 배제 조건은 여러 개의 프로세스가 공유 불가능한 전용 자원인
경우에 발생하는 것이며 기억 장치나 CPU와 같은 공유할 수 있는
자원에 대해서는 상호 배제 조건이 발생하지 않는다.
• 즉 프린터와 같이 본질적으로 공유가 불가능한 자원인 경우에 상호
배제 조건의 제거는 원칙적으로 불가능하고 상호 배제 방법은 공유
가능한 자원 할당 시에 만 가능하다.
6.2.2 점유와 대기 조건의 제거
• 점유와 대기 조건의 부정은 2가지 방법을 사용하는데, 하나는 프로세
스가 수행되기 전에 필요한 모든 자원을 할당시켜 주는 방법과 다른
하나는 자원을 점유하지 않을 때만 자원을 요구하도록 하는 방법을
사용한다. 전자의 경우는 대기를 하지 않고 후자의 경우는 점유를 하
지 않게 되어 점유와 대기 조건의 제거가 가능하게 된다.
• 프로세스는 일시에 요구한 모든 자원 중에서 원하는 자원이 사용 가
능 하지 않아 할당되지 않을 때는 그 프로세스는 원하는 자원이 모두
사용 가능해질 때까지 기다려야 하며 기다리는 동안에는 아무 자원
도 가지고 있을 수 없다.
• 그러나 이러한 방법은 다음과 같은 문제점을 발생시킬 수 있다.
ㆍ 자원 낭비와 비용 증가 문제를 초래하게 된다.
ㆍ 자원을 공유 할 수 없다.
ㆍ 자원이 부족한 상태에서 필요한 자원 모두가 동시에 사용이 불가능하다.
ㆍ 어떤 프로세스는 끝내 필요한 자원을 모두 얻지 못하는 문제가
발생한다.
6.2.3 비선점 조건의 제거
• 비선점 조건은 공유 불가능한 전용 자원인 경우에 나타나는 것으로
이를 제거하기 위해서는 해당 자원에 대해 선점이 가능하도록 하여야
한다.
• 즉 지금까지 해당 자원을 수행한 전체 처리 내용에 대한 보관과 복구
가 가능하도록 하는 방법과 또는 현재까지 처리한 모든 작업 내용을
포기하게 하고 다른 프로세스에게 이 자원을 할당시켜 줄 수 있도록
해 주는 방법이다.
• 전자의 방법은 작업 내용에 대한 보관과 복구가 용이한 자원에 대해
서만 적용이 가능하며, 후자의 경우는 보관과 복구가 불가능한 자원
인 프린터, 테이프에 대해서만 적용하게 된다.
• 이 두 가지 방법을 사용하게 되면 교착 상태의 예방이 가능하지만
역시 다음과 같은 문제점이 발생한다.
ㆍ 자원 사용의 내용을 보관하거나 이를 복구하는 비용 증가 문제
ㆍ 현재까지 처리한 작업 내용의 포기에 따른 비용 문제
ㆍ 자원을 계속 선점 당하여 현재까지 작업 내용을 계속 포기하게 되는 문제
6.2.4 환형 대기 조건의 제거
• 환형 대기 조건은 시스템 내에 있는 각 자원의 형태에 순서 번호를
부여함으로써 제거가 가능하다.
• 예를 들면 어떤 프로세스가 특정 형태의 자원들을 할당받고 있다면
다음에 요구할 수 있는 자원은 현재 할당받고 있는 자원의 순서 번호
이 후의 자원이 되도록 하는 것이다.
• 이와 같은 환형 대기 조건은 제거가 가능하며, 이에 따라서 교착
상태의 예방도 가능하지만 다음과 같은 문제점을 발생시킬 수 있다.
ㆍ 프로세스에 대한 자원 할당 순서를 예상하여 자원의 순서 번호를 부여
하기 때문에 예상을 벗어나는 자원의 요청 순서가 나타나게 되면 더 이 상
실행할 수 없어 자원 사용의 효율성이 크게 떨어진다.
ㆍ 새로운 자원이 그 시스템에 추가될 때에 자원의 순서 번호를 재구성하
며, 이에 따라 이미 작성된 프로그램도 수정해야 한다.
ㆍ 처리가 급한 프로그램이 발생할 때는 자원 할당에 어려움이 발생한다.
6.3 교착 상태의 회피 (1)
• 교착 상태 회피(deadlock avoidance)는 교착 상태 발생 가능성을 미
리 제거하는 것이 아니라 발생 가능성을 인정하고 교착 상태가 발생
하려고 할 때 이를 적절히 피해 가는 방법이다. 자원을 더 효율적으로
이용하고자 하는 목적으로 예방보다는 약한 조건을 요구한다.
• 특히 각 프로세스들이 원하는 자원에 대한 할당과 요청을 정상적으
로 진행시키면서 각 프로세스들의 자원 사용에 대한 정보를 세밀하게
분석하여 시스템 내의 자원 사용에 대한 상황이 계속적으로 안전 상태
가 되도록 한다.
• 일반적인 방법으로 1965년 Dijkstra에 의해 제안된 은행가 알고리즘
이 있으며 교착 상태를 회피하기 위한 자원 사용에 대한 정보는 다음
과 같다.
ㆍ
ㆍ
ㆍ
ㆍ
ㆍ
해당 시스템이 갖고 있는 모든 자원의 종류 및 각 자원의 최대 개수
각 프로세스들이 필요로 하는 자원의 최대 요구량
각 프로세스에게 이미 할당된 자원의 수
각 프로세스들이 추가로 원하는 자원의 요구량
각 자원의 사용 가능 개수
6.3 교착 상태의 회피 (2)
(1) 안전 상태와 불안전 상태 개념
• 안전상태(safe state) :
– 시스템이 특정한 순서대로 각 프로
세스에게 자원을 할당할 수 있고
교착 상태를 방지할 수 있는 상태,
결국 모든 작업이 완료될 수 있는
상태이다.
• 불안전 상태(unsafe state) :
– 결국에는 교착 상태가 발생할 수
있는 상태이다. 그러나 불안전 상
태라고 해서 모두 교착 상태는 아
니며, 불안전 상태는 교착 상태로
될 가능성이 있는 상태이다.
그림 6-3 교착상태와
안전 및 불안전 공간
6.3 교착 상태의 회피 (3)
(2) 안전 상태와 불안전 상태의 예
▣ 안전 상태의 예
• 3개의 프로세스가 있고 총 자원이 10개라고 가정하자. 아래 표와 같이 현재
각 프로세스에 할당된 할당량은 8개이고 잔여량은 2개이다.
프로세스
현재 할당량 최대 요구량 추가 요구량 프로세스 실행 종료 순서는 프로세
스 1, 프로세스 3, 프로세스 2가 되며
1
3
2
프로세스 1
이와 같은 순서를 안전순서 라 하고
5
10
5
프로세스 2
하나 이상 존재하면 안전 상태가
2
5
3
프로세스 3
된다.
▣ 불안전 상태의 예
• 3개의 프로세스가 있고 총 자원이 12개라고 가정하자. 아래 표와 같이 현재
각 프로세스에게 할당된 총 할당량은 11개이고 잔여량은 1개이다.
이 경우에는 현재 잔여량은 1개뿐이
프로세스
현재 할당량 최대 요구량 추가 요구량
므로 어느 프로세스에게도 추가
6
9
3
프로세스 1
요구량 만큼 자원을 할당할 수 없다.
3
5
3
프로세스 2
따라서 이 시스템의 상태는 불안전
상태이며 교착 상태가 발생할
2
4
4
프로세스 3
가능성이 있다.
6.3 교착 상태의 회피 (4)
▣ 안전 상태에서 불안전 상태로의 전이
• 앞에서와 마찬가지로 3개의 프로세스가 있고 총 자원이 12개라고 가정하자.
아래 표와 같이 현재 각 프로세스에게 할당된 총 할당량은 10개이고 잔여량
은 2개이다. 따라서 현재 이 시스템의 상태는 프로세스 2에 추가 요구량을
할당할 수 있으므로 안전 상태이다.
프로세스
현재 할당량
최대 요구량
추가 요구량
프로세스 1
2
5
3
프로세스 2
4
6
2
프로세스 3
4
8
4
• 위의 안전 상태에서 만약 운영체제가 프로세스 3에 추가 요구량 4대 중 잔여
량 2대를 할당한다면, 어떤 프로세스도 종료할 수 없게 되어 아래 표와 같이
불안전 상태로 변한다.
프로세스
현재 할당량
최대 요구량
추가 요구량
프로세스 1
2
5
3
프로세스 2
4
6
2
프로세스 3
6
8
2
6.3 교착 상태의 회피 (5)
(3) 은행가 알고리즘 : 은행가 알고리즘을 구현하기 위해서는 자원 할당 시스
템의 상태를 나타내는 여러 가지 자료구조를 유지해야 한다.
• n은 시스템의 프로세스 수이며 m은 자원 형태의 수라 한다면 표 6-7과 같은
자료구조가 필요하다.
표 6-7 은행가 알고리즘 구현에 필요한 자료구조
Available
Max
각 자원의 형태 별로 사용 가능한 자원의 수를 표시하는 길이가
m인 벡터이다. Available[j] = k라면, 자원 형태 Rj의 자원이 k개가
남아 있다는 의미이다(잔여량).
각 프로세스의 최대 자원의 요구를 표시하는 n × m 행렬이다.
Max[i,j] = k라면, 프로세스 Pi는 자원 형태가 Rj인 자원을 최대
k개까지 요구할 수 있다는 의미이다(최대 요구량).
Allocation 현재 각 프로세스에게 할당되어 있는 자원의 수를 정의하는 n ×m
행렬이다. Allocation[i,j] = k라면 프로세스 Pi는 현재 Rj라는 자원
형태를 K개 할당받고 있다는 의미이다(할당량).
Need
각 프로세스의 남아있는 자원의 요구를 표시하는 n × m 행렬이다.
Need[i,j] = k라면, 프로세스 Pi는 자신의 작업을 종료하기 위해 자
원 형태를 Rj를 k개 추가로 더 필요로 한다는 의미이다(추가 요구량,
필요량).
6.3 교착 상태의 회피 (6)
• 은행가 알고리즘에서 프로세스Pi의 자원 요청 벡터를 Request라
하고 Request[j]=k라 하면 프로세스Pi는 Rj자원을 k개 요구한다.
프로세스Pi가 자원을 요청하면 다음 그림6-4와 같은 단계를 거쳐
알고리즘이 수행된다.
단계 1:Requesti ≤ Needi라면 단계 2로 간다. 그렇지 않으면 최대 요구량을
초과하기 때문에 오류 상태로 된다(요구량 > 필요량)
단계 2:Request ≤ Available 라면 단계 3으로 간다. 그렇지 않으면 자원이
부족하기 때문에 대기한다(요구량 > 잔여량)
단계 3:시스템은 상태를 다음과 같이 수행하여 요구된 자원들을 프로세스에게
할당되도록 한다.
잔여량 = 잔여량 - 요구량 (Available := Available - Requesti)
할당량 = 할당량 + 요구량 (Allocationi := Allocationi + Requesti)
필요량 = 필요량 - 요구량 (Needi := Needi - Requesti)
그림 6-4 은행가 알고리즘
6.3 교착 상태의 회피 (7)
• 시스템이 안전 상태인지를 발견하는 알고리즘은 다음 그림 6-5와
같이 표현 할 수 있다.
단계 1:Work, Finish를 각각 길이가 m, n인 벡터라고 하면, Work = Available로
Finish[i] = false , i= 1, 2, 3, .... n으로 초기화 한다. Work는 남아 있는
자원의 수인 Available로 설정한다.
단계 2:다음과 같이 되는 i 값을 찾는다.
a. Finish[i] = false
b. Needi ≤ Work
이러한 값이 있으면 단계 3으로 가고, 없으면 단계 4로 간다.
단계 3:자원을 할당한 후 해제한다.
Work = Work + Allocationi
Finish[i] = true
단계 2로 간다.
단계 4:만약, 모든 i에 대하여 Finish[i] = true이면 시스템은 안전 상태이다.
그림 6-5 안전 상태 발견 알고리즘
6.3 교착 상태의 회피 (8)
 예제
• P0부터 P4까지 5개의 프로세스 {P0, P1, .... P4}와 3개의 자원 형태 A,
B, C를 가진 시스템을 가정한다. 자원 형태는 A가 10개, B가 5개, C가
7개 있다. 시간 t0에 시스템의 상태가 그림 6-6과 같다고 가정하자.
상태
프로세스
P0
P1
P2
P3
P4
Allocation
Max
Available
A
B
C
A
B
C
A
B
C
0
1
3
3
0
1
0
0
1
0
0
0
2
1
2
6
2
9
3
3
5
2
0
2
2
3
2
2
2
3
3
3
2
그림 6-6 시간 T0에 시스템의 상태
6.3 교착 상태의 회피 (9)
• 행렬 Need의 내용은 Max 행렬에서 Allocation 행렬을 뺀 MaxAllocation으로 정의되었으며, 그림 6-7과 같다. 이때 이 시스템은
<P1, P3, P4, P2, P0> 순서가 안전 조건을 충족하므로 현재 안전
상태에 있다.
Need
상태
프로세스
P0
P1
P2
P3
P4
A
B
C
6
1
6
0
3
4
2
0
1
2
3
2
0
1
1
그림 6-7 Need 행렬
6.3 교착 상태의 회피 (10)
• 여기서, 프로세스 P1은 자원 형태 A의 자원을 1개, C자원을 2개 더
요청하여 Requesti = (1, 0, 2)라고 가정하자. 이 요청이 즉시 허용될
수 있는 지 여부를 결정하기 위하여 먼저 Requesti ≤ Available 즉 (1,
0, 2) ≤ (3, 3, 2)인지를 검사한다. 결과는 True이므로 요청이
충족되어 그림 6-8과 같은 새로운 상태에 도달했다고 가정한다.
상태
프로세스
P0
P1
P2
P3
P4
Allocation
Max
Available
A
B
C
A
B
C
A
B
C
0
2
3
3
0
1
0
0
1
0
0
2
2
1
2
6
0
6
0
3
4
2
0
1
2
3
0
0
1
1
2
3
0
그림 6-8 새로운 시스템의 상태
6.3 교착 상태의 회피 (11)
• 새로운 시스템의 상태가 안전한가를 결정해야 하는데, 이는
알고리즘을 실행하여 <P1, P3, P4, P0, P2> 순서가 안전 요구를
충족하는 것을 발견할 수 있다. 따라서 즉시 프로세스 P1의 요구를
허용한다. 그러나 시스템이 이 상태에 있을 때는 P4가 (3, 3, 0)을
요청하면 자원이 부족하기 때문에 허용할 수 없다는 것을 알 수 있다.
• 은행가 알고리즘의 단점은 다음과 같다.
ㆍ 할당할 자원량이 일정량 존재해야 한다.
ㆍ 최대 자원 요구량을 이미 알아야 한다.
ㆍ 일정한 수의 사용자 프로세스가 있을 때만 적용할 수 있다.
ㆍ 프로세스들은 유한한 시간 내에 할당된 자원을 반납해야 한다.
6.4 교착 상태의 발견
• 교착 상태 발견(deadlock detection)은 시스템 운영 중에 교착 상태
가 발생했는지를 결정하고 관련된 프로세스와 자원을 발견하는 것을
말한다.
• 프로세스와 자원 간에 순환적 요구와 할당 관계에 있는 것을 규명하
는 것으로는 자원 할당 그래프의 제거와 교착 상태 발견 알고리즘이
있다.
6.4.1 교착 상태 발견 알고리즘
• 시스템의 상태를 검사하여 교착 상태 발견 알고 리즘을 호출한다.
• 교착 상태 발견 알고리즘을 호출하는 결정 요소는 교착 상태의 발생 빈도수와
교착 상태가 발생하였을 때 영향을 받는 프로세스의 수로 결정한다.
• 교착 상태가 자주 발생하면 교착 상태로 된 프로세스들에 할당된 자원들은
교착 상태가 해결될 때까지 쉬게 된다.
• 또한 교착 상태의 순환에 포함된 프로세스들의 수는 점점 증가한다.
6.4.1 교착 상태 발견 알고리즘
단계 1:Work, Finish를 각각 길이가 m, n인 벡터라고 하면, Work = Available로
초기화한다. i = 1, 2, 3, .... n일 때 만약, Allocationi ≠ 0이면 Finish[i]
= false이고, 그렇지 않으면 Finish[i] = true로 초기화 한다.
단계 2:다음과 같이 되는 인덱스 i값을 찾는다.
a. Finish[i] = false
b. Requesti ≤ Work
만약 여기에 맞는 i가 있으면 즉 요구 자원을 할당받을 수 있으면
단계 3으로 가고 없으면 단계 4로 간다
단계 3:Work = Work + Allocationi
finish[i] = true
단계 2로 간다.
단계 4:Finish[i] = false라면, 1 ≤ i ≤ n인 범위에서 시스템은 교착 상태에 있다.
그림 6-9 교착 상태 발견 알고리즘
6.4.2 자원 할당 그래프 및 제거 (1)
• 자원 할당 그래프는 교착 상태를 찾아내는데 사용하는
방법으로 방향 그래프를 이용하여 자원의 할당 사항과
요구 사항을 나타낸다.
• 그래프 제거 법에 의해 실행을 완료할 수 있는 프로세스와
교착 상태에 빠진 프로세스를 결정할 수 있으며 그래프에
서의 제거는 이 프로세스가 작업을 완료하고 그 자원을
시스템에 반납할 수 있다는 사실을 반영한다.
• 어떤 그래프에서 모든 프로세스를 제거할 수 있으면 교착
상태는 없고 모든 프로세스가 제거될 수 없으면 제거
불능인 프로세스들이 그래프 내에서 교착 상태 빠진
프로세스 그룹을 형성하고 있는 것이다.
6.4.2 자원 할당 그래프 및 제거 (2)
• 그림 6-10은 자원 할당 그래프의 제거 과정을 나타내고 있다.
사각형은 프로세스, 큰 원은 동일 자원의 집합, 큰 원 안에 그려진
작은 원은 각 자원의 집합 내에 속하는 동일한 자원의 수를 나타낸다.
그림 6-10 자원 할당 그래프 제거 과정
6.5 교착 상태의 회복
• 교착 상태 회복(recovery from deadlock)은 시스템으로부터 교착
상태를 제거하여 이후로는 시스템이 잘 진행되게 한다.
• 대부분의 시스템에서는 하나 또는 그 이상의 교착 상태에 빠진 프로
세스를 완전히 제거시켜서 회복하기 때문에 제거된 프로세스는 지금
까지 수행했던 작업의 일부 혹은 전부를 잃어버리고 다시 재시작하기
때문에 시간적 경제적인 부담이 크다.
• 운영체제는 교착 상태가 발생하면 최소의 피해를 보장하면서 교착
상태를 회복해야 한다.
• 교착 상태 회복의 단계
– 교착 상태 탐지 알고리즘을 수행하여 교착 상태에 빠진 프로세스들을
식별한다
– 교착 상태에 빠진 프로세스들을 종료시키거나 이들이 배당 받았던
자원들을 선점하여 다른 프로세스가 사용할 수 있도록 함으로써 교착
상태를 회복해 나간다.
6.5.1 프로세스 종료 방법
• 교착 상태에 빠진 프로세스들을 종료시키는 방법은 종료된 프로세스가 교착
상태가 되기 전에 수행했던 작업을 잃어버리고 다시 처음부터 재시작 해야
하기 때문에 최소의 피해가 발생하는 프로세스를 선택하는 방안이 필요하다.
(1) 교착 상태 프로세스들을 모두 종료하는 방법
– 교착 상태에 빠진 모든 프로세스를 종료함으로써 확실하게 교착 상태의
사이클을 해결하지만 비용이 많이 든다.
(2) 교착 상태 사이클이 제거될 때까지 한 프로세스 씩 종료하는 방법
– 교착 상태에 빠진 프로세스들 중에서 한 프로세스씩 차례로 종료시켜
가면서 해결하는 방식이다.
– 최소 비용의 원칙으로 희생자 프로세스를 선정하는 데는 다음과 같은
요인들을 고려해야 한다.
ㆍ
ㆍ
ㆍ
ㆍ
ㆍ
프로세스들의 우선순위 여부
지금까지 프로세스가 수행된 시간과 종료하는데 필요한 시간
프로세스가 사용한 자원 유형과 자원의 수
복귀하는데 얼마나 많은 프로세스가 포함되어 있는가의 여부
프로세스가 대화식 처리 방식 또는 일괄 처리 방식인지의 여부
6.5.2 자원 선점 방법 (1)
• 교착 상태에 빠진 프로세스들의 자원 선점을 이용하여 이들 자원의
교착 상태를 해결하려면 프로세스로부터 자원들을 선점하여 이들
자원을 교착 상태가 해결될 때까지 다른 프로세스들에게 할당해야
한다.
• 교착 상태를 회복하기 위하여 자원의 선점권을 이용하려면 자원
선점 시 다음 세 가지 사항들을 해결해야 한다.
(1) 희생자 선정 문제
• 교착 상태의 빠진 프로세스들 중에서 최소의 피해를 주면서 어느
프로세스 자원을 선점 할 것인지를 결정해야 한다.
• 비용을 최소화하기 위하여 자원의 선점 순서를 결정해야 한다.
• 비용 요인으로는 교착 상태 프로세스가 점유하고 있는 자원의 수나
교착 상태 프로세스가 지금까지 실행하는데 소요한 시간과 같은
매개변수들을 고려하여 결정한다.
6.5.2 자원 선점 방법 (2)
(2) 복귀 문제
• 프로세스로부터 자원을 선점 당하면 필요한 자원이 부족하기 때문에
이 프로세스를 정상 실행할 수 없게 된다. 따라서 자원을 선점 당한
프로세스를 안전 상태로 복귀시키고 중지된 지점부터 다시 재
시작해야 한다.
• 일반적으로 안전 상태가 어떤 것인지를 결정하기 어렵기 때문에
가장 단순한 방법으로 완전 복귀(total rollback) 방법, 즉 그
프로세스를 완전히 취소한 후 중지시키고 처음부터 다시 재 시작하는
방법을 사용한다.
(3) 기아 상태 문제
• 자원들이 항상 동일한 프로세스로부터 선점되면 기아
상태(starvation)가 발생할 수 있다. 희생자의 선택을 기본적으로
비용의 감소에만 국한하여 선정할 경우 어느 한 프로세스가
반복적으로 희생자로 선정될 수 있는 가능성이 있다. 이러한 사항에
대한 해결 방안으로 희생자 반복 선택 횟수의 상한선을 정하여 상한선
이상은 프로세스가 반복적으로 계속 희생자가 되지 못하도록 한다.
단원연습문제
1. 교착상태의 정의와 두 프로세스간의 교착상태를 예를 들어 설명하시오.
2. 무한연기와 교착상태를 비교하고 이에 따른 해결 방법을 설명하시오.
3. 안전상태와 불안전상태란 무엇인지 설명하시오.
4. 교착상태의 네 가지 발생 조건을 간단히 설명하시오.
5. 교착상태 예방과 회피하는 방법에 대해서 설명하시오.
6. 교착상태 발견과 회복하는 방법에 대해서 설명하시오.
연습문제
1. 프로세스의 정의로 적당하지 않은 것은?
㉮ 하드웨어에 의해 사용되는 입/출력 장치
㉯ 실행 중인 프로그램
㉰ 운영체제 내에 프로세스 제어 블록의 존재로 명시되는 것
㉱ 프로세서가 할당되는 개체
2. 프로세스의 상태가 아닌 것은?
㉮ 정지 상태(Halt)
㉰ 대기 상태(Blocked)
㉯ 준비 상태(Ready)
㉱ 실행 상태(Running)
3. 프로세스의 상태 전이를 나타낸 것 중 옳지 않은 것은?
㉮ 디스패치:준비 → 실행
㉯ 타이머 런 아웃:실행 → 준비
㉰ 블록(block):대기 → 실행
㉱ 깨움(wakeup):대기 → 준비
4. 프로세스가 CPU를 점유하고 있는 상태를 무엇이라 하는가?
㉮ 실행 상태(running state)
㉯ 준비 상태(ready state)
㉰ 보류 상태(blocked state)
㉱ 조건 만족 상태(wakeup state)
연습문제
5. 다음의 프로세스 상태 전이 중 전이의 원인이 프로세스 자신에게 있는 것은?
㉮ 디스패치
㉯ 블록
㉰ 타이머 종료
㉱ 웨이크 업
6. 프로세스 상태 전이에 있어서 실행상태에 있던 프로세스가 할당 시간 종료로 인하여
바꾸어지는 상태는?
㉮ 보류 상태
㉯ 종료 상태
㉰ 준비 상태
㉱ 서스펜드 상태
7. 다음 프로세스 상태 중 어떤 사건이 발생하길 기다리고 있는 상태는?
㉮ 보류 상태(blocked state)
㉯ 준비 상태(ready state)
㉰ 실행 상태(running state)
㉱ 제출 상태(submit state)
8. 현재 실행되고 있는 프로세스의 상태가 바뀌면 어떻게 되는가?
㉮ 대기 상태로 바뀌게 된다.
㉯ 준비 상태의 한 프로세스가 실행된다.
㉰ 인터럽트가 호출된다.
㉱ 새로운 프로세스가 생성된다.
연습문제
9. 프로그램과 프로세스에 대한 설명으로 틀리는 것은?
㉮ 프로그램은 수동적 개체이며, 프로세스는 능동적 개체이다.
㉯ 프로그램은 프로그램 카운터를 가진 능동적 개체(entity)이다.
㉰ 동일한 프로그램에 관련된 하나 이상의 프로세스는 서로 분리된
실행 순서를 갖는다.
㉱ 하나의 프로그램에는 하나 이상의 프로세스가 존재할 수 있다.
10. 프로세스 제어블록(PCB)에 포함되지 않는 정보는?
㉮ 프로세스의 우선순위
㉯ 레지스터 내용을 저장하는 장소
㉰ 프로세스의 크기
㉱ 프로세스 현재 상태
11. PCB (Process Control Block)에 포함되는 정보가 아닌 것은?
㉮ 프로세스의 처리기 종류
㉯ 프로세스의 현 상태
㉰ 프로세스의 고유한 식별자 ㉱ 프로세스의 우선순위
연습문제
12. 프로세스 스케줄러(process scheduler)가 하는 일은?
㉮ 하나의 프로세스를 준비(ready)상태에서 실행(run)상태로 만든다.
㉯ 하나의 프로세스를 대기(blocked)상태에서 실행(run)상태로 만든다.
㉰ 하나의 프로세스를 제출(submit)상태에서 준비(ready)상태로 만든다.
㉱ 하나의 프로세스를 제출(submit) 상태에서 실행(blocked) 상태로 만든다.
13. 다음의 내용은 어떤 스케줄러에 대한 설명인가?
① 처리될 작업을 결정
② Job Pool에서 작업을 선택해서 주기억장치로 옮김
③ 입·출력 중심작업과 CPU중심 작업을 적절하게 혼합하는 것이 중요
④ 작업이 시스템에서 나가면 새로운 작업을 결정
㉮ 장기 스케줄러
㉰ 중기 스케줄러
㉯ 단기 스케줄러
㉱ 프로세스 스케줄러
연습문제
14. 서로 경쟁하는 프로세스의 수를 줄이는 교체 기법을 사용할 때의
스케줄러는?
㉮ 장기 스케줄러(long-term scheduler)
㉯ 단기 스케줄러(short-term scheduler)
㉰ 중기 스케줄러(medium-term scheduler)
㉱ 프로세스 스케줄러(process scheduler)
15. 다음 중 프로세스(Process)의 정의로 볼 수 없는 것은?
㉮ 실행 중인 프로그램
㉯ 비동기적 행위
㉰ 선점하는 행위
㉱ 프로세서가 할당되는 개체
16. 다음 중 디스패처(dispatcher)의 기능이 아닌 것은?
㉮ 문맥(context)을 교환하는 기능
㉯ 사용자 모드로 전환하는 기능
㉰ 처리할 프로세스를 기억장치에 옮기는 기능
㉱ 프로세스에게 처리기를 할당하는 기능
연습문제
17. 다음 중 프로세서의 시간 할당량을 결정해 주는 것은 무엇인가?
㉮ 작업 스케줄러
㉯ 프로세서 스케줄러
㉰ 중기 스케줄러
㉱ 단기 스케줄러
18. CPU 스케줄링 알고리즘을 평가하는 기준으로 적절하지 않은 것은?
㉮ 처리율(throughput)
㉯ 반환 시간(turnaround time)
㉰ 대기 시간(waiting time)
㉱ 우선순위(priority)
19. 프로세스 스케줄링의 성능 기준에 대한 설명으로서 틀리는 것은?
㉮ 대기 시간은 준비 큐에서 기다리는 시간이다.
㉯ 응답 시간은 사용자가 어떤 요청을 한 후부터 그 응답을
출력하는데 걸리는 시간이다.
㉰ CPU 이용률은 단위 시간당 CPU가 활동하는 시간의 양이다.
㉱ 처리율은 단위 시간당 완료된 프로세스의 수이다.
연습문제
20. 다음 중 스케줄링의 조건이 아닌 것은?
㉮ 예측이 가능하도록 한다.
㉯ 오버 헤드를 최소화시킨다.
㉰ 응답 시간과 자원 활용간의 균형을 이루어야 한다.
㉱ 단위 시간당 처리량을 최소화하여 공평성을 유지한다.
21 CPU 스케줄링 결정들은 4가지 조건하에서 발생하는데 해당되지 않는 것은?
㉮ 실행 상태 → 블록 상태
㉯ 실행 상태 → 준비 상태
㉰ 프로세스가 종료될 때
㉱ 작업의 제출 또는 중단될 때
22. 다음 중 스케줄링의 기준이라고 볼 수 없는 것은?
㉮ 입출력 위주의 프로세스인가?
㉯ 연산 위주의 프로세스인가?
㉰ 프로세스가 일괄 및 대화형인가?
㉱ 프로세스가 차지하는 용량이 얼마인가?
연습문제
23. 다음 중 스케줄링 기법에 관한 설명 중 틀린 것은?
㉮ 선점 스케줄링 기법은 긴급을 요하는 실시간 처리에 적합하다.
㉯ 선점 스케줄링 기법은 막대한 오버 헤드를 초래할 수 있다.
㉰ 비선점 스케줄링 기법은 모든 프로세스 관리에 불공정하다.
㉱ 비선점 스케줄링 기법은 응답 시간 예측이 쉽다.
24. 선점형(preemptive) 스케줄링 기법에 해당하는 것은?
㉮ FIFO(first-in-first-out)스케줄링
㉯ SJF(shortest-job-first) 스케줄링
㉰ HRN(Highest response-ratio next) 스케줄링
㉱ Round-Robin 스케줄링
25. 다음 중 우선순위 스케줄링에서 무한 대기를 해결하기 위해 제안된 방법은?
㉮ 에이징(aging)기법
㉯ 바인딩(binding)기법
㉰ 교체(replacement)기법
㉱ 페이징(paging)기법
연습문제
26. 다음 중 선점 스케줄링 방식으로 바르게 짝지어진 것은?
㉮ SRT와 SJF 스케줄링
㉯ SRT와 RR 스케줄링
㉰ HRN와 FCFS 스케줄링
㉱ FCFS와 SRT 스케줄링
27. 작업 스케줄러에서 시간을 적게 사용하는 작업을 먼저 처리하는 스케줄링은?
㉮ SJF 스케줄링
㉯ FIFO 스케줄링
㉰ RR 스케줄링
㉱ LIFO 스케줄링
28. 프로세스 스케줄링 기법 중 평균대기 시간을 최소화 할 수 있는 알고리즘은?
㉮ FCFS 스케줄링
㉯ SJF 스케줄링
㉰ RR 스케줄링
㉱ Priority 스케줄링
29. 각 프로세스에게 차례로 시간 할당량(time slice) 동안 처리기를 차지하도록 하는
스케줄링은?
㉮ 라운드 로빈 스케줄링
㉯ SJF 스케줄링
㉰ FCFS 스케줄링
㉱ 우선순위 스케줄링
연습문제
30. 스케줄링 방식 중 라운드 로빈 방식에서 시간 간격을 무한히 크게
하면 어떤 방식과 동일한가?
㉮ LIFO 방식
㉯ FIFO 방식
㉰ HRN 방식
㉱ Multi-level queue 방식
31. 스케줄링 기법 중 대화형 시스템에 부적당한 것은?
㉮ SJF(Shortest Job First)
㉯ RR(Round Robin)
㉰ SRT(Shortest Remaining Time)
㉱ 다단계 피드백 큐
32. 다음 스케줄링 방식 중 시분할 시스템에서 가장 적절한 방식은?
㉮ SJF 스케줄링
㉯ SRT 스케줄링
㉰ FCFS 스케줄링
㉱ RR 스케줄링
연습문제
34. Round-Robin 스케줄링에 대한 설명으로 틀린 것은?
㉮ 프로세스들이 배당 시간 내에 작업을 완료되지 못하면 폐기된다.
㉯ 프로세스들이 중앙 처리 장치에서 시간 양에 제한을 받는다.
㉰ 시분할 시스템에 효과적이다.
㉱ 선점형(Preemptive)기법이다.
35. 다음과 같은 CPU 버스트 시간을 가진 프로세스들의 집합이 있을 때, SJF
스케줄링을 이용 시 평균대기 시간은 얼마인가?
㉮ 9㎳
프로세스
버스트 시간(밀리초)
P1
P2
P3
P4
5
7
6
2
㉯ 5.5㎳
㉰ 6㎳
㉱ 7㎳
연습문제
36. 아래의 a, b, c, d 작업 중 운영체제가 CPU 스케줄링 기법으로 HRN 방식을
구현했을 때 가장 우선순위가 높은 것은?
㉮a
a
b
c
d
대기 시간
10초
5초
3초
5초
서비스 시간
5초
5초
12초
3초
㉯b
㉰c
㉱d
37. 다음과 같은 순서대로 도착하고, CPU 버스트 시간을 가진
프로세스들이라고 할 때, FCFS 스케줄링을 이용하였을 경우의 평균대기
시간은 얼마인가?
㉮ 8.75㎳
프로세스
버스트 시간(ms)
P1
P2
P3
P4
5
7
6
2
㉯ 9.5㎳
㉰ 10.00㎳
㉱ 11.5㎳
연습문제
37. 한 작업이 CPU를 할당받으면 그 작업이 종료될 때까지 다른 작업에게
CPU를 할당하지 못하는 스케줄링 기법에 해당하는 것으로만 짝지어진 것은?
㉮ SRT, SJF
㉯ SRT, HRN
㉰ Round Robin, FIFO
㉱ FIFO, SJF
38. 다단계 피드백 큐 스케줄링 알고리즘 정의 요소에 해당되지 않는 것은?
㉮ 큐의 수
㉯ 각 큐에 대한 스케줄링 알고리즘
㉰ 고정된 큐에서 실행
㉱ 프로세스들이 어느 큐에 들어 갈 것인가를 결정하는 방법
39. 공유 자원을 어느 시점에서 단지 한 개의 프로세스만 사용할 수 있는 것을
무엇이라 하는가?
㉮ 상호 배제(mutual exclusion) ㉯ 임계 구역(critical section)
㉰ 교착 상태(deadlock)
㉱ 분산 로딩(scatter loading)
연습문제
40. 다음 중 자원을 공유하려고 할 때 발생되는 문제점이 아닌 것은?
㉮ 교착 상태 문제
㉯ 상호 배제 문제
㉰ 자원 결정 문제
㉱ 동기화 문제
41. 여러 사람이 동시에 사용하는 컴퓨터에서의 문제점이라고 볼 수 없는 것은?
㉮ 상호 배제 문제
㉯ 동기화 문제
㉰ 결정성 문제
㉱ 버퍼링 문제
42. 다음 중 직접 통신에 대한 설명으로 옳지 않은 것은?
㉮ 연결은 두 프로세스 사이에 명시적으로 지정되어야 한다.
㉯ 연결은 단방향 일수도 있고 양방향 일수도 있다.
㉰ 통신하는 프로세스들의 각 쌍 사이에는 정확하게 하나의 연결이 존재해야
한다.
㉱ 통신을 원하는 각 프로세스의 쌍들 사이에 연결이 자동적으로 이루어진다.
연습문제
43. 다음 중 간접 통신에 대한 설명으로 옳지 않은 것은?
㉮ 메시지들은 우편함을 통하여 송수신 된다.
㉯ 우편함은 자신의 고유한 이름을 갖는다.
㉰ 두 프로세스들은 우편함의 공유를 통해서만 통신이 가능하다.
㉱ 각 프로세스는 하나의 우편함만을 갖는다.
44. 다음 중 공유 변수를 이용한 동기화 문제 해결 방법이 아닌 것은?
㉮ busy-waiting
㉯ semaphore
㉰ wait-for graph
㉱ monitor
45. 공유 변수를 이용한 동기화 문제 해결 방법 중의 하나인 모니터 방법과
관련이 없는 것은?
㉮ 모니터에서 동시 처리되고 있는 프로세스들로부터 공유 데이터를
은폐시킨다.
㉯ 오직 한 프로세스만 모니터 내부의 프로시저를 호출한다.
㉰ 오직 한 개의 프로세스만이 모니터 내부에 놓여 공유 자료를 이용할 수
있다.
㉱ 모니터는 상호 배제 문제를 해결해주고 동기화 문제는 프로그래머가
해결해 준다.
연습문제
46. 다음 중 모니터에 대한 설명으로 옳지 않은 것은?
㉮ 모니터 내의 자원을 액세스하려는 프로세스는 해당 모니터의 진입부를
호출한다.
㉯ 모니터 외부의 프로세스는 모니터 내부의 데이터를 직접 액세스할 수
없다.
㉰ 한 순간에 하나 이상의 프로세스가 모니터 내에 진입 가능하다.
㉱ 모니터에서 사용되는 연산은 wait와 signal이다.
47. 순차적으로만 사용할 수 있는 공유 자원 혹은 공유 자원 그룹을 할당하는데
사용되며, 데이터 및 프로시저를 포함하는 병행성 구조 (concurrent
construct)는?
㉮ 버퍼(buffer)
㉯ 채널(channel)
㉰ 모니터(monitor)
㉱ 세마포어(semaphore)
48. 다음 중 프로세스간의 동기화를 다루기 위해 사용되는 것과 관계없는 것은?
㉮ Test-and-Set 명령
㉯ semaphore
㉰ timer-interrupt
㉱ critical section
연습문제
49. 병행 프로세스(concurrent process)하에서 발생하는 제어 문제가 아닌 것은?
㉮ 결정성(Determinacy)
㉯ 교착 상태(deadlock)
㉰ 상호 배제(mutual exclusion) ㉱ 단편화(Fragmentation)
50. 다음 중 상호 배제 문제를 해결하기 위한 알고리즘은?
㉮ daisy chine
㉯ semaphore
㉰ FIFO
㉱ stack
51. 상호 배제 문제 해결을 위해 Dijkstra에 의해 도입된 개념은?
㉮ deadlock ㉯ join
㉰ DMA
㉱ semaphore
52. 세마포어(semaphore)에 관한 설명 중 틀린 것은?
㉮ 상호 배제 문제를 해결하기 위하여 사용된다.
㉯ 정수의 변수로 양의 값만을 가진다.
㉰ 여러 개의 프로세스가 동시에 그 값을 수정하지 못한다.
㉱ 세마포어에 대한 연산을 처리 도중에 인터럽트 되어서는 안 된다.
연습문제
53. 임계 구역 문제 해결 시 3가지 요건에 충족하지 않은 것은?
㉮ 상호 배제(mutual exclusion) ㉯ 진행(progress)
㉰ 한계 대기(bounded waiting) ㉱ 블록킹(blocking)
54. 다음의 내용은 교착상태 예방에 관한 것인데 어떤 조건을 방지하기 위한
것인가?
각 프로세스는 한꺼번에 자기에게 필요한 자원을 모두 요구해야
하며 이 요구가 만족되지 않으면 작업을 진행할 수 없다.
㉮ 비 중단(no preemption)조건 ㉯ 대기(hold & wait)조건
㉰ 환형 대기(circular wait)조건 ㉱ 상호 배제(mutual exclusion)조건
55. 다음 중 교착 상태 발생의 필수 조건이 아닌 것은?
㉮ 중단 조건(preemption)
㉯ 환형 대기(circular wait)
㉰ 대기(hold and wait)조건
㉱ 상호 배제(mutual exclusion)
연습문제
56. 다음 중 나머지 셋과 관계가 적은 것은?
㉮ 상호 배제(mutual exclusion)
㉯ 환형 대기(circular wait)
㉰ 무한 연기(indefinite postponement)
㉱ 비 중단(no preemption)
57. 다음 중 교착 상태 해결 방법을 올바르게 연결한 것은?
① 교착 상태 예방
② 교착 상태 회피
③ 교착 상태 발견
④ 교착 상태 회복
㉠ 교착 상태의 발생 가능성 사전 제거
㉡ 교착 상태가 일어났는지를 판단
㉢ 교착 상태 발생 가능성을 인정
㉣ 시스템으로부터 교착 상태 제거
㉮ ①-㉠ ②-㉡ ③-㉣ ④-㉢
㉰ ①-㉠ ②-㉢ ③-㉡ ④-㉣
㉯ ①-㉠ ②-㉣ ③-㉢ ④-㉡
㉱ ①-㉠ ②-㉣ ③-㉡ ④-㉢
연습문제
58. 다음 중 교착 상태에 대한 설명으로서 가장 적합한 것은?
㉮ 두 개 이상의 프로세스가 서로 상대방이 사용하고 있는 자원의 사용을
위하여 무한정 기다리는 현상
㉯ 두 개 이상의 프로세스가 어느 자원을 동시에 사용할 수 없고, 단지
하나의 프로세스만이 사용하여야 하는 현상
㉰ 다른 프로세스가 사용하는 자원을 사용도중 빼앗아서 사용하는 현상
㉱ 두개이상의 프로세스가 자원의 사용을 위하여 서로 경쟁하는 현상
59. 다음 중 교착 상태 회복을 위하여 자원 선점을 사용할 경우에 고려하지
않아도 되는 것은?
㉮ 희생자 선택
㉯ 복귀 ㉰ 비결정성
㉱ 기아 상태
60. 은행원 알고리즘(banker's algorithm)과 가장 관계가 깊은 것은?
㉮ 교착 상태 지연
㉯ 교착 상태 발견
㉰ 교착 상태 회피
㉱ 교착 상태 회복
연습문제
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
32
33
34
35
36
37
38
39
40
㉮
㉱
㉮
㉯
㉮
㉮
㉱
㉰
㉮
㉰
41
42
43
44
45
46
47
48
49
50
㉱
㉯
㉱
㉰
㉱
㉰
㉰
㉰
㉱
㉯
51
52
53
54
55
56
57
58
59
60
㉱
㉯
㉱
㉯
㉮
㉰
㉰
㉮
㉰
㉰