본문 바로가기

컴퓨터와 보안/OS(운영체제)

william stallings OS(운영체제) Chapter 4 문제풀이

4.1 표 3.5는 쓰레드가 지원되지 않는 운영체제의 프로세스 제어블록에 포함된 전형적 요소들을 보여준다. 멀티쓰레드 시스템을 구현할 경우에, 이들 요소들 중 어떤 것이 쓰레드 제어블록에 포함되어야 하고 어떤 것이 프로세스 제어블록에 포함되어야 하는가?

우선 쓰레드 제어블록에는 프로세스 상태정보, 스케줄링과 상태정보가 포함되어야 하고 나머지는 프로세스 제어블록에 포함되어야 한다.

 

4.2 쓰레드들 사이의 모드 전환이 프로세스들 사이의 모드 전환보다 비용이 더 저렴한 이유를 열거하라.

대부분의 운영체제에서, 독립된 프로세스들 간의 통신에는 보호 및 통신 기법을 제공하기 위해 커널이 개입되어야 한다. 그러나 같은 프로세스 내의 쓰레드들은 메모리 및 파일을 공유하기 때문에, 커널을 호출하지 않고도 서로 통신할 수 있다.

 

4.3 프로세스 개념에 구체화 되어있는, 서로 분리되어 잠재적으로 독립되어 있는 두 가지 특성은 무엇인가?

자원과 제어이다. 이 중 제어 부분만 분리한 실행 단위를 스레드(Thread)라고 한다.

 

4.4 단일 사용자 멀티프로세싱(single-user-multiprocessing)시스템에서 대표적인 쓰레드 사용 예 네 가지를 제시하라.

  • 전면(foreground)와 후면(background) 작업
  • 비동기(asunchronous) 처리
  • 빠른 수행
  • 모듈 프로그램 구조

 

4.5 쓰레드는 프로세스와 어떤 차이가 있는가?

프로세스는 각각 독립된 메모리 영역(code, Data, Stack, Heap의 구조)를 할당받는다. 하지만 쓰레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. 하지만 스레드는 프로세스 내의 주소 공간이나 자원들(힙 공간 등)을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.

 

4.6 멀티프로세스를 대신해 멀티 쓰레딩을 사용하면 무슨 장점이 있는가?

멀티 프로세싱은 OS의 관점에서 여러 개의 프로세스를 효율적으로 운영하기 위해 하드웨어 자원을 사용하는 방법이다. 독립적인 프로세스 덕에 안정성을 가지지만 문맥 교환에 대한 비용이 그만큼 크다.

 

반면 멀티 쓰레딩은 단일 프로세스를 효율적으로 실행시키기 위한 방법이다. 프로세스 내부에서 처리할 작업들을 스레드로 나누어서 병렬적으로 처리되도록 하는 것이다. 멀티쓰레딩의 경우 공유할 수 있는 자원을 공유하는 구조이다 보니 자원의 효율성과 문맥 교환의 효율성이 크지만 단일 스레드의 문제가 프로세스 전체에 영향을 줄 수 있는 치명적인 부분이 있다.

 

4.7 KLT를 사용했을 때의 장점과 단점을 열거하라.

장점으로는 여러 프로세서에게 같은 프로세스 내의 여러 쓰레드를 동시에 스케줄 할 수 있다는 것과 한 프로세스의 쓰레드가 블록되면 커널은 같은 프로세스에서 다른 쓰레드를 스케줄 할 수 있다는 것이다. 또한 커널 루틴 자체가 멀티쓰레드로 구성될 수 있다.

 

단점으로는 같은 프로세스 내의 한 쓰레드에서 다른 쓰레드로 제어를 넘길 때, 커널로의 모드 전환이 필요하다는 것이고 이 과정에서 오버헤드가 일어난다.

 

4.8 Clouds 운영체제의 관점에서 쓰레드의 개념을 설명하라.

Clouds에서 쓰레드는 사용자 관점에서 본 작업단위이다. 프로세스는 프로세스 제어블록을 가지는 가상주소 공간이다. 쓰레드는 생성되자마자 프로세스 내에서 프로그램의 시작점을 호출함으로써 수행을 시작한다. 쓰레드는 한 주소공간에서 다른 주소공간을 이동할 수 있으며, 실제적으로 컴퓨터 경계에 걸쳐 있다. 쓰레드가 이동할 때, 쓰레드는 제어 터미널, 전역 매개변수, 스케줄링 기준과 같은 정보를 가지고 이동해야 한다.