반응형
✅ 스레드 (Thread)
: 실행 흐름 단위
스레드는 다음과 같이 2가지로 나눌 수 있다.
- 하드웨어적 스레드: CPU에서 사용
- 소프트웨어적 스레드: 프로그램에서 사용
📍 하드웨어적 스레드
: 하나의 코어가 동시에 처리하는 명령어 단위
- 1 코어 1 스레드: 한 번에 하나씩 명령어를 실행하는 CPU
- 2 코어 4 스레드: 한 번에 4개의 명령어 처리가 가능한 CPU, 한 코어당 2개의 하드웨어 스레드를 처리
이처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서(멀티스레드 CPU)라고 한다.
📍 소프트웨어적 스레드
: 하나의 프로그램에서 독립적으로 실행되는 단위
보통 프로그래밍 언어나 운영체제에서 언급되는 스레드는 소프트웨어적 스레드이다.
즉, 흔히 말하는 프로세스 안에서 실행되는 흐름 단위는 소프트웨어적 스레드인 것이다.
기본적으로 프로세스마다 최소 1개의 (소프트웨어적) 스레드(메인 스레드)를 보유한다.
프로그램의 여러 부분이 동시에 실행될 수 있다면, 멀티스레드라고 한다.
1 코어 1 스레드 CPU는 하드웨어적 스레드는 한 개이지만, 소프트웨어적 스레드는 수십 개 실행할 수 있다.
[프로세스 vs. 스레드]
프로세스는 자신만의 고유한 메모리 공간과 자원을 독립적으로 할당받아 사용하고,
스레드는 같은 프로세스 내의 다른 스레드와 공간과 자원을 공유하면서 사용한다.
이렇게 둘은 실행 단위 차이를 넘어, 자원을 공유하느냐 여부의 차이가 있다.
✅ 스레드의 주소 공간
이제 '소프트웨어적'을 생략하고 스레드라고 언급하겠다.
- 스레드는 stack만 따로 할당받고 나머지 영역은 공유한다.
- 스레드는 독립적으로 함수를 호출할 수 있어야 하기 때문에 함수 관련 정보를 저장하는 stack 영역은 독립적으로 할당받아야 한다.

📍TCB(Thread Control Block)
PCB와 비슷하게 스레드의 정보는 TCB(Thread Control Block)에 저장된다.
- thread ID
- thread 실행상태
- program counter
- stack
✅ 멀티 스레드
: 하나의 프로그램을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것
- 스레드는 부모 프로세스의 자원과 메모리를 공유할 수 있다.
- 동기화 및 교착상태가 발생하지 않도록 주의해야 한다.
- 일부 작업이 막히거나 오래 걸려도, 다른 스레드가 계속 실행되어 사용자에게 응답성 높은 인터페이스 제공이 가능하다.
- 프로세스에 비해 생성과 전화 비용이 훨씬 작다.
- 멀티프로세스 시스템에서는 스레드를 병렬적으로 실행하여 성능 향상이 가능하다.
반응형
'⚙️ CS > 운영체제' 카테고리의 다른 글
| [운영체제] 동기화 (0) | 2025.04.29 |
|---|---|
| [운영체제] 스케줄링 (0) | 2025.04.28 |
| [운영체제] 프로세스 (1) | 2025.04.16 |
| [운영체제] 시스템 콜 & 인터럽트 (0) | 2025.04.15 |