1. 쓰레드(Thread)
쓰레드(Thread)란 프로그램 내부의 흐름, 맥으로 하나로 CPU 스케줄러가 CPU에 전달하는 작업 중 하나이다. (프로세스의 최소 단위이다)
쓰레드는 프로세스의 메모리 공간을 공유(code, data)하며, 프로세스의 자원(file, I/O...) 또한 공유한다. 하지만 개별적인 PC, SP, registers, stack 등은 공유하지 않는다.
2. Thread VS Process
한 개의 프로세스에는 최소 1개의 쓰레드가 존재하며, 한 개의 프로세스에는 2개 이상의 쓰레드가 존재할 수 있다.
한 개의 쓰레드가 존재하는 프로그램을 단일 쓰레드 프로그램이라 부르며, 2개 이상의 쓰레드가 존재하는 프로그램을 다중 쓰레드 프로그램이라 부른다.
2-1. 멀티 쓰레드
- 하나의 프로세스에 2개 이상의 쓰레드가 작업을 나누어 수행하는 것을 멀티 쓰레드라 부른다.
- 멀티 쓰레드로 이루어진 프로그램을 실행할 때 쓰레드가 동시에 실행하는 것처럼 보이지만, 사실 쓰레드는 빠른 시간 간격으로 스위칭 되어 작동한다. (동시 실행 X)
- 메모리와 자원의 공유로 메모리 공간과 시스템 자원의 소모가 줄어든다는 장점이 있다.
- 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다.
- 하나의 쓰레드에 문제가 생기면 전체 프로세스에 영향이 생긴다.
2-2. 멀티 프로세스
- 멀티 프로세스는 2개 이상의 프로세스가 협력하여 하나 이상의 작업을 동시에 처리하는 것을 말한다.
- 하나의 프로세스에 문제가 발생해도 다른 프로세스에 피해가 없다.
- 멀티쓰레드 보다 많은 메모리 공간, CPU 할당 시간이 길다는 단점이 있다.
Reference
경성대학교 양희재 교수님의 운영체제