MultiThreading


  • Server Architecture
    - iterative server : 서버가 깨어나서 Message Queue의 내용을 처리하고 처리가 완료되면 다시 Queue의 내용을 확인하여 처리
        *장점 : 단순하고 관리가 쉽다.
        *단점 : 하나의 Process를 사용하기 떄문에 처리속도가 느리다.
    - Concurrent server : Message Queue에서 Request의 처리를 서버가 직접하는것이 아니라 별도의 Worker Process를 두어 처리하게 하는 방식
        *장점 : 다수의 Process를 이용해 처리속도가 빠르다.
        *단점 : 여러 Process를 생산 및 관리해야 되기 때문에 복잡하고 시스템에 부담이 된다.


  • MultiThreading의 목적

- Concurrency(동시 처리)는 높이면서 Execution Unit을 생성하거나 수행시키는데 드는 부담을 줄임
- Massively Parallel Scientific Programming ( 대용량 병렬 프로그래밍 )을 할 때 발생하는 오버헤드를 줄이기 위해


  • Process와 Thread의 관계
    - Process는 Context와 Thread of Control로 이루어져있다.
    - 이때 Process안에 Thread가 여러개 있는 것이 MultiThread이다.

  • MultiThread구현에 필요한 것들
    - 하나의 Process가 여러개의 Thread를 갖게 되므로 Process는 여러개의 Stack을 갖게된다.
    - 여러개의 Thread를 관리하기 위해 Thread ID를 할당 한다.
    - Thread 마다의 정보를 갖고있을 Thread control Block(TCB)을 생성한다.

  • Task
    - Design Time Process
    - Process에게 부여된 자원(Resource)

  • MultiThread의 구현
    1. User-Level 구현
        1. Stack 구현
        2. TCB를 Thread 마다 생성 (User Level에 위치)
        3. Thread 간의 Switching을 위해 Scheduler 구현
            - user Level에 Scheduler 함수 생성
            - 여러 Scheduler함수를 모아 Thread Library로 묶음
            *Thread Library : Thread의 생성 및 소멸, Thread Context저장, Thread간 접근 가능
       

- 문제점 -
    1. 한 Thread가 Blocking System call을 호출하는 경우 해당 process의 모든 Thread가 Block된다.
    2. OS가 Thread에게 직접 Interrupt를 전달할 수 없기 때문에 Preemptive Schedling을 할 수 없다.

2. Kernel-Level구현
    - Kernel의 System call을 이용하여 모든 처리를 한다.
    -장점 : User-Level의 단점을 모드 보완한다.
    - 단점 : Kernel단의 수행시간이 증가되면서 추가적인 오버헤드가 발생한다.



3. Combined User-Level / KernelLevel 구현
    -
 대부분 User-Level에서 처리
    - Interrupt가 왔을 시 Interrupt를 User-Level Scheduler에게 전달
    - Blocking System call 발생 시 해당 Thread를 중지시키고 새로운 Kernel Stack을 할당하여 User Process에 붙여 Return시킨다.


  • POSIX Pthread API
    - 다양한 unix계열 운영체제들의 API를 표준화 하기위해 IEEE가 정의한 인터페이스


  • Thread life Cycle



'프로그래밍 > 운영체제' 카테고리의 다른 글

Process Synchronization  (0) 2016.10.20
CPU Scheduling  (0) 2016.10.15
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09

+ Recent posts