조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 스레드
- 프로세스 내에서 실행되는 작업 단위
- 같은 프로세스 내에서 메모리와 자원을 공유 (Light Weight Process)
- 서로 간에 직접적으로 데이터를 주고받을 수 있음
- 데이터를 공유하므로 메모리를 효율적으로 사용할 수 있음
2. 멀티 태스킹
- CPU 할당 시간을 slicing하여 배분하는 기법 (시분할 시스템)
- 운영체제가 여러 작업을 동시에 처리하는 것처럼 보이게 하는 기법
3. 멀티 스레딩
- 단일 프로세스 내에서 여러 개의 스레드를 생성하여 병렬 처리하는 방식
모델
커널 스레드
- 커널이 멀티스레드를 지원하는 방식
- 한 스레드가 블록되어도 다른 스레드는 계속 실행 가능
사용자 스레드
- 사용자 공간에서 구현된 스레드
- 운영체제가 멀티스레드를 지원하지 않을 때 사용함
- 커널의 기능인 동기화나 스케줄링을 직접 구현함
- 한 사용자 스레드가 블록되면, 같은 프로세스 내 모든 사용자 스레드가 블록됨
장점
효율성
응답성
- 현재 실행중인 스레드가 대기중이면, 또 다른 스레드로 응답이 가능함
단점
- 자원을 공유하므로 한 스레드에서 문제가 생기면 다른 스레드에도 영향을 미침
동기화 문제
- 공유 자원에 대한 접근을 제대로 동기화하지 않으면 레이스 컨디션이 발생됨
- 전체 프로그램 동작에 영향을 줌
오류 전파
- 한 스레드에서 치명적인 오류가 발생하면 전체 프로세스가 종료될 수 있음 (세그멘테이션 폴트, 무한 루프)
데드락
- 여러 스레드가 서로의 자원을 기다리며 영원히 대기 상태에 빠짐
- 모든 스레드의 실행이 중단될 수 있음
'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 |