대학 수강과목/운영체제

[OS]운영체제론 연습문제 7장 - 문제 및 해설

흐이애 2016. 11. 8. 17:08

[OS]운영체제론 연습문제 7장 - 문제 및 해설


01 교착 상태가 무엇인지 정의하라.

교착 상태란 둘 이상의 프로세스가 각자가 가지고 있던 자원을 보유한 채로 외부적 조치가 없는 한 영원히 그 상태에서 기다리고 있는 상황을 말한다.

교수님 답

교착태(데락, deadlock)는 하나 상의 프로스들이 결코 어날 없는 이벤트 기다 황을 의미다. 즉, 상태는 세스 A가 사용 원을 기다리는 프로 B 사용 자원을 다리는 로세스 A 황에서 생한.


04 무기한 연기는 무엇인가? 교착 상태와 어떻게 다른가? 무기한 연기와 교착 상태의 유사점은 무엇인가?

무기한 연기란 운영체제가 많은 프로세스들의 다양한 요청을 처리해 주다가 몇몇 프로세스가 매우 오랜 시간 동안 서비스를 받지 못하는 경우가 발생하는 상황을 말한다.

무기한 연기 상태인 사용자는 오랜 기간 서비스를 할당 받지 못한다. 이들의 사용자들은 마치 자신들이 교착 상태에 빠진 것과 유사한 기분을 느끼게 될 것이다. 그러나 실제로 교착 상태와는 달리 오랜 시간 후에라도 무한 대기로부터 벗어나 서비스를 받을 수 있다.

교수님 답

연기 : 벤트의 어떤 순서가 프로스(혹은 스레)의 행을 하지 하게 드는 경우 하는 상태다. 기의 주된 선입 식보다 우선 순위 요구 서비하는데 다. 우선 구조는 높은 우선 위의 프로 혹은 스레 보다 낮은 로세(혹은 레드) 적으로 중지키게 으로써 낮은 로세(혹은 드)서는 연기가 기게 .

상태 차이점 : 연기 있는 세스는 수행을 게 되 프로스들이 교착태가 해당 프로스들은 결코 행을 개할 없다.(최소한 시스내의 희생 않고 수행 재개 가능)

상태와 사점 : 행을 이상 는다는 유사. 지연 시간이 어질 자, 오퍼이터 프로스가 착상태 혹은 기한 상태에 있는 하지 다.


08 프로세스 n개가 있는 시스템에서 이 프로세스들의 부분 집합인 m이 현재 무기한 연기 상태에 빠져있다. 시스템에서 어떤 프로세스가 무기한 연기되고 있는지 파악할 수 있는가?

프로세스들은 무기한 연기 상태일 수도 있지만 아닐 수도 있다. 프로세스들은 곧 발생할 이벤트를 대기하고 있을 수도 있고, 무한 루프에 빠진 것일 수도 있고, 곧 끝날 복잡한 계산을 하고 있을 수도 있다. 그저 ‘기능이 멈춘’ 것처럼 보일 수도 있다는 것이다. 따라서 시스템에서는 어떤 프로세스가 무기한 연기되고 있는지 장담할 수 없다.

교수님 답

일반 서는 악할 없다. 이는 로그 수행 경로를 예측할 이다. 어떤 세스 경우 기한 시작 능적인 서는 프로램에서 지연을 키는지 시스에서 시키지를 없기 문이다.


09 철학자들의 만찬 문제 : 모니터를 사용해 철학자들의 행동을 시뮬레이션하는 병행 프로그램을 작성하라. 프로그램은 교착 상태나 무기한 연기의 위험이 없어야 한다. 상호 배제를 보장해야 한다.

(a)  

pickUpLeftFork();             //모든 철학자가 동시에 왼쪽 포크를 집어들면 다음 줄로 넘어갈 수 없기 때문에 이 줄에서 교착상태가 일어나게 된다.

pickUpRightFork();    

eat();

putDownLeftFork();

putDownRightFork();

(b)  

pickUpBothForksAtOnce();   //특정 철학자만 계속하여 포크를 집을 기회를 획득하여, 기회를 획득하지 못하는 철학자가 발생할 수 있다.

eat();

pickDownBothForksAtOnce();

(c)  

while(notHoldingBothForks)

{

        pickUpLeftFork();

        if(rightForkNotAvailable)     putDownLeftFork();   //모든 철학자가 동시에 왼쪽 포크를 들고 다시 내려놓기만을 반복하는 livelock상태가 발생할 수 있다.

        else pickUpRightFork();

}

eat();

putDownLeftFork();

putDownRightFork();


(d)  

