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

(2018-08-06)

단일 스레드

1. 스레드 (Thread)

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

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


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

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


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

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

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


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

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

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

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


[윈도우즈] 1. 윈도우즈 2. ActiveX 3. DLL(동적 링크 라이브러리) 4. GDI 5. MFC 6. NDIS 7. SDK 8. 윈도우즈 API(Win32 등) 9. 가상 디바이스 드라이버 10. 닷넷 11. 레지스트리 12. 쓰레드 13. 윈속(윈도우 소켓)

 
        최근수정     요약목록(시험중)     참고문헌