Thread   스레드, 쓰레드

(2023-10-21)

단일 스레드, Multi-Thread, 멀티 스레드, Multithreading, 멀티 스레딩


1. 스레드 (Thread)

  ㅇ 영어 뜻 자체로는, 이야기 흐름 또는 줄기 또는 실(☞ 섬유) 등을 말함

  ㅇ 프로세스 내 다중처리를 위함
     - 하나의 프로세스 내에서, 
     - 더 작은 단위들로 각각 독립적으로 실행되나, 
     - 그 각각은 제어가 가능한 흐름 임

  ㅇ 일명, Excecution Context(실행 컨텍스트) 또는 Lightweigt(경량급) 프로세스 라고도 함


2. 프로세스와 스레드 차이프로세스
     - 완전한 하나의 프로그램이 실행되는 것
     - 예를들어, 유닉스에서 볼때, fork()를 통해 생성되는 프로세스는,
        . 원래의 프로세스와 똑같은 변수코드 등 여러 면에서 똑같은 복사본임
     - 따라서, 부모와 똑같은 자식을 생성하기 위해서는, 그만큼 많은 자원이 요구됨

  ㅇ 스레드
     - 스레드는 프로세스와는 달리,
        . (수행 방식)  부모 프로세스 전체의 복사본을 만들지 않고,
           .. 필요한 코드 덩어리 만을 생성하여 동시에 수행 
        . (동일 생성, 독립 실행)  해당 스레드들 모두가, 
           .. 동일 프로그램으로 생성되나, 
           .. 서로 독립되어 실행 됨
        . (공유)  해당 스레드들 모두가, 주요 메모리 공간을 함께 공유 함 
     - 따라서, 부모 스레드가 갖고 있는 모든 데이터를 완전하게 접근할 수 있기 때문에,
        . 효율적이고 메모리 제약이 있는 시스템에 널리 사용

  ※ 한편, 
     - 과거 유닉스 시스템은, 각 프로세스가 단 하나의 스레드로 만 구성됨
     - 현대적 운영체제 대부분은, 한 프로세스가 다중 스레드를 포함 지원


3. 스레드 요약

  ㅇ 스레드는, CPU 이용의 기본 단위
     - 동일 프로세스에 속하는 스레드는, 코드데이터프로세스 자원을 공유함

  ㅇ 스레드의 구성
     - 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 등

  ㅇ 스레드가 공유하는 것
     - 각 스레드는, 같은 프로세스에 속한 다른 스레드들과 함께,
     - 코드, 데이터 섹션, 열린 파일 등을 공유하게 됨


4. 멀티 타스킹, 멀티 스레드 비교멀티 타스킹은, 
     - 운영체제의 입장에서 동시에 여러 프로세스를 수행하는 것
     - 즉, 운영체제가 관리의 주체 임

  ㅇ 멀티 스레드는, 
     - 하나의 응용 프로그램이, 독립적인 단일 프로세스로 구현되나,
        . 이것이, 동시에 다수의 실행 흐름을 만들어 냄

     - 또한, 하나의 응용 프로그램이, 직접 스레드 생성 및 파괴를 관리하게 됨

     - 멀티 스레드의 각 스레드 마다, 제각각 시스템 자원을 사용 가능

     - 유닉스/리눅스에서, 멀티 스레드 프로세스의 경우에,
        . 동일 프로그램으로, 여러 스레드를 동시에 실행 함
           .. 즉, 단일 프로세스가, 동시에 1 이상의 작업들을 수행 가능
        . 모든 스레드가, 같은 전역 변수/힙 메모리를 공유 함
        . 또한, 프로세스 ID, 오픈 파일 디스크립터, 시그널 속성, 현재 작업 디렉토리,
                자원 한도 등의 속성도 공유 함
        . 그러나, 각 스레드는, 지역 변수를 담은 개별 스택을 갖게 됨

  ※ 한편, 단일 스레드 환경은, 하나의 응용 프로그램이 단 하나의 실행 흐름 만 만듬
     - 즉, 한 번에 한가지 일 만 수행 가능
        . 이 경우, 인터럽트비동기적 처리는 어려워짐


4. 스레드 기반의 아키텍처

  ㅇ 한때, MS社의 제품군인 윈도우 NT, 2000, XP 등에서,
     - UNIX에서와는 달리 스레드 기반의 아키텍쳐를 갖음
     - 이는 단일 프로세스 하에 다중 스레드로 구현

  ㅇ 스레드 기반의 아키텍처의 장점으로는,
     - 한 개의 프로세스의 모든 스레드들은 같은 프로세스 메모리 공간을 공유함
     - 따라서, 응용 프로그램들의 메모리 분배가 효율적
     - 유닉스 같은 운영체제에서의 프로세스 간의 메모리 분배 관리기법이 불필요

  ㅇ 스레드의 단점
     - 어느 한 스레드가 제어상에 문제가 발생하면, 
     - 타 스레드 메모리 공간을 덮어쓸 수도 있기 때문에, 안정성에 다소 취약

프로세스
   1. 프로세스   2. 선점형   3. 병행 프로세스   4. 멀티 태스킹   5. 스레드   6. 런타임 메모리  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"