본문 바로가기
운영체제

OPERATING SYSTEM CONCEPTS 에센셜 연습문제 4장 #1

by 핫동경 2022. 4. 24.
반응형

오답이 있을 시 댓글 부탁드리겠습니다

 

[4.1 다중 스레딩이 단일 스레드 해결책보다 더 나은 성능을 제공하는 프로그래밍 예를 두개 제시하시오]

1. 요청이 들어올 때마다 스레드를 생성하는 웹서버

2. 연산같은 작업을 할 때 병렬로 작업할 수 있음


[4.2 사용자 수준 스레드와 커널 수준 스레드의 차이점 2가지를 제시하시오. 어떤 경우에 다른 유형 보다 성능이 나은지 설명하시오]

1. 쓰레드와 관련된 모든 행위를 사용자 영역에서 한다. 때문에 커널이 쓰레드의 존재를 알지 못함

2. 사용자 수준 스레드는 스레드를 전환할 때 커널 스케줄러를 호출할 필요가 없기 때문에 오버헤드가 적지만 커널 수준 스레드는 스레드를 전환할 때 커널 스케줄러를 호출해 레지스터 저장 등 많은 작업이 필요하기 때문에 오버헤드가 있다.

 

사용자 수준 스레드는 스레드 교체 등으로 인한 오버헤드는 없지만 하나의 스레드가 봉쇄당하면 전체 프로세스가 봉쇄된다.

커널 수준 스레드는 커널이 각 스레드를 개별적으로 관리하기 때문에  쓰레드들이 병행 실행될 수 있고 동일한 프로세스의 스레드가 대기 상태가 되어도 다른 스레드들을 실행시킬 수 있다.


[4.3 커널 수준 스레드 간에 문맥 교환이 일어날 때 커널이 수행하는 작업을 설명하시오]

cpu의 레지스터 값을 저장하고 문맥 교환이 일어날 스레드의 cpu레지스터 값을 복원한다.


[4.4 스레드가 생성될 때 사용되는 자원은 무엇인가? 프로세스가 생성될 때 사용되는 자원과는 어떤 차이가 있는가?]

스레드가 생성될 때 레지스터, 스택 등 크기가 작은 자원들이 필요하지만 프로세스를 생성하기 위해서는 스레드보다 더 큰 자원이 필요하다. 프로세스를 생성하기 위해서는 비교적 크기가 큰 PCB(프로세스 제어 블록)이 만들어져야 한다. PCB에는 프로세스 상태, 프로세스 번호, 프로그램 카운터, 레지스터 등 스레드보다 더 큰 자원이 필요하다.


 

반응형

댓글