CPU 스케줄러가 CPU에 전달하는 일 하나
CPU가 처리하는 작업의 단위: 프로세스로부터 전달받은 스레드
프로세스의 코드에 정의된 절차에 따라 CPU에 직접 요청을 하는 실행 단위
프로세스 vs. 스레드
프로세스끼리는 약하게 연결되어 있는 반면 스레드끼리는 강하게 연결되어 있음
| 프로세스 | 스레드 | |
|---|---|---|
| 작업 단위 | OS 입장에서의 작업 단위 | CPU 입장에서의 작업 단위 |
| 정의 | 실행 중인 프로그램 | 프로세스 내 작업 단위 |
| 메모리 | 각각 독립적으로 사용 | 같은 메모리 공간을 공유 |
| 안정성 | 충돌 시 다른 프로세스에 영향 X | 한 스레드 오류 시 전체 프로세스에 영향 可 |
| 생성/관리 비용 | 비교적 큼 | 상대적으로 작음 |
| 작업 단위 | OS 입장에서의 작업 단위 | CPU 입장에서의 작업 단위 |
멀티태스크 vs. 멀티스레드
| 멀티태스크 | 멀티스레드 |
|---|---|
| 여러 개의 프로세스로 구성된 것 | 하나의 프로세스에 여러 개의 스레드로 구성된 것 |

멀티스레드 vs. 멀티태스킹 vs. 멀티프로세싱 vs. CPU 멀티 스레드
| 멀티스레드 | 멀티태스킹(시간 공유) | 멀티프로세싱 | CPU 멀티 스레드 |
|---|---|---|---|
| 운영체제가 SW적으로 프로세스를 작은 단위의 스레드로 분할하여 운영하는 기법 | OS가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법 | CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경 | 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법 (하드웨어적인 방법) |

멀티스레드 vs. 멀티태스킹

fork( ) 시스템 호출로 여러 개의 프로세스를 만들면 필요 없는 정적 영역이 여러 개가 됨멀티스레드의 장단점
| 장점 | 단점 |
|---|---|
| 응답성 향상 | 모든 스레드가 자원을 공유하므로 한 스레드에 문제가 생기면 전체 프로세스에 영향 끼침 |
| 자원 공유 | |
| 효율성 향상 | |
| 다중 CPU 지원 |

사용자 스레드 (1 to N)

커널 스레드 (1 to 1)

멀티레벨 스레드 (M to N 모델)
사용자 스레드 + 커널 스레드
