- 스레드
: 프로세스와 마찬가지로 CPU의 작업 단위, 경량 프로세스
: 텍스트 부분, 데이터 부분, 다른 운영체제 자원은 같은 프로세스에 속한 다른 스레드와 공유, 스레드는 스레드 식별자, 프로그램 카운터, 레지스터 집합, 스택(함수 호출 처리에 필요한 메모리)
: 모든 프로그램을 다중 스레드를 사용하도록 바꾼다고 하여 성능이 향상되는 것은 아님
- 프로세스 vs 스레드
: 성능적인 관점의 차이
: 프로세스처럼 독립적인 구조가 아니고 스레드들 사이에 공유하는 요소가 있다. -> 동기화 처리가 필요함
: context switching 걸리는 시간이 프로세스보다 짧고, 오버헤드 저렴
: 프로세스에 비해 생성 비용 저렴 (공유 영역은 제외하고 만드므로)
: 캐시 메모리 활용 측면으로 넘어가면 그 비용 차이는 더 커짐
- 유저 스레드 vs 커널 스레드
■ 유저 스레드
: 사용자 공간에서 스레드 라이브러리를 통해 제공
: 커널의 지원 없이 스레드의 생성, 스케줄링, 관리를 제공 (모드변경 x)
: 프로세스마다 자체적 스케줄링 알고리즘을 가질 수 있으나, 커널은 스레드 단위로 시분할 하지 않음
: 커널이 단일 스레드일 때 프로세스의 하나의 스레드가 블록되면 전체 프로세스가 블록 -> 비동기식을 이용하여 극복
■ 커널 스레드
: 운영체제가 직접 지원
: 커널이 스레드의 생성, 스케줄링, 관리 담당 (모드변경 필요)
: 하나의 스레드가 블록되어도 같은 프로세스에 있는 다른 스레드를 계속 실행
- 다중 스레드 모델
- 스레드 풀
: 스레드 풀은 프로세스가 생성할 수 있는 스레드의 수를 적절하게 관리하기 위해 사용되는 메커니즘
: 스레드를 필요할 때마다 생성하지 않고 프로세스가 시작될 때 적정한 수의 스레드를 생성하여 스레드 풀에 대기하도록 한다. 스레드가 필요하면 이 풀에 있는 하나 스레드를 활성화하여 실행되며, 실행이 끝나면 다시 스레드 풀에서 대기한다. 만약 스레드 풀에 더 이상 활성화할 스레드가 없으면 처리 요청은 있을 때까지 대기하게 된다.
'Major > Operating System' 카테고리의 다른 글
운영체제 - Process synchronization (0) | 2015.11.10 |
---|---|
운영체제 - CPU schedulering (0) | 2015.11.10 |
운영체제 - Process (0) | 2015.11.09 |
운영체제 - 기초 (0) | 2015.11.09 |
컴퓨터구조 (1) | 2015.11.09 |