CafeM0ca

[OS] 공룡책 챕터4 연습문제 본문

OS/공룡책

[OS] 공룡책 챕터4 연습문제

M0ca 2021. 1. 22. 20:55
반응형

챕터4 연습문제

1번 : 멀티스레딩이 싱글스레딩 보다 성능이 좋은 프로그래밍 예시 3가지를 드시오

  1. 독립된 일들을 각각 스레드에게 맡길 때 task의 밸런스를 맞출 수 있고 데이터의 의존성을 식별할 수 있다.(network I/O, UI 렌더링 같은 일을 동시에 처리할 때) (테스크 병렬)
  2. 응답성, 자원 공유, 경제성, 규모성
  3. data 단에서 데이터를 나눠서 스레드로 처리할 때 (데이터 병렬)

2번 : 암달의 법칙을 사용해서 어플리케이션이 60% 병렬 컴포넌트를 갖고 있을 떄 (a)2개의 프로세스 코어를 사용할 때와 (b)4개의 프로세르 코어를 사용할 때 값을 계산하세요.

 

(a) 1 / ((1 - 60%) + 0.6 / 2) = 1 / (0.4 + 0.3) = 1 / (0.7) = 10 / 7 = 1.43 = 43%의 성능향상

(b) 1 / (0.4 + 0.15) = 1 / 0.55 = 1.82 = 82% 성능향상

3번 : Section 4.1에 설명된 멀티스레드 웹 서버는 task 병렬인가 data 병렬인가?

web page, image, video, sound 단위로 되어 있으니 task 병렬이다.

4번 : user-level 스레드와 Kernel-level 스레드의 차이점은? 어떤 상황에서 한 유형이 다른 유형보다 낫습니까?

답은 아래 3개

a: user-level 스레드는 커널에 대해 알 수없는 것에 반해 커널에서만 커널 스레드를 알 수 있다.

b: 시스템이 다대일이나 다대다 모델을 메핑하여 사용할 때, 사용자 스레드는 스레드 라이브러리에 의해 스케쥴되고, 커널 스레드는 커널에 의해 스케쥴된다.

c: 커널 스레드는 프로세스로부터 분리되어있다. 반면에 모든 사용자 스레드는 프로세스에 포함되어 있다. 커널 스레드는 유저 스레드보다 비용이 비싸다. 커널 스레드는 무조건 커널 자료구조로 표현되어야한다.

5번 : 커널에서 커널스레드가 어떻게 context-switch 하는지 설명하세요.

커널 스레드가 switch 되기전에 스레드의 CPU 레지스터를 저장하고 새로운 스레드가 스케쥴링 되면서 레지스터를 복구한다.

6번 : 스레드가 생성될 때 어떤 리소스가 사용되는가? 프로세스가 생성될 때 어떤 자원이 사용되는가? 두개의 차이점은?

스레드가 생성될 때는 프로세스가 갖고 있는 스레드 자원과 메모리 자원(stack, heap 등)이 사용되고

프로세스가 생성될 때는 CPU 코어 자원이 사용된다. PCB도 포함.

7번 : 다대다 모델을 사용하고 운영체제가 user-level 스레드를 kernel-level 스레드에 매핑하고 매핑이 LWP를 통해 완료된다고 가정하정하자. 시스템이 개발자에게 실시간 스레드를 실시간 시스템에서 만들 수 있게 허용하자. 실시간 스레드를 LWP에 bind해야하는지 설명하시오.

스레드를 사용려면 LWP에 붙여한다.

근데 리얼타임에서는 I/O나 뮤텍스같은게 들어오면 스레드가 멈추게 되어 LWP를 나중에 다시 붙여야 한다.

문제는 LWP 스레드를 붙일 때 비용을 무시할 수 없다.

따라서 LWP에 스레드를 바인딩한다면 비용을 아낄 수 있다.

8번: 멀티스레딩이 필요없는 경우

context-switch의 비용이 더 큰 경우.

9번: 싱글프로세스의 싱글 스레드 솔루션보단 멀티스레드 다중 커널스레드 솔루션이 어느 경우에서 성능이 좋은가?

작업을 분할할 수 있을 때

10번: 멀티스레딩 프로세스 프로그램에서 스레드끼리 뭘 공유하는가?

a. Register values

b. Heap memory

c. Global variables

d. stack memory

b, c

반응형

11번: 멀티프로세스 멀티스레딩이 싱글프로세스 멀티스레딩보다 더 나은 작업을 수행할 수 있는가? 예시를 드시오.

답: x

멀티프로세스든 싱글프로세스든 단일 프로세스에 한하여 하나의 프로세스밖에 점유할 수 없기 때문에 더 나은 작업을 수행할 수 없다.

12번: 구글 브라우저의 chrome tab은 멀티 프로세스로 돌리는데 이를 멀티 쓰레딩으로 바꾸면 이점이 있는가?

없다.

13번: 병렬은 아닌데 동시성을 가질 수 있는가?

가능하다

14번: 암달의 문제

넘어갑니다.

15번: 다음의 문제가 task parallelism인지 data parallelism인지 구분하세오.

  • using a separate thread to generate a thumbnail for each photo in a collection
    • data paralleism
  • Transposing a matrix in parallel
    • data paralleism
  • A networked application where one thread reads from the network and another writes to the network
    • task paralleism
  • the fork-join array summation application described in section 4.5.2
    • task paralleism
  • The grand central dispatch system
    • task paralleism
반응형
Comments