if(philosopherID%2==0){     //짝수 번째 철학자들은 왼쪽 포크부터 집어든다.

        pickUpLeftFork();     

pickUpRightFork();    

eat();

putDownLeftFork();

putDownRightFork();

} else {               //홀수 번째 철학자들은 오른쪽 포크부터 집어든다.

pickUpRightFork();    

pickUpLeftFork();      

eat();

putDownRightFork();

putDownLeftFork();

        }

이와 같은 경우, 먼저 포크를 집은 사람이 식사를 하고 있을 때, 그 양 옆의 사람 중 한 명은 포크 하나를 든 상태로 대기하다가 식사를 하던 옆 사람이 포크를 내려놓으면 바로 그 포크를 집어들 수 있다. 따라서 비슷한 횟수로 식사에 성공하게 되므로 위의 문제들을 모두 해결한 알고리즘이라고 할 수 있다.

교수님 답

 (철학자의 만찬)

a. 용은 철학들이 먹는 것을 하지만 착상 들어다. 써, 모든 자들이 그들의 왼쪽 크들을 먼저 는다고 가정자. 학자 포크를 고자 가능한 른쪽 없게 . 교착태이.

b. 이 내용은 “줄다리기” 해결책의 하나이다.  2명의 철학자가 그들의 포크를 집고 먹고 내려놓고 하는 동작을 무한정 반복한다. 이 방법은 다른 철학자들을 굶게 한다. 즉, 다른 철학자들 관점에서 보면 무기한 연기를 하게 만든다.

c. 내용은 혹 가다가 동작지만 너무 자주 (즉, 학자 굶게 드는 원인)를 발생다. 5 학자 기화 크를 집어 들고 오른쪽 것을 보면 왼쪽 내려놓는 가정다. 순서는 .

d. 순환 대기가 결코 생하지 않기 문에 착상 다. 학자들이 원탁에 앉아 대기는 모든 학자가 교착태에 어가면 발생다. 짝수 호의 학자 왼쪽 크를 먼저 집어 홀수 호의 자들은 오른 포크를 먼저 집어 문에 먼저 같은 크를 집어 고자 하는 쌍의 자들만 . 이러한 자들 중 떠한 사람도 람을 리는 동안 지고 있는 없기 문에 러한 좌석 구성서는 대기는 결코 하지 그래서 교착 발생 는다. 러나 특정 자가 포크를 지고 연기가 가능 있다.


11 교착 상태가 발생하기 위한 네 가지 필요 조건을 기술하라. 각 조건이 왜 필요한지 직관적으로 생각나는 이유들에 대해 논하라.

상호 배제 조건 : 두 개 이상의 프로세스가 동시에 임계영역에 접근하는 경우 공유자원의 혼란이 올 수 있기 때문이다.

대기 조건 또는 보유 후 대기 조건 : 프로세스들이 서로 자신의 자원은 내놓지 않고 동시에 서로의 자원을 획득하기 위해 대기하는 경우 어느 프로세스도 결코 원하는 자원을 얻을 수 없기 때문이다.

비선점 조건 : 프로세스는 자원을 무한정 사용하거나 기아상태의 프로세스가 발생할 수 있기 때문이다.

순환 대기 조건 : 순환 고리형이 아니라면 이 프로세스들은 언젠간 자원을 획득하게 될 수도 있다. 고리형이어야 프로세스들이 원하는 자원을 획득할 수 없는 교착 상태가 된다.

교수님 답

4가지 필요 : 호배조건, 대기 , 조건, 순환 조건    상호제조건 : 하나의 프로스에 적으로 된다. 때문에 다른 로세 강제으로 시키게 방식이 들어.

대기 : 적으로 원을 획득한 로세 당자 보유한 채 다른 얻으려고 기할 .

비선점 조건 : 일단 로세 확보 해당 로세 모두 용할 때까지 스템이 로세 제어를 앗을 .

순환 건: 2 이상 세스가 고리를 성하고 있는 당된. 로세들이 고리 있는 다음 로세 점유 있는 대기다.


19 교착 상태 회피가 교착 상태 방지보다 직관적으로 호소력이 있는 이유는 무엇인가?

교착 상태 방지를 사용하면 자원 활용도가 떨어지는 결과를 초래한다. 그러나 교착 상태 회피는 교착 상태의 가능성이 어느 정도 있을 수 있지만 교착 상태가 발생하려는 조짐이 보일 때마다 조심스럽게 비켜서는 전략을 취한다. 따라서 교착 상태도 피하고 자원 활용도도 높일 수 있는 것이다.

교수님 답

착상태 피는 사용을 효율으로 것으로 보인. 역시 착상회피가 많은 사용 허용다.


24 자원을 그룹으로 할당하면 은행원 알고리즘이 여전히 제대로 동작할 수 있는가? 답을 상세히 설명하라.

