조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 스레드

- 프로세스 내에서 독립적인 실행 흐름을 가지는 최소 실행 단위 (Light Weight Process)
- ✅ 같은 프로세스 내에서 자원을 공유함 (단, stack, 레지스터, pc는 독립적으로 가짐)
- ➡️ 데이터를 공유하므로 메모리를 효율적으로 사용할 수 있음
2. 멀티 태스킹
- 운영체제가 여러 작업을 동시에 실행하는 것처럼 보이게 하는 기법 (시분할하여 각 작업에 번갈아 할당함)
- ➡️ 시스템 자원 활용 극대화 (CPU idle time 활용)
- ➡️ 응답성 향상
- ✅ 각 프로세스가 독립적인 주소 공간을 가짐
- ➡️ 오류 전파 위험이 낮음
3. 멀티 스레딩
- 하나의 프로세스 안에서 여러 개의 스레드를 생성하여 동시에 실행하는 기법 (스레드 단위로 스케줄링)
- ✅ 자원 공유 (프로세스 내에서 여러 스레드가 자원을 공유함)
- ➡️ 메모리 효율성
- ➡️ 스레드 생성 및 전환 비용이 적음
- ⚠️ 동기화 문제 (레이스 컨디션, 데드락 발생 가능)
- ⚠️ 오류 전파 (세그멘테이션 폴트, 무한 루프)
멀티 스레딩 모델
| 구분 | 커널 스레드 | 사용자 스레드 |
| 지원 방식 | 커널이 직접 멀티스레드를 지원 | 사용자 공간의 라이브러리가 스레드를 관리하도록 구현 |
| 동작 방식 | 각 스레드가 독립적으로 실행되며, 한 스레드가 블록되더라도 다른 스레드는 계속 실행 가능 |
한 스레드가 블록되면 동일 프로세스 내의 모든 사용자 스레드가 블록됨
|
| 스케줄링 | 커널이 직접 스케줄링과 동기화를 담당 |
스케줄링과 동기화를 사용자 수준에서 직접 구현
|
| 장점 | 안정적 (블로킹 I/O에 대해 전파 안됨) |
스레드 생성 및 관리가 더 빠르고 효율적임
(커널 호출이 필요 없음) |
| 단점 | 커널 호출에 의한 오버헤드가 발생할 수 있음 | 불안정함 (블로킹 I/O 발생시 전체가 블록됨) |
| 예시 | - Linux의 POSIX threads (pthreads) - Java의 기본 스레드 |
Java의 green threads |
출처
'OS' 카테고리의 다른 글
| [쉽게 배우는 운영체제] 4-2. CPU 스케줄링: 인터럽트 처리 (0) | 2024.12.12 |
|---|---|
| [쉽게 배우는 운영체제] 4-1. CPU 스케줄링: 스케줄링 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 3-1. 프로세스와 스레드: 프로세스 (0) | 2024.12.11 |
| [쉽게 배우는 운영체제] 2. 컴퓨터의 구조와 성능 향상 (0) | 2024.01.11 |
| [쉽게 배우는 운영체제] 1. 운영체제 개요 (1) | 2023.12.26 |