개인 학습용 해설/그림으로 배우는 운영체제

[OS] 그림으로 배우는 구조와 원리 운영체제 개정3판 연습문제 5장 객관식 개인 해설

SeongJo 2022. 4. 18. 23:39
반응형

 

 

 

 



안녕하세요 성조입니다.
교재 내용을 개인이 학습을 통해서 작성한 해설지이므로 오답이 있을 수 있습니다.
제 지식이 부족할 수 있으나 문제 이해에 도움이 되셨으면 좋겠습니다.


 

1. 프로세스가 자원을 사용하는 정상적인 작동 순서는?

① 요청 - 사용 - 해제
② 요청 - 해제 - 사용
③ 사용 - 요청 - 해제
④ 해제 - 요청 - 사용

[ 정답 : 1번 ]

해설
- 프로세스 자원을 사용하기 위해서는 자원에 대해서 요청을 먼저 해야 한다. -> 3, 4번이 오답이 된다.
- 사용도 안 했는데 반납 후 사용은 말이 안 되므로 2번 해제 사용은 오답이 된다.

1번이 정답이 된다.



본인은 다음과 같이도 개인적인 설명을 덧붙이고 싶다.

학교 도서관에서 원하는 책이 없을 때 학교에 요청 후 책이 도서관에 구비되면 사용하기 위해서 대여로 상태를 변경하고 사용 후에는 책을 반납 처리 과정을 통해서 대여 해제로 변경한다.

 

2. 공유 자원을 어느 시점에서 프로세스 하나에만 사용할 수 있도록 하며, 다른 프로세스가 공유 자원에 접근하지 못하도록 막는 것은?

① mutual exclusion (상호 배제)
② critical section (임계 구역)
③ deadlock (교착 상태)
④ scatter loading (분산 적재)

[ 정답 : 1번 ]

해설

상호 배제는 한 개의 프로세스만 사용할 수 있도록 만든다.

 

3. 교착 상태(deadlock)는 하나 이상의 프로세스가 더 이상 계속할 수 없는 어떤 특정 사건을 기다리고 있는 상태를 말한다. 여기서 특정 사건의 의미로 가장 적당한 것은?

① 자원의 할당과 해제
② 자원의 요구
③ 무한 연기
④ 자원의 점유 및 대기(보류)

[ 정답 : 1번 ]

해설

두 개의 해설로 예시를 들 수 있을 것 같다.


첫번 째 190 page의 2번 본문 첫줄을 읽어보면 답을 알 수 있다.


두번 째 교착 상태의 정의는 "두 개 이상의 작업이 존재하는 경우 서로 작업이 끝나기만 무작정 기다리고 있기 때문에 아무것도 완료되지 않은 상태를 교착 상태라 가리킨다."라는 정의를 내릴 수 있으며 정의로 정답을 예측할 수 있다.

 

4. 교착 상태 발생의 필요조건이 아닌 것은?

① 상호배제
② 순환 대기
③ 점유와 대기
④ 자원의 선점

[ 정답 : 4번 ]

해설

상호배제, 순환 대기, 점유와 대기는 교착 상태(deadlock)를 발생하기 좋은 조건으로 만들어 준다.
자원의 선점은 우선순위를 통해서 교착 상태를 예방하는 방법이다.

 

5. 운영체제에서 교착 상태가 발생하는 조건이 아닌 것은?

① 한 번에 하나의 프로세스만 어떤 자원을 사용할 수 있다.
② 프로세스는 다른 자원이 할당되기를 기다리는 동안 이미 확보한 자원을 계속 보유하고 있다.
③ 자원을 보유하고 있는 프로세서에서 다른 프로세스가 강제로 그 자원을 빼앗을 수 있다.
④ 자원들을 요구하는 프로세스와 그 자원을 사용 중인 프로세스의 관계를 방향성 그래프로 그리면 닫힌 환형(closed chain)이 된다.

[ 정답 : 3번 ]

해설
1, 2, 4번의 경우 갖고 대기를 한다.
하지만 3번의 경우 '강제로 그 자원을 배앗을 수 있다.' = kill을 하여 자원을 반환받을 수 있기 때문에 교착 상태가 발생하는 조건이 아닌 교착 상태 해결에 대한 설명이다.

 

