관리 메뉴

Kim's Programming

스레드(Thread) 본문

Computer Theory/Operating System

스레드(Thread)

Programmer. 2017. 6. 22. 23:06

1. 스레드의 개념과 상태 변화


1. 스레드의 개념

프로세스는 자원과 제어로 구성되어 있는데 이 중 제어만 분리한 실행 단위를 스레드하고 한다.


  • 독립적으로 스레드가 갖는 것
    1. 스레드 실행 환경 정보
    2. 지역 데터
    3. 스택

  • (공유하는 것들) = 프로세스의 정보
    1. 코드(Code) 영역
    2. 전역 데이터
    3. 힙(Heap) 영역

스레드 중에서 프로세스의 속성 중 일부가 들어 있는 것을 경량 프로세스(LWP: Light Weight Process)라고 한다. 하나의 프로세스에 스레드가 하나인 전통적인 프로세스를 중량 프로세스(HWP: Heavy Weight Process)라고 한다.


프로레스가 하나인 서로 다른 프로세서에서 프로그램의 다른 부분을 동시에 실행할 수 있는데 스레드를 이용하면 다음 이점이 있다.

    • 사용자 응답성 증가
    • 프로세스의 자원과 메모리 공유 가능
    • 경제성이 좋음
    • 다중처리(멀티 프로세싱)로 성능과 효율 향상


2. 단일 스레드와 다중(멀티) 스레드

* 현대 운영체제는 대부분의 다중 스레드이다

Thread와 자식프로세스를 비교하였을 때 자식프로세스를 생성하는 것 보다 스레드를 생성하는 것이 빠르고, 동일한 프로세스에 있는 스레드간의 교환이나 스레드 종료도 훨씬 빠르다


3. 스레드의 사용 예


단일 사용자 다중 처리 시스템에서는 스레드 한 개로 사용자의 데이터를 읽어 들여 메뉴를 표시하고, 다른 스레드로는 사용자 명령을 실행하도록 하여 이전 명령을 완료하기 전에 다음 명령을 신속하게 준비해서 속도를 향상 시킬 수 있다. 


대표적인 예: 프로세스 - 웹 브라우저, 스레드 - 탭


4. 스레드의 상태 변화



스레드는 프로세서를 함께 사용하고 항상 하나만 실행한다. 또 한 프로세스에 있는 스레드는 순차적으로 실행하고 해당 스레드의 정보를 저장하는 레지스터와 스텍이 있다. 보통 프로세스를 생성하면 해당 프로세스의 스레드도 함께 생성한다. 단 스레드 생성에서는 운영체제가 부모 프로세스와 공유할 자원을 초기화 할 피요가 없다.(스레드가 자식 프로세스보다 시간을 줄일 수 있는 이유)


5. 스레드의 제어 블록


프로세스가 프로세스 제어블록에 정보를 저장하듯이 스레드도 스레드 제어 블록(TCB: Thread Control Block)에 정보를 저장한다. 그런데 프로세스는 스레드를 한 개 이상 가질 수 있으므로 결국 프로세스 제어 블록은 스레드 제어 블록의 리스트를 가리킨다.


      • TCB의 내용
        1. 실행 상태
        2. 스케중링 정보
        3. 계정 정보
        4. 스케중링 큐용 다양한 포인터
        5. 프로세스 제어 블록(PCB)을 포함하는 포인터


2. 스레드의 개념과 상태 변화


스레드는 운영체제에 따라 다양하게 구현할 수 있는데, 대부분 다음 세 가지 형태로 구현한다. 사용자 수준 스레드는 스레드 라이브러리를 이용하여 작동하는 형태이고, 커널 수준 스레드는 커널(운영체제)에서 지원하는 형태이다. 그리고 이 둘을 혼합한 형태가 혼합형 쓰레디이다.


    • 사용자 수준 스레드(User-Level Thread) :다대일(n : 1)매핑
    • 커널 수준 스레드(Kernel-Level Thread) :다대일(1 : 1)매핑
    • 혼합형 스레드(multiplexed thread : 다대다(n : m)매핑

1. 사용자 수준 스레드

스레드와 관련된 모든 행위를 사용자 영역에서 하므로 커널이 스레드의 존재를 모른다.
-> 다수의 사용자 영역 스레드가 커널 영역 스레드 한 개에 매핑되므로 다대일 스레드 매핑이라고 한다.

      • 장점
        1. 이식성이 높음
        2. 어베헤드가 적음
        3. 유연한 스케줄링이 가능

      • 단점
        1. 시스템의 동시성을 지원하지 않음
        2. 화장에 제약이 따름
        3. 스레드 간 보호 불가능


2. 커널 수준 스레드


커널 수준 스레드는 사용자 수준 스레드의 한계를 극복하는 방법으로, 커널이 스레드와 관련된 모든 작업을 관리한다(PCB와 TCB 유지)

->사용자 영역 스레드와 커널 영역 스레드가 일대일(1:1)로 매핑된다.



      • 장점
        1. 커널이 직접 스케줄링하고 실행하기에 사용자 수준 스레드의 커널 지원이 부족한 문제를 해결할 수 있다.
        2. 커널이 각 스레드를 개별적으로 관리할 수 있어 동일한 프로세스의 스레드들을 병행으로 수행할 수 있다.
        3. 동일한 프로세스에 있는 스레드 중 한 개가 대기 상태가 되더라도 다른 스레드를 실행할 수 있다.

      • 단점
        1. 커널이 전체 프로세스와 스레드 정보를 유지하여 오버헤드가 커진다.
        2. 장점 2의 과정에서도 커널 영역으로 전환하는 오버헤드가 발생하고 스케줄링과 동기화를 하려면 더 많은 자원이 필요하다.


3. 혼합형 수준 스레드


사용자 영역 스레드와 커널영역 스레드를 혼합한 구조

->다수 사용자 수준 스레드에 다수의 커널 스레드가 다대다(n:m)로 매핑된다.


'Computer Theory > Operating System' 카테고리의 다른 글

병행 프로세스와 상호배제(2/2)  (0) 2017.06.24
병행 프로세스와 상호배제(1/2)  (0) 2017.06.23
프로세스(Process)  (0) 2017.06.22
운영체제란? (2/2)  (0) 2017.06.21
운영체제란? (1/2)  (0) 2017.06.21