1. 프로세스 & 쓰레드

프로세스의 특징
  • 자원 소유권 - 프로세스는 자신의 이미지를 위한 가상주소 공간을 포함
  • 스케줄링/실행 - 프로세스 수행은 하나 이상의 프로그램을 통과하는 수행 경로를 따른다. 한 프로세스는 다른 프로세스들과 번갈아 가면서(interleave) 수행될 수 있다. 따라서 프로세스는 프로세스 수행 상태와 디스패칭 우선순위를 가지며, 운영체제에 의해 스케줄되고 디스패치되는 개체

 쓰레드
  • 프로세스 안에서의 실행 단위
  • 실행 상태를 가진다

 CPU 디스패칭 단위는 쓰레드 또는 경량 프로세스라고 하며,
자원 소유권의 단위는 프로세스 또는 task라고 한다.





  2. Resources of Process and Thread - 프로세스와 쓰레드의 자원
 
  • 프로세스는 Code, Data, Stack, Memory for registers context(program counter, register etc.)로 구성된다
  • 쓰레드는 Stack, Memory for registers context(program counter, register etc.):thread control blcok로 구성된다
  • 프로세스 내의 모든 쓰레드들은 그 프로세스의 상태와 자원을 공유한다. 



     <한 프로세스 내부 모습(각 쓰레드는 각각 registers, stack을 가지며 code,data,files를 공유)>



   3. 멀티쓰레딩 (Multithreading)
  • 멀티쓰레딩이란 운영체제가, 하나의 프로세스 내에서 수행되는 여러 개의 쓰레드를 지원하는 기능이다.
  • 멀티쓰레딩에서 프로세스는 동시에 실행될 수 있는 쓰레드로 분할된다.
  • 단일 쓰레드 OS로는 MS-DOS, Original UNIX가 있다.
  • 멀티 쓰레드 OS로는 Windows, Solaris, Linux. Mach 등이 있다.

                                < Multithreading Example on a Uniprocessor >





   4. 멀티쓰레딩의 이점
  • 새로운 프로세스를 생성하는 시간보다, 기존 프로세스 내에서 새로운 쓰레드를 생성하는 시간이 더 짧다.
  • 프로세스 종료시간보다 쓰레드 종료시간이 더 짧다.
  • 프로세스들 간 교환보다 같은 프로세스에 있는 두 쓰레드 간 교환이 효율적이다.
  • 프로세스 간의 통신보다 한 프로세스 내에서 쓰레드 간의 통신이 더 빠르다. 
            -> 같은 프로세스 내에 쓰레드들은 메모리와 파일을 공유하기 때문에 커널을 호출하지 않는다.
            -> 프로세스 간 통신 (IPC) : 커널 호출 시간 필요 = 큰 오버헤드 필요




    5. Thread 유형
  • 사용자 수준 쓰레드
             - 쓰레드 관리와 관계된 모든 일은 응용이 수행하며 커널은 쓰레드의 존재를 알지 못한다.
             - 사용자 영역에서 쓰레드 연산을 수행
             - 사용자 수준 쓰레드의 장점
                    + 스케줄링 결정이나 프로시저 동기화를 위해 커널을 호출하지 않으므로 오버헤드가 적다.
                    + 운영체제에서 쓰레드를 지원 할 필요가 없으므로,어느 OS든 실행 할 수 있다. (즉, 이식성이 높다)
                    + 기존 OS 스케줄링을 방해하지 않고 응용에 맞춘 사용자 수준 쓰레드 스케줄링 알고리즘이 가능하다.
             - 사용자 수준 쓰레드의 단점
                    + 한 개의 사용자 수준 쓰레드가 블록되면, 그 프로세스의 모든 쓰레드가 블록된다.
                    
             
                                           

  • 커널 수준 쓰레드
            - 쓰레드 관리와 관련된 모든 작업이 커널에 의해 이루어진다. 
            - 응용 영역에는 쓰레드 관리를 위한 코드가 없고, 단순히 커널 쓰레드 기능에 대한 API가 있다. (ex. Windows, Linux)
            - 커널 수준 쓰레드의 장점
                + 커널이 각 쓰레드를 개별적으로 관리 할 수 있다.
                + 응용 프로그램은 입출력 작업이 끝날 때까지 다른 쓰레드를 사용해 다른 작업을 할 수 있다.
            - 커널 수준 쓰레드의 단점
                + 스케줄링과 동기화를 위해 커널을 호출해야하므로 오버헤드가 증가된다.
                + 이식성이 떨어진다.
                + 시스템이 달라지면 해당 운영체제에서 제공하는 쓰레드 API를 사용해 프로그램을 수정해야 한다.

                                           





+ Recent posts