6. 교착 상태의 해결 방법 중 점유 및 대기 조건 방지, 비선점 조건 방지, 순환 대기 조건 방지와 가장 밀접한 관계가 있는 것은?

① prevention(예방)
② avoidance(회피)
③ detection(탐지)
④ recovery(회복)

[ 정답 : 1번 ]

해설
점유 및 대기 조건 방지, 비선점 조건 방지, 순환 대기 조건 방지 총 3가지 방식은 교착 상태를 예방(prevention)하기 위한 방법이다.

 

7. 교착 상태의 해결 방법 중 교착 상태의 발생 가능성을 배제하지 않고 이를 적절히 피해 나가는 방법은?

① prevention(예방)
② detection(탐지)
③ avoidance(회피)
④ recovery(회복)

[ 정답 : 3번 ]

해설
'발생 가능성을 배제하지 않고' = 회피(avoidance)를 의미하게 된다.

 

8. 교착 상태의 해결 방법 중 시스템에 교착 상태가 발생했는지 점검하고 교착 상태에 있는 프로세스와 자원을 발견하는 것으로 자원 할당 그래프 등을 사용하는 방법은?

① prevention(예방)
② avoidance(회피)
③ recovery(회복)
④ detection(탐지)

[ 정답 : 4번 ]

해설

'자원을 발견하는 것으로' = 탐지가 된다.

 

9. 교착 상태의 해결 방법 중 다음 사항과 관련 있는 것은?

- mutual exclusion 방지
- hold and wait 방지
- non-preemption 방지
- cicular wait 방지

① recovery(회복)
② detection(탐지)
③ avoidance(회피)
④ prevention(예방)

[ 정답 : 4번]

해설

4개의 방지가 예방에 들어가는 것을 알고 있는 것으로 해답을 추출하는 것이 가장 올바르다. 하지만 '방지'라는 키워드로 예방이라는 단어를 추측할 수 있는 방법도 존재한다.

 

10. 교착 상태의 해결 방법 중 자원의 낭비가 가장 심한 것으로 알려진 방법은?

① 교착 상태의 예방
② 교착 상태의 회피
③ 교착 상태의 탐지
④ 교착 상태의 회복

[ 정답 : 1번 ]

해설

예방이 자원의 낭비가 가장 심한 방법이다.

 

11. 교착 상태를 예방하는 방법으로 가장 거리가 것은?

① 점유와 대기 조건 방지
② 불완전 상태 조건 방지
③ 순환 대기 조건 방지
④ 비선점 조건 방지

[ 정답 : 2번 ]

해설

예방(prevention)하는 방법으로 불완전 상태 조건 방지라는 것은 존재하지 않는다.

 

12. 교착 상태 예방 방법으로 적절하지 않은 것은?

① 상호배제 조건 방지
② 점유 및 대기 조건 방지
③ 비선점 조건 방지
④ 순환 대기 조건 방지

[ 정답 : 1번 ]

해설

상호배제 조건 방지는 예방의 방법에 존재하지 않는다.
예방(prevention)에 있는 것은 자원의 상호배제 조건 방지이다.

 

