프로세스 : 자원을 할당 받아서 제어하는, 프로그램 작업
스레드 : 자원과 제어를 분리해서 제어만 분리한 것, 프로세스 안에서 실행되는 흐름, 스레드는 여러개 있을 수 있음. Stack 영역을 제외하고 나머지 영역은 공유!
제어(스레드)의 요소 : 제어정보(SP, PC, 상태), 지역 데이터, 스택
스레드(Thread)
- Light Weight Process (LWP)
- 프로세서 활용의 기본 단위
- 구성요소 :ThreadId, RegisterSet(PC,SP), Stack(local data)
- 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유
- 전통적 프로세스 = 단일 스레드 프로세스
- I/O가 발생이 되서 block 상태로 내려갔다 다시 올라감 -> 멀티 스레드를 사용해서 하나의 스레드가 지연되더라도 다른 스레드는 작업을 계속할 수 있음 (자원 공유 -> 병렬 처리)
자원은 공유하고 제어는 개별적으로 해서 병렬처리가 가능하다.
스레드의 장점
- 사용자 응답성
- 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리가능
- 자원 공유
- 자원을 공유해서 효율성 증가(커널의 개입을 피할 수 있음.)
- 경제성
- 프로세스의 생성, context switch에 비해 효율적
- 멀티 프로세스 활용
사용자 수준 스레드
-
사용자 영역의 스레드 라이브러리로 구현됨
- 스레드의 생성, 스케줄링 등
-
커널은 스레드의 존재를 모름
- 커널의 관리(개입)를 받지 않음
- 생성 및 관리의 부하가 적음, 유연한 관리 가능
- 이식성이 높음 (jvm만으로도 실행 가능함)
- 커널은 프로세스 단위로 자원 할당
- 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기
커널 수준 스레드
-
OS(Kernel)가 직접 관리
-
커널 영역에서 스레드의 생성, 관리 수행
- context switching 등 부하(Overhead)가 큼
-
커널이 각 스레드를 개별적으로 관리
- 프로세스 내 스레드들이 병행 수행 가능
- 하나의 스레드가 block되어도, 다른 스레드는 계속 작업 가능
멀티 스레드
- 다대일(n:1) 사용자 수준, 일대일(1:1) 커널 수준,
- 다대다(n:m)(n>m) 모델, 혼합형 스레드 모델
- 사용자는 원하는 수만 큼 스레드 사용
- 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block상태가 되어도, 다른 스레드 수행 가능 -> 사용자, 커널 수준의 장점을 합침.
- 효율적이고 유연하다
https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATECH