프로세스는 자원(resources)을 할당 받아 제어하여 원하는 목적을 달성하는 일
스레드는 할당한은 자원을 제어하는 일
쓰레드는 제어 정보, 지역 데이터, 스택으로 구성된다.
지역 데이터는 스택에 저장이 된다.
하나의 프로세스는 여러 개의 쓰레드로 구성된다.
프로세스가 할당 받은 자원(코드, 전역 데이터, 힙으로 구성)은 공유된다.
같은 프로세스의 쓰레드들은 동일한 주소 공간을 공유한다.
쓰레드는 Light Weight Process(LWP)이며 프로세스 활용의 기본 단위이다.
쓰레드는 스레드 ID, 레지스터 셋(프로그램 카운터 PC와 스택 포인터 SP), 스택으로 구성된다.
제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 쓰레드들과 공유한다.
사용자 응답성: 일부 쓰레드의 처리가 지연되어도 다른 쓰레드는 작업을 계속 처리 가능
자원 공유: 자원을 공유하여 효율성 증가 (커널의 개입을 피할 수 있음)
경제성: 프로세스의 생성, 컨텍스트 스위치에 비해 효율적
멀티 프로세서 활용: 병렬 처리를 통해 성능 향상
사용자 영역의 쓰레드 라이브러리로 구현된다.
쓰레드의 생성, 스케줄링 등
커널은 쓰레드의 존재를 모르기 때문에 커널의 관리(개입)를 받지 않는다.
커널은 프로세스 단위로 자원을 할당하기 때문에 하나의 쓰레드가 block 상태가 되면, 모든 쓰레드가 대기
OS(커널)가 직접 관리
커널 영역에서 쓰레드의 생성, 관리 수행
커널이 각 쓰레드를 개별적으로 관리: 부하(Overhead)가 크다.
프로세스 내 쓰레드들이 병행 수행 가능: 하나의 쓰레드가 block 상태가 되어도 다른 쓰레드들은 작업 수행 가능
n개의 사용자 수준 쓰레드와 m개의 커널 수준 쓰레드를 혼합
사용자는 원하는 수만큼 쓰레드 사용
커널 쓰레드는 자신에게 할당된 하나의 사용자 쓰레드가 block 상태가 되어도, 다른 쓰레드 수행 가능