13. 교착 상태의 해결 방안 중 은행가 알고리즘(Banker's algorithm)과 관계되는 것은?

① recovery
② detection
③ prevention
④ avoidance

[ 정답 : 4번 ]

해설

은행가 알고리즘은 회피(avoidance)에 속한다.

 

14. 교착 상태의 해결 방안 중 다음 사항에 해당하는 것은?

점유 및 대기 부정, 비선점 부정, 원형 대기 부정

① prevention
② avoidance
③ detection
④ recovery

[ 정답 : 1번 ]

해설

3가지는 조건 방지 예방을 통한 해결이 가능하다.

 

15. 다음은 교착 상태 발생 조건 중 어떤 조건을 방지하는 것인가?

· 프로세스를 수행하기 전에 필요한 모든 자원을 할당해 준다.
· 자원을 점유하지 않은 상태에서만 자원을 요구하도록 한다.

① mutual exclusion (상호 배제)
② hold and wait (점유 대기)
③ non-preemption (비선점 스케줄링)
④ circular wait (순환 대기)

[ 정답 : 2번 ]

해설

'점유하지 않은 상태에서' -> 점유 대기를 의미하는 2번이 정답이 된다.

 

16. 교착 상태의 예방에 대한 설명 중 옳지 않은 것은?

① 교착 상태의 예방은 자원의 이용률은 낮지만 널리 사용하는 방법이다.
② 교착 상태의 예방은 시스템의 운영 상황을 봐 가면서 교착 상태 가능성을 피해 가는 것이다.
③ 교착 상태의 예방은 가장 명료한 해결책이지만 프로세스가 실행하기 전에 모든 자원을 배당시키는 등 엄격한 자원 배당과 해제 정책을 사용해야 한다.
④ 교착 상태 예방은 상호배제, 점유 및 대기, 비선점, 순환 대기 중 어느 하나라도 발생하지 않게 함으로써 가능하다.

[ 정답 : 2번 ]

해설

운영 상황을 봐 가면서 교착 상태 가능성을 피해 가는 것은 예방이 아닌 회피에 대한 설명이다.



17. 교착 상태에 대한 설명으로 틀린 것은?

① 교착 상태 발생의 필요충분조건은 상호배제, 점유 및 대기, 환형 대기, 비선점 조건이다.
② 교착 상태란 2개 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유한 자원을 동시에 사용할 수 있는 현상을 의미한다.
③ 교착 상태의 회피(avoidance)는 교착 상태에 빠질 가능성을 인정하고 적절히 이를 회피해 가는 방법이다.
④ 교착 상태의 회복(recovery)은 교착 상태에 빠져 있는 프로세스를 중단시켜 시스템이 정상적으로 동작할 수 있도록 하는 방법이다.

[ 정답 : 2번 ]

해설

동시에 사용할 수 없는 현상을 의미한다.

 


18. 교착 상태는 순환 대기(circular wait)조건을 방지하여 해결할 수 있다. 이에 대한 설명 중 옳지 않은 것은?

① 모든 자원을 선형 순서(linear order)로 분류한다.
② 프로세스는 자신이 가지고 있는 자원보다 앞의 순서에 있는 자원들만 요청하게 한다.
③ 프로세스는 자신이 가지고 있는 자원보다 뒤의 순서에 있는 자원들만 요청하게 한다.
④ 프로세스는 자신이 가지고 있는 자원의 앞 또는 뒤의 순서에 있는 자원들을 자유롭게 요청하게 한다.

[ 정답 : 4번 ]

해설

순환 대기는 한쪽 방향으로 순환하기 때문에 앞 또는 뒤의 순서를 자유롭게 왔다 갔다 할 수 없다.



19. 교착 상태와 무한 대기에 대한 설명으로 옳지 않은 것은?

① 컴퓨터 시스템에서 무한 대기와 교착 상태가 발생하는 것은 모두 바람직하지 않다.
② 무한 대기 문제는 aging 방법으로 해결할 수 있다.
③ 은행원 알고리즘은 교착 상태를 회피(avoidance)하는 알고리즘이다.
④ 교착 상태 회복(recovery) 방법으로는 점유 및 대기 부정, 비선점 부정, 순환(환형) 대기 부정 등이 있다.

[ 정답 : 4번]

해설

4번 설명은 회복에 대한 설명이 아닌 예방에 대한 설명이다.



20. 교착 상태를 회피하는 데 사용하는 은행가 알고리즘에 대한 사항으로 옳지 않은 것은?

① 은행가 알고리즘을 적용하려면 자원의 양이 일정해야 한다.
② 은행가 알고리즘을 적용하려면 사용자 수가 일정해야 한다.
③ 은행가 알고리즘은 모든 요구를 유한 시간 안에 할당하는 것을 보장한다.
④ 은행가 알고리즘은 대화식 시스템(interactive-system)에 적용할 수 있다.

[ 정답 : 3번 ]

해설

은행가 알고리즘은 모든 요구를 유한 시간 안에 보장하지 않는다.
또한 210 page를 참조하면 자원의 양이 일정, 사용자 수의 일정, 대화식에 적용할 수 있다는 것을 알 수 있다.



21. 교착 상태 해결 방안으로 발생 가능성을 인정하고 교착 상태가 발생하려고 할 때 교착 상태 가능성을 피해 가는 방법은?

① 예방(prevention)
② 탐지(detection)
③ 회피(avoidance)
④ 복구(recovery)

[ 정답 : 3번 ]

해설

발생하려는 것을 피해 가는 것은 회피에 대한 설명이 된다.



22. 교착 상태의 해결 방법 중 회피(avoidance)방법과 밀접한 관계가 있는 것은?

① 점유 및 대기 방지
② 비선점 방지
③ 순환(환형) 대기 방지
④ 은행원 알고리즘 사용

[ 정답 : 4번 ]

해설

4번 은행원 알고리즘이 회피에 대한 방법과 밀접한 관계가 있다.
추가로 1, 2, 3번은 예방에 대한 관계이다.



23. 은행가 알고리즘에 대한 설명으로 옳지 않은 것은?

① Dijkstra가 제안했다.
② 교착 상태 해결 방법 중 예방(prevention)방법이다.
③ 자원의 양과 사용자(프로세스) 수가 일정해야 한다.
④ 안전 상태와 불안전 상태라는 두 가지 상태가 존재한다.

[ 정답 : 2번 ]

해설

은행가 알고리즘은 예방이 아닌 회피이다.



24. 은행가 알고리즘은 다음 교착 상태 관련 연구 분야 중 어떤 분야에 속하는가?

① 교착 상태의 예방
② 교착 상태의 회피
③ 교착 상태의 발견
④ 교착 상태의 복구

[ 정답 : 2번 ]

해설

은행가 알고리즘은 교착 상태의 회피와 관련있다.



25. 교착 상태와 은행가 알고리즘의 불안전 상태(unsafe state)에 대한 설명 중 옳은 것은?

① 교착 상태는 불안전 상태에 속한다.
② 불안전 상태의 모든 시스템은 궁극적으로 교착 상태에 빠지게 된다.
③ 불안전 상태는 교착 상태에 속한다.
④ 교착 상태와 불안전 상태는 서로 무관하다.

[ 정답 : 1번 ]

해설

교착 상태란 deadlock이라 하여 두 개 이상의 작업들이 서로 상대방의 작업이 완료되기 전까지 기다리기만 하고 있기 때문에 서로 미루면서 완료되지 못하고 기다리는 상태를 의미한다. 이때 작업이 정확하게 처리되지 않았으므로 불안전한 상태에 속하게 된다.



26. 교착 상태의 회복 방법에 대한 설명으로 옳지 않은 것은?

① 교착 상태에 있는 모든 프로세스를 중단시킨다.
② 교착 상태가 없어질 때까지 교착 상태에 포함된 자원을 하나씩 비선점시킨다.
③ 교착 상태가 없어질 때까지 교착 상태에 포함된 프로세스를 하나씩 종료시킨다.
④ 교착 상태 회복 방법은 시스템 안에 존재하는 교착 상태를 제거하는데 사용한다.

[ 정답 : 2번 ]

해설

1, 3, 4번의 경우 교착 상태가 문제가 있는 경우 제거(kill)하면서 자원을 돌려 받지만 2번의 선점으로 구분하는 것이 아닌 비선점은 올바르지 못한 회복 방법이다.



27. 교착 상태(deadlock)의 해결 방법 중 회피(avoidance) 방법에 대한 옳은 내용 모두를 나열한 것은?

ㄱ. 교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법이다.
ㄴ. 교착 상태 발생의 네 가지 조건 중에서 상호배제를 제외한 어느 하나를 제거함으로써 수행된다.
ㄷ. 주로 은행가 알고리즘을 사용한다.
ㄹ. 교착 상태가 발생할 가능성을 완전히 배제하지 않는다.

① ㄱ, ㄷ
② ㄴ, ㄷ
③ ㄱ, ㄴ, ㄷ
④ ㄷ, ㄹ

[ 정답 : 4번 ]

해설

정답이유
ㄷ - 은행가 알고리즘은 회피 방법으로 언급된다.
ㄹ - 교착 상태가 발생할 가능성을 완전히 배제하지는 않는다. 완전히 배제하기 위해서는 회피가 아닌 교착 상태가 발생하지 않도록 예방을 해야한다.

오답이유
ㄱ - 사전에 시스템을 제어하는 방법의 설명은 예방이다.
ㄴ - 제거에 대한 부분은 탐지에 대한 설명이다.



28. 자원이 총 12개이고 현재 할당된 자원이 10개(P1:2, P2:4, P3:4)일 때 다음 시스템을 안전 상태가 되도록 하는데 필요한 A, B의 요구량으로 적합한 것은?

 

프로세스 Allocation(현재 할당량) Max(최대 요구량) Need(추가 요구량)
P1 2 5 3
P2 4 A B
P3 4 8 4

① 7, 3
② 6, 2
③ 7, 4
④ 6, 3

[ 정답 : 2번 ]

해설

현재 지문은 총 자원은 12개이며 할당된 자원은 10개이다.
= 현재는 P1:P2:P3를 2:4:4로 총 10개의 자원을 할당했다.

은행가 알고리즘 이후 안전 알고리즘을 통하여 안전 상태를 만듦에 있어서 필요한 A, B에 대한 요구량을 찾는 문제이다.
다른 추가 설명이 필요 없다면 하단에 파란색 한 줄로 바로 이동하여 해설을 확인하자.


은행가 알고리즘 풀이에 필요한 정의

Available : 사용 가능한 자원수(사용 가능량)
Max : 최대 요청량(최대 요구량)
Allocation : 자원의 수(현재 할당량)
Need : 자원 요청(추가 요구량)


은행가 알고리즘 단계별 실행
1. Request <= Need 이면 2단계로 이동한다.
필요(Need)로 하는 값 보다 요청(Request)으로 하는 값이 더 큰 경우에는 요청치를 초과한 것이므로 오류 상태가 되면서 대기한다.

2. Request <= Available(사용 가능한 자원수) 이면 3단계로 이동한다.
요청사용 가능한 자원수를 초과하는 경우 자원이 부족하기 때문에 대기를 진행한다.

ex) 은행에서 고객이 대출 가능한 금액은 딱 1억을 받을 수 있는 상황이라 가정한다.
은행에서 1억을 1원 이상으로 초과하여 대출금을 신청한 경우 대출 가능한 1억원을 초과하여 신청했기 때문에 은행에서는 대출을 해줄 수 없다는 통보를 하게 되며 고객은 대출(자원)을 사용할 수 없게 된다.


