Software Courses/Operating System

Thread 관리

김 정 환 2020. 11. 30. 22:59
반응형

 

Thread

    - 자원을 공유하지만 각자의 제어 요소를 갖는 것

    - 자원을 공유하기 때문에 작업을 효율적으로 진행

    - Processor 활용의 기본 단위로 CPU 병렬처리가 가능

 

 

 

Thread 구성요소

    - Thread ID

    - Register set(PC, SP 등)

    - Stack(i.e. local data)

 

 

 

 

 

 

Thread의 장점

    - 사용자 응답성 : 일부 Thread의 처리가 지연되어도, 다른 Thread는 작업을 계속 처리

    - 자원 공유 : 효율성 증가

    - 경제성 : Context Switch가 발생하지 않아서 비용 경제적

    - 멀티 프로세서 활용 : CPU 병렬처리 가능으로 작업 효율 증대

 

 

 

 

예시

FPS게임을 한다고 하자. 모니터와 마우스, 키보드 I/O가 존재한다. 이 3개는 Thread가 하나씩 담당하고 있다. 만약에 화면에 적이 나타나면, 키보드로 캐릭터를 움직이고, 마우스로 사격을 동시에 할 수 있다.

그러나 Thread가 하나일 경우는? 모니터에 적이 나타나면, 키보드로 캐릭터를 움직일 때 화면이 멈출 것이다. 왜냐하면, I/O interrupt받기 때문이다. 그리고 마우스로 사격을 한다. 그러면 키보드 입력도 멈춘다. 순차적으로 멈추면서 진행되기 때문에 동시에 상황을 처리할 수 없다.

 

 

 

Thread 구현

사용자 수준 Thread

    - 사용자 영역의 Thread 라이브러리로 구현

    - Kernel은 Thread의 존재를 모름

    - 장점 : Kernel의 개입을 받지 않아 overhead가 적음

    - 단점 : Kernel은 프로세스 단위로 자원을 할당하기 때문에 사용자 수준의 Thread 중 한 개가 block되면, 사용자 수준의 모든 Thread가 대기 상태로 전환

 

출처 : 운영체제, 한빛미디어

위 이미지 설명

    - 프로세스가 생성되면 Kernel은 제어를 위한 Thread를 생성

    - 프로세스 내부에 라이브러리를 통해서 여러 Thread를 사용

    - 다대일 매핑

 

 

 

 

커널 수준 Thread

    - OS(Kernel)가 직접 관리

    - 단점 : 커널 영역에서 Thread의 생성, 관리를 수행하기 때문에 Context Switching 등 부하가 큼

              프로세스 수준 부하 > 커널 수준 부하 > 사용자 수준 부하

    - 장점 : 커널이 각 Thread를 개별적으로 관리하여 프로세스 내 Thread들이 병행 수행 가능

               하나의 Thread가 block 되어도, 다른 Thread는 계속 작업 가능

출처 : 운영체제, 한빛미디어

위 이미지 설명

    - 사용자 수준에서 Thread를 만들면, Kernel 수준에서도 Thread를 생성

    - Thread은 Kernel이 관리

    - 일대일 매핑

    

 

 

혼합형 Thread

    - 다대일 모형과 일대일 모형을 합친 n:m모형 (n>m)

    - 사용자는 원하는 수 만큼 Thread 사용

    - Kernel Thread는 자신에게 할당된 하나의 사용자 Thread가 block상태가 되어도 다른 Thread 수행 가능

 

 

 

본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
반응형

'Software Courses > Operating System' 카테고리의 다른 글

Process Synchronization and Mutual Exclusion  (0) 2020.12.02
Process Scheduling  (0) 2020.12.01
Process 관리  (0) 2020.11.30
OS Overview 2  (0) 2020.11.29
OS Overview 1  (0) 2020.11.29