조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 스레드
- 프로세스 내에서 실행되는 작업 단위
- 같은 프로세스 내에서 메모리와 자원을 공유 (Light Weight Process)
- 서로 간에 직접적으로 데이터를 주고받을 수 있음
- 데이터를 공유하므로 메모리를 효율적으로 사용할 수 있음
2. 멀티 태스킹 vs 멀티 스레딩
항목 | 멀티 태스킹 | 멀티 스레딩 |
정의 | CPU 할당 시간을 시분할하여 여러 작업을 동시에 처리하는 기법 (시분할 시스템). |
단일 프로세스 내에서 여러 개의 스레드를 생성하여 병렬 처리하는 방식. (스레드 단위로 스케줄링이 이루어짐)
|
목표 | 여러 작업을 동시에 처리하는 것처럼 보이게 함. |
단일 프로세스 내에서 여러 스레드를 사용하여 병렬 처리.
|
구현 방식 | 운영체제가 여러 프로세스를 관리하며 각 프로세스에 시간 슬라이스를 할당하여 처리. |
프로세스 내에서 여러 스레드를 관리하며, 각 스레드가 독립적으로 실행됨.
|
자원 관리 | 각 프로세스가 독립적으로 자원을 할당받아 사용. |
스레드는 동일한 프로세스 내에서 자원을 공유.
|
병렬 처리 | 여러 프로세스를 동시에 실행하는 것처럼 보이지만 실제로는 CPU가 시분할하여 빠르게 전환함. |
여러 스레드가 동시에 실행되어 실제 병렬 처리.
|
장점 | ||
- 효율성 | 시스템 자원 활용을 극대화. (단, 프로세스간 자원 공유가 어려움) |
여러 스레드를 이용해 성능 향상. |
- 응답성 | 여러 작업을 동시에 처리할 수 있음. (단, 상대적으로 느림) |
실행 중인 스레드가 대기 중이면 다른 스레드로 즉시 응답 가능.
|
단점 | ||
- 자원 격리 | 각 프로세스는 독립적인 자원을 사용하므로 다른 프로세스에서 문제가 발생해도 영향을 미치지 않음. |
자원을 공유하므로 한 스레드에서 문제가 발생하면 다른 스레드도 영향을 받을 수 있음.
|
- 동기화 문제 | 동기화 문제 없이 각 프로세스가 독립적으로 실행됨. |
공유 자원에 대한 접근을 동기화하지 않으면 레이스 컨디션 발생, 프로그램 전체에 영향.
|
- 오류 전파 | 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않음. |
한 스레드에서 치명적인 오류가 발생하면 전체 프로세스가 종료될 수 있음.
(세그멘테이션 폴트, 무한 루프 등) |
- 데드락 | 각 프로세스가 독립적으로 실행되므로 데드락의 위험이 낮음. |
여러 스레드가 자원을 기다리며 대기 상태에 빠져 데드락에 걸릴 수 있음.
|
동기화 방식 | 각 프로세스 간 자원 공유가 없어 별도의 동기화가 필요 없음. | 공유 자원에 대한 동기화가 필요. |
멀티 스레딩 모델
구분 | 커널 스레드 | 사용자 스레드 |
지원 방식 | 운영체제 커널이 직접 멀티스레드를 지원 |
사용자 공간에서 구현
(운영체제 커널이 멀티스레드를 지원하지 않을 경우 사용) |
동작 방식 | 각 스레드가 독립적으로 실행되며, 한 스레드가 블록되더라도 다른 스레드는 계속 실행 가능 |
한 스레드가 블록되면 동일 프로세스 내의 모든 사용자 스레드가 블록됨
|
스케줄링 | 커널이 스케줄링과 동기화를 담당 |
스케줄링과 동기화를 사용자 수준에서 직접 구현
|
장점 | 안정적 (스레드가 블록되어도 다른 스레드가 영향을 받지 않음) |
스레드 생성 및 관리가 더 빠르고 효율적임
(커널 호출이 필요 없음) |
단점 | 커널 호출에 의한 오버헤드가 발생할 수 있음 |
효율이 떨어질 수 있음
(한 스레드가 블록되면 다른 스레드도 블록되므로) |
예시 | Linux 커널에서 각 프로세스가 커널 스레드로 실행되는 경우 |
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 |