3. 프로세스의 자원 값들을 다음의 공식을 통해서 통과와 대기를 구분한다.
다음의 공식을 만족하지 못한 경우 대기 / 다음의 공식을 만족한 경우 통과.
통과시 안전 알고리즘으로 이동하여 추가적으로 문제를 풀이한다.

Available(사용 가능한 자원수) = Available - Request
Allocation(현재 할당량) = Allocation + Request
Need(필요량) = Need - Request



안전 알고리즘
1. Work = Available, Finish[i] = false (단 i는 1, 2, 3, ... , n과 같이 존재하는 배열을 모두 초기화한다.)

2. 모든 배열을 검사해서 (Finish == false) And (Work >= Need)를 만족하는 경우 3번으로 이동한다. 만족하지 않는 경우 4번으로 이동하여 진행한다. Finish가 false가 아닌 true이며, Need가 Work보다 큰 경우 4번으로 통과시킬 수 있게 된다.

3. 3번은 2번에서 걸러진 값들을 true 값으로 만들기 위함이다.
Work = Work + Allocation

Finish = true
모든 배열을 위의 공식과 같이 반복 후 2번으로 이동한다.


4. 모든 배열에 대하여 Finish가 하나라도 false가 존재하면 불안전 상태이며 Finish의 값이 모두 true값이 나오면 시스템은 안정 상태라 판단할 수 있다.



