티스토리 뷰
반응형
Thread
- 실행의 가장 작은 단위
- 스레드마다 별도의 stack과 register set이 있다. Code영역과 data영역은 공유한다.
- 왜 스레드를 사용해야 하는가?
- 더 나은 병렬성(Parallelism)으로 성능이 향상된다.
- 프로세스보다 스레드를 생성하는 것의 오버헤드가 더 적다.
- 자원을 더 효율적으로 사용한다.
- 동일한 작업을 병렬적으로 실행할 때, 별개의 프로세스를 생성하는 것은 자원 낭비이다.
- 데이터 공유가 더 쉽다.
- IPC를 사용할 필요가 없다.
- 더 나은 병렬성(Parallelism)으로 성능이 향상된다.
Concurrency vs. Parallelism
- Parallelism (병렬성)
- 다중 작업을 동시에 수행할 수 있는 능력
- Concurrency (동시성)
- Time sharing으로 인해 단위시간마다 다중작업을 빠르게 진행하여 동시에 수행하는 것처럼 보이는 능력
- Parallelism과 Concurrency의 관계
User thread vs. Kernel thread
- User thread
- 커널은 user thread가 몇 개나 작동하고 있는지 알 지 못한다. (스레드가 프로그램 내에 존재해도, 커널은 프로그램의 존재 유무만 알고 스레드의 갯수는 모른다.)
- User-level 라이브러리에 의해 관리된다.
- Kernel thread
- 커널이 인식할 수 있는 스케줄링이 가능한 객체
Thread pool
- 스레드를 사용한 기존의 실행 모델
- 새로운 요청이 들어오면, 요청을 핸들링 하기위한 스레드를 생성하고, 작업이 끝나면 스레드를 제거한다.
- 이 방법의 문제점
- 스레드를 생성/제거할 때마다 오버헤드가 발생한다.
- 스레드 생성에 제한이 없다.
- Thread pool
- 초기에 특정 갯수만큼의 스레드를 생성한다.
- 새로운 요청이 들어오면 미리 선언된 스레드 풀에서 사용 가능한 스레드를 선택하고, Dispatcher를 통해 작업을 할당한다. 작업이 끝나면 다시 스레드 풀로 스레드를 반환한다.
반응형
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
[운영체제] 데드락 (0) | 2019.10.30 |
---|---|
[운영체제] 프로세스 스케줄링 (0) | 2019.10.29 |
[운영체제] 프로세스 (0) | 2019.10.29 |
[운영체제] 시스템 구조 (0) | 2019.10.28 |
[운영체제] 개요 (0) | 2019.10.28 |
댓글
링크
공지사항
최근에 달린 댓글
- Total
- Today
- Yesterday