생능출판사 명품 운영체제
본 연습문제들은 작성자 본인이 푼 것이라 틀릴 수 도 있습니다.
p.xxx(해당 페이지에 문제과 관련된 내용이 담겨져 있으므로 책을 보시면 됩니다)
[개념 체크]
1. 여러 스레드가 공유 변수를 접근하려고 경쟁할 때 공유 변수의 값이 훼손되는 상황이 발생할 수 있다. 공유 변수가 훼손되지 않도록 스레드 사이에 공유 변수에 대한 접근 시간과 방법 등을 조절하는 기법을 무엇이라고 하는가?
정답 및 해설)
정답: 1번
해설: p.295
2. 멀티스레드가 동시에 공유 데이터를 접근할 때 데이터가 훼손되지 않도록 막는 기법의 핵심 정책은 무엇인가?
정답 및 해설)
정답: 1번(상호배제)
해설: p.300
상호배제란: 임계구역은 반드시 한 스레드만 배타적 독점적으로 실행하도록 관리되어야하는 정책이다.
즉 하나의 스레드가 임계구역에 들어가있게 되면 다른 스레드는 임계구역에 들어올 수 없으므로 데이터의 훼손 가능성을 제거한다.
3. 다음은 무엇에 대한 정의인가?
다수의 스레드로부터 공유 데이터의 훼손을 막기 위해 임계구역이 오직 한 스레드만 배타적 독점적으로 사용하도록 관리하는 기술
정답: 1번(상호배제)
해설: p.300
여기서 인터럽트 금지란 스레드 1이 CPU에게 할당을 받아서 작업 중이면, 스레드 2는 CPU에게 할당을 못 받는다. 그렇게 되면 상호배제를 보장한다. 위 작업의 단점이라면 스레드 2의 유휴시간이 늘어나 전체적인 시스템 저하가 발생한다.
4. 원자명령(atomic instruction)이란?
정답: 1번(CPU 명령)
해설: p.305
원자명령이란 상호배제를 위해 만들어진 CPU 명령이다.
5. Test and Set Lock 혹은 TSL 명령에 대한 설명이 틀린 것은?
정답: 4번(스핀락)
해설: p.309
6. 다음 원자명령에 대한 설명으로 옳은 것은?
TSL ax, lock
정답: 4번(스핀락)
해설: p.308
C언어를 이용한 원자명령 설명
// 문제 발생 코드
int lock = 0;
lock = 1;
// 원자명령
int lock = 1;
위 코드에서 스레드 1이 lock까지만 읽고 컨텍스트 스위칭을 발생했을 때 스레드 2는 lock = 1까지 읽고 임계구역에 들어갔다고 가정을 한다. 하지만 스레드 1는 lock = 1로 되고 임계구역에 진입을 하면 안되지만 스레드 1은 lock = 0으로 알고 있어서 임계구역에 들어가 상호배제에 어긋나게 된다. 그래서 두 개의 명령을 하나로 작업한다.
7. 원자명령과 가장 거리가 먼 것은?
정답: 4번
해설: p.305
1번: p.309, 2번: p.311, 3번: p.309
8. 임계구역에 대한 설명으로 틀린 것은?
정답: 4번
해설: 못찾음
9. 멀티스레드의 동기화 기법 중 멀티코어 CPU를 가진 현대의 시스템에 적합한 것은?
정답: 2번
해설: p.322
10. 멀티스레드의 동기화 기법 중 요청한 자원을 사용할 수 있을 때 까지 대기하는 큐를 사용하지 않는 방법은?
정답: 2번
해설: p.317
11. 임계구역의 실행 시간이 매우 짧을 경우에 적합한 멀티스레드의 동기화 기법은?
정답: 2번
해설: p.318
12. 커널 코드나 인터럽트 서비스 루틴 등에서 임계 구역에 접근할 때 멀티스레드 동기화를 위해 사용되는 기법은?
정답: 2번
해설: p.322
13. 멀티스레드 동기화 기법 중 오랜 시간 동안 공유 자원을 접근하지 못하는 기아가 발생할 수 있는 것은?
정답: 2번
해설: p.319
14. 멀티스레드의 동기화는 왜 필요한가?
정답: 2번
해설: 동기화란 여러 스레드가 공유 데이터에 접근할 때 자원 훼손을 막는 것을 말한다.
15. 다음 중 CPU 사용 시간을 심하게 낭비하는 것이 아닌 것은?
정답: 2번
해설: p.312
16. 다음 중 동기화가 발생하는 공간에 대한 것 중 옳은 것은?
정답: 3번
해설: p.321
17. 우선순위 역전에 대한 설명 중 틀린 것은?
정답: 4번
해설: 1번: p.330, 2번: p.331, 3번: p.332 4번은 내용이 없음
18. 공유 자원과 가장 거리가 먼 단어는?
정답: 4번
해설: 못참음
19. 생산자 소비자 문제에 대해 잘 설명한 것은?
정답: 1번
해설: p.332
20. 생산자 소비자 문제인 것은 모두 골라라.
정답: 1, 3번
해설: p.332
21. pthread 라이브러리를 이용하여 작성된 다음 4개의 보기에 대해 물음에 답하라. 보기에서 worker() 함수는 스레드가 실행하는 코드이다.
(1) 보기 (1)에서 임계구역의 코드를 적어라.
sum = sum + 10;
(2) worker()를 실행하는 10개의 스레드가 동시에 실행될 때 4개의 보기 중 가장 실행 속도가 느린 코드는? 3번
(3) worker()를 실행하는 10개의 스레드가 동시에 실행될 때 4개의 보기 중 가장 실행 속도가 빠른 코드는? 4번
(4) worker()를 10개의 스레드가 동시에 실행될 때 스레드 동기화가 실패할 가능성이 있는 코드는? 3번
22. 다음은 비디오 플레이어 응용프로그램의 구조를 간략히 묘사한 것이다. 물음에 답하라.
(1) 이 응용프로그램을 개발하기 위해서는 생산자 소비자 문제를 해결해야 한다. 생산자 소비자 문제는 생산자 스레드, 소비자 스레드, 스리고 공유 버퍼로 구성되는데 이들이 각각 그림의 어느 부분에 해당하는지 밝혀라.
생산자 스레드 = 입력스레드
소비자 스레드 = 재생스레드
공유버퍼 = 비디오 버퍼
(2) 이 응용프로그램에서 입력스레드와 재생스레드가 생산자와 소비자로서 비디오를 재생하는 과정을 간단히 설명하라.
입력 스레드는 네트워크에서 프레임을 하나씩 읽어 비디오 버퍼에 저장하며, 이 작업을 반복하고, 재생 스레드는 비디오 버퍼에 저장된 프레임을 순차적으로 읽어 디코딩한 후 디스플레이에 출력하는 작업을 반복합니다.
'개발 서적 > 명품 운영체제' 카테고리의 다른 글
[개발 서적] 명품 운영체제 5장 연습문제 풀이 및 답안 (개념체크) (0) | 2024.11.05 |
---|---|
[개발 서적] 명품 운영체제 4장 연습문제 풀이 및 답안 (개념체크) (0) | 2024.11.04 |
[개발 서적] 명품 운영체제 3장 연습문제 풀이 및 답안 (개념체크) (0) | 2024.11.04 |
[개발 서적] 명품 운영체제 2장 연습문제 풀이 및 답안 (개념체크) (0) | 2024.11.04 |
[개발 서적] 명품 운영체제 1장 연습문제 풀이 및 답안 (개념체크) (0) | 2024.11.04 |