자원을 그룹으로 할당해도 가용 자원 수가 현재 요청 수 보다 많고, 그로 인하여 프로세스가 정상적으로 수행되며, 반납된 자원을 이용하여 다른 프로세스들을 모두 수행할 수 있다면 제대로 동작할 수 있을 것이다.

교수님 답

능하. 템의 태에 존적다. 표가 순히 내내 스템의 하게 하는 이다. 분한 원들이 구를 어주고 스템의 안전 만큼 하면 알고즘은 한다.


25 은행원 알고리즘을 사용해 교착 상태 회피 방법을 사용하는 시스템이 다섯 개 프로세스(1, 2, 3, 4, 5 프로세스)와 네 가지 유형(A, B, C, D)의 자원을 포함하고 있다. 각 유형에는 여러 자원이 있다. 표[7-7]과 [표7-8]에 나타낸 이 시스템은 안전 상태인가? 답을 설명하라. 안전 상태면 모든 프로세스가 성공적으로 실행을 마칠 수 있는 방법을 보여라. 불안전 상태면 교착 상태가 어떻게 발생할 수 있는지 보여라.

프로세스

현재 대여 수

최대 필요 수

현재 요청 수

 

A B C D

A B C D

A B C D

1

1 0 2 0

3 2 4 2

2 2 2 2

2

0 3 1 2

3 5 1 2

3 2 0 0

3

2 4 5 1

2 7 7 5

0 3 2 4

4

3 0 0 6

5 5 0 8

2 5 0 2

5

4 2 1 3

6 2 1 4

2 0 0 1

총 자원 수

가용 자원 수

A  B  C  D

A B C D

13 13 9 13

3 4 0 1

자원을 할당할

프로세스 번호

수행 전

가용 자원 수

수행 후

반납된 자원 수

수행 후

총 가용 자원 수

해결된 

프로세스 번호

5

3 4 0 1

4 2 1 3

7 6 1 4

5

2

7 6 1 4

0 3 1 2

7 9 2 6

5, 2

1

7 9 2 6

1 0 2 0

8 9 4 6

5, 2, 1

3

8 9 4 6

2 4 5 1

10 13 9 7

5, 2, 1, 3

4

10 13 9 7

3 0 0 6

13 13 9 13

5, 2, 1, 3, 4


위와 같이 모든 프로세스의 실행을 성공적으로 마칠 수 있으므로 해당 알고리즘은 안전 상태이다.

교수님 답

자원의 구가 유용한 원의 거나 같으면 세스의 행은 마치고 원을 한다. 세스 2 혹은 로세스 5는 태에서 마칠 다. 다음의 이벤트 하자: 프로 2가 치면 용한 자원의 상태는 (3,7,1,3)이 . 프로 5 치게 되면 용한 상태는 (7,9,2,6)이 다. 에서 남아 로세들은 마칠 있고 원들을 납한. 결국 모든 세스 수행은 나게 . 따라서 태는 안전 태이.


28 교착 상태가 발생할 가능성이 있는 시스템에서 어떤 경우에 교착 상태 탐지 알고리즘을 사용하겠는가?

교착 상태 탐지 : 교착 상태가 발생할 수 있는 시스템에서 사용한다. 교착 상태 탐지의 목적은 교착 상태 발생 여부와 관련 프로세스 및 자원을 밝히는 것이다. 교착 상태 발생을 허용하면서 교착 상태의 위치를 추적하고 제거한다.

교착 상태 탐지 알고리즘은 대체로 교착 상태 성립을 위한 다른 조건들을 충족함을 전제로 할 때 ‘순환 대기 존재 여부’에 초점을 맞춘다. 즉 ‘순환 대기’의 경우에 해당 알고리즘을 사용한다.

교수님 답

착상 의심될 사용다. 세스 잠시 하는 들어가지 하거나 초기 감지 기적 동작고자 된다.

34 자원이 고장나서 사용이 어려워지면, 일반적으로 교착 상태와 무기한 연기의 위험이 증가하는가, 감소하는가? 답을 설명하라.

교착 상태의 위험성은 증가한다. 자원이 고장나지 않았으면 제대로 수행될 수 있었을 프로세스의 자원요청이 좌절될 수 있기 때문이다. 하지만 무기한 연기의 위험과는 관계가 없다. 자원이 줄어듦으로 인하여 프로세스가 대기하는 시간만 늘어날 뿐, 그 위험성이 증가하지는 않는다.

교수님 답

러한 상태와 기한 기의 성을 가시킬 있다. 행원 고리즘 착회피 구조 이전의 안전 태를 안전 만드는 효과를 가져올 있다. 즉, 세스가 용한 자원이 어지기 로세 행을 끝낼 없는 태가 .

반응형