안녕하세요 성조입니다.
교재 내용을 개인이 학습을 통해서 작성한 해설지이므로 오답이 있을 수 있습니다.
제 지식이 부족할 수 있으나 문제 이해에 도움이 되셨으면 좋겠습니다.
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
'개인 학습용 해설 > 그림으로 배우는 운영체제' 카테고리의 다른 글
그림으로 배우는 구조와 원리 운영체제 개정3판 연습문제 4장 객관식 개인 해설 (3) | 2020.10.17 |
---|---|
그림으로 배우는 구조와 원리 운영체제 개정3판 연습문제 3장 객관식 개인해설 (3) | 2020.10.16 |
그림으로 배우는 구조와 원리 운영체제 개정3판 연습문제 2장 객관식 개인해설 (7) | 2020.10.16 |
그림으로 배우는 구조와 원리 운영체제 개정 3판 연습문제 1장 개인해설 (3) | 2020.10.15 |