은행가와 안전 알고리즘을 통한 문제 해결 방식의 설명 끝과 해당 28번 문제 풀이 시작

Available = 총 자원 수(12)

현재 할당된 값은 총 10의 값이 할당됐다.

총 자원 수 - 할당된 값 = Request
-> 12-10 = 2가 되며 필요로 하는 자원(Request)이 2가 된다.

필요로 하는 자원이 2라는 말은 은행 대출에 비교하여 우선 예를 들면 다음과 같다.

ex) 은행에는 대출이 가능한 돈이 3억이 있고 이 돈을 3명에게 각각 1억씩 대출할 수 있다면 한 사람이 2억 나머지 두 사람이 5천만 원씩 대출받는 것은 가능하다. 하지만 한 사람이 2억 나머지 사람들이 각각 1억씩 받는 것은 은행에 돈이 없기 때문에 불가능하다.

필요로 하는 자원이 2라는 얘기는 2(Request)를 초과하여 가져갈 수 없다는 얘기가 된다.

총 자원보다 필요로 하는 자원이 더 많은지에 대하여 확인한다.


1단계) 은행가 알고리즘의 1단계 공식이다.
P1 -> if (Request <= Need) -> ?
P2 -> if (Request <= Need) -> ?
P3 -> if (Request <= Need) -> ?

