Thread, Multi-Thread, Multithreading   스레드, 쓰레드, 멀티 스레드, 멀티 스레딩

(2018-08-20)

단일 스레드

1. 스레드 (Thread)

  ㅇ 영어 뜻 자체로는 이야기의 흐름 또는 줄기를 말함

  ㅇ 하나의 프로세스 내에서 더 작은 단위로 독립적으로 실행시키며 제어가 가능한 흐름 
     - 일명, Excecution Context(실행 컨텍스트) 또는 Lightweigt(경량급) 프로세스라고 함


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

  ㅇ 스레드
     - 스레드는 프로세스와는 달리 부모 프로세스 전체의 복사본을 만들지 않고, 
       필요한 코드 덩어리 만을 생성하여 동시에 수행 
     - 부모 스레드가 갖고 있는 모든 데이터를 완전하게 접근할 수 있기 때문에,
       효율적이고 메모리 제약이 있는 시스템에 널리 사용
     - 전통적인 유닉스 시스템은 각 프로세스가 단 하나의 스레드로 만 구성됨


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

  ㅇ 멀티 스레드는, 
     - 하나의 응용 프로그램이 동시에 여러 개의 실행 흐름을 만들어 내는 것
        . 하나의 응용 프로그램이 직접 스레드 생성 및 파괴를 관리하게 됨
        . 멀티스레드는 각 스레드 마다 제각각 시스템 자원을 사용하게 됨

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


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

  ㅇ MS社의 제품군인 윈도우 NT, 2000, XP 등
     - UNIX에서와는 달리 스레드 기반의 아키텍쳐를 갖음
     - 이는 단일 프로세스하에서 여러 다중(멀티) 스레드로 구현
     - 통상, 유닉스에서는 하나의 응용 프로그램이 여러 프로세스에 걸쳐 있게 됨

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

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


[프로세스] 1. 프로세스 2. 선점형 3. 병행 프로세스 4. 멀티 태스킹 5. 스레드

 
        최근수정     요약목록     참고문헌