운영체제 4장 스레드와 병행성 - 연습문제 풀이
공룡책 (Operating System Concepts) 10th
개인적인 생각이므로 틀린 답변일 수 있습니다.
4.1 다중 스레딩이 단일 스레드 솔루션보다 더 나은 성능을 제공하는 세 가지 프로그래밍 예시를 제시하라.
- 병렬로 나눠서 동일한 작업을 동시에 처리하기에 용이할 경우 (ex. 웹 서버, 연산처리)
- 병렬로 나눠서 여러 작업을 처리하기에 용이할 경우 (ex. 화면 gui)
4.2 Amdahl의 법칙을 이용하여 (a) 2개의 처리 코어와 (b) 4개의 처리 코어에 대해 60%의 병렬 구성요소를 가진 응용 프로그램의 속도 향상 이득을 계산하라.
a: 1 / (0.4 + 0.6 / 2) = 1.42857143 배
b: 1 / (0.4 + 0.6 / 4) = 1.81818182 배
4.3 4.1절에 설명된 다중 스레드 웹 서버는 작업 병렬 처리인가 혹은 데이터 병렬 처리인가?
처음에는 작업 병렬 처리 라고 생각했으나 데이터 병렬 처리 라고 함. 그 이유는 서버는 동일한 작업을 하고 데이터만 바뀌는 것이기 때문.
4.4 사용자 수준 스레드와 커널 수준 스레드의 2가지 차이점은 무엇인가? 한 유형의 스레드가 다른 유형의 스레드보다 유리한 상황은 언제인가?
a. 사용자 수준 스레드 : 어플리케이션 레벨에서 관리 -> 운영체제의 스케쥴러에서 관리하지 않음. 커널 수준 스레드 : 운영체제 커널 레벨에서 관리 -> 운영체제의 스케쥴러에서 관리함.
b. 일반적으로 커널 스레드가 유지 관리 비용이 많이 드나 IO 작업이 많을 경우에는 커널 스레드가 유리해질 수도 있다고 함.
4.5 커널 수준 스레드 사이에서 문맥 교환을 위해 커널이 해야 할 일을 설명하라.
전환되는 스레드의 레지스터 값을 저장하고 새 스레드의 레지스터를 복원해야 함.
4.6 스레드가 생성될 때 어떤 자원이 사용되는가? 프로세스가 생성될 때 사용되는 자원과의 차이점은 무엇인가?
프로세스를 생성할때는 PCB를 메모리에 할당해야 하는데 스레드는 프로세스보다 작기 때문에 그보다 적은 리소스를 사용함.
4.7 다대다 모델을 사용하여 운영체제가 사용자 수준 스레드를 커널에 매핑하고 매핑은 LWP를 사용한다고 가정하자. 또한 개발자는 실시간 시스템에서 사용할 실시간 스레드를 만들 수 있다고 하자. 실시간 스레드를 LWP에 바인딩해야 하는가?
LWP는 운영체제가 스케줄링하는 최소 실행 단위 이며,
실시간 스레드를 LWP에 바인딩함으로써 스레드가 우선적으로 실행될 수 있도록 보장할 수 있다고 함.