Chapter4. 스레드(Thread)
1. 스레드(Thread)의 개념
- 스레드란? 프로세스의 실행 단위
- 제어 요소를 가지고 있음(LWP : Light Weight Process)
- 자원을 공유(code, data, heap)
- 스레드와 프로세스의 차이
- 프로세스 : 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받음
- 스레드 : 프로세스 안에 존재, 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유
1.1 스레드의 장점
- 사용자 응답성 : 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속할 수 있다
- 자원 공유 : 효율성이 증가하고 커널의 개입이 감소됨
- 서로 다른 프로세스가 한 자원을 사용하려면 컨텍스트 스위칭이 자주 발생(커널 개입이 증가)하여 효율이 떨어짐
- 경제성
- 멀티 프로세서 활용 가능
2. 스레드의 구현
2.1 사용자 수준 스레드(User Threads)
- 사용자 영역의 스레드 라이브러리로 구현
- 스레드의 생성 및 스케쥴링을 커널의 관리를 받지 않음
- 이식성이 높음
- 스레드의 생성 및 스케쥴링을 커널의 관리를 받지 않음
- 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기
- 사용자 수준 스레드와 커널 수준 스레드와 다대일 매핑이 되어 있는 관계
2.2 커널 수준 스레드(Kernel Threads)
- OS(Kernel)에서 직접 관리
- 커널 영역에서 스레드의 생성, 관리 수행
- 부하(overhead)가 큼
- 프로세스 내 스레드들이 병행 수행 가능
- 커널 수준 스레드와 사용자 수준 스레드가 일대일 매핑이 되어 있음
2.3 멀티 스레딩 모델
- 사용자 수준 스레드와 커널 수준 스레드가 다대다 관계로 매핑(커널 수준 스레드 < 사용자 수준 스레드)
- 하나의 사용자 스레드가 block처리가 되어도, 다른 스레드 수행 가능(병행 처리)
- 효율적
2.3.1 멀티 스레드 vs 멀티 프로세스
- 멀티 스레드는 문맥 전환이 빠르지만 오류로 인해 하나의 스레드가 종료되면 다른 스레드도 종료 될 수 있다.(동기화 문제)
- 멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에는 영향이 없지만, 메모리 공간과 CPU시간을 많이 차지한다.
'CS > [OS]' 카테고리의 다른 글
Chapter6 프로세스 동기화 & 상호배제 (0) | 2021.12.16 |
---|---|
Chapter5 프로세스 스케줄링 (0) | 2021.12.14 |
Chapter3 프로세스 관리 (0) | 2021.12.07 |
Chapter2 운영체제 개요 (0) | 2021.12.02 |
Chapter1 컴퓨터 시스템 개요 (0) | 2021.11.30 |