모두 true가 만족해야 2단계로 진행한다. Request에 2를 대입하여 문제를 풀어본다.

P1 -> if (Request <= Need) -> ?
P1 -> 2(Request) <= 3(Need) -> true

P2 -> if (Request <= Need) -> ?
P2 -> 2(Request) <= 2(Need) -> true

P3 -> if (Request <= Need) -> ?
P3 -> 2(Request) <= 4(Need) -> true

위 3가지 조건이 모두 만족했으므로 문제가 성립됐기 때문에 B의 Need 값은 2가 된다.
사실 이 부분에서 Need가 2값을 갖는 것으로 Max 값이 6이고 정답은 2번이 되는 것을 알 수 있다.



다음 설명은 완전하게 풀이하기 위해서 추가 작성을 진행한다.

2단계) 은행가 알고리즘의 2단계로 넘어간다.
P1 -> if (Need <= Available) -> ?
P2 -> if (Need <= Available) -> ?
P3 -> if (Need <= Available) -> ?

P1 -> if (3 <= 2) -> false
P2 -> if (2 <= 2) -> true
P3 -> if (4 <= 2) -> false

은행가 알고리즘 2단계에서는 만족하는 자원을 기준으로 할달할 수 있다.
P2가 만족하므로 P2에 할당하고 3단계로 넘어간다.

3단계) 자료 구조들을 재배정 후 안전 알고리즘으로 넘어간다.
Available(사용 가능한 자원 수) = Available - Request
Allocation(현재 할당량) = Allocation + Request
Need(필요량) = Need - Request


위의 공식에 다음의 값을 대입한다.
P1의 값은 Available : 12, Allocation : 2, Max : 5, Need : 3이다.
P2의 값은 Available : 12, Allocation : 4, Max : 6, Need : 2이다.
P3의 값은 Available : 12, Allocation : 4, Max : 8, Need : 4이다.

P1
Available = 12 - 2 = 10
Allocation = 2 + 2 = 4
Need = 3 - 2 = 1

P2
Available = 12 - 2 = 10
Allocation = 4 + 2 = 6
Need = 2 - 2 = 0

P3
Available = 12 - 2 = 10
Allocation = 4 + 2 = 6
Need = 4 - 2 = 2



안전 알고리즘
1단계) Work = Available, Finish[i] =false, i=1, 2, 3, ..., n이다.

P1, P2, P3
Available = 12 - 2 = 10

2단계) false 조건에서 true 조건인지 맞추는 곳
Need <= Work

P1
4<= 10
P2
0<= 10
P3
2<= 10

P1, P2, P3 모두 true이므로 3단계가 아닌 4단계로 이동한다.

4단계) 모든 Finish가 true면 시스템은 안정 상태이다.

P2 -> P3 -> P1안전 순서를 갖는다.





글을 읽어주셔서 감사드립니다.
개인적으로 학습하고 정리한 내용이므로 오답이 있을 수 있습니다.
오타가 있거나 잘못된 내용이 있다면 편하게 댓글 부탁드리겠습니다!
다음 포스팅 때 뵙겠습니다!

참조 주소
https://ko.wikipedia.org/wiki/%EC%83%81%ED%98%B8_%EB%B0%B0%EC%A0%9C

 

상호 배제 - 위키백과, 우리 모두의 백과사전

두 개의 노드 i와 i + 1이 동시에 제거되면 노드 i + 1은 제거되지 않는다. 상호 배제(相互排除, mutual exclusion, Mutex, 뮤텍스)는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해

ko.wikipedia.org

 

반응형