프로세스와 스레드
프로세스
- 운영체제의 작업 단위
- 실행중인 프로그램
- 프로세스 실행을 위해 PCB를 생성하며, PCB에는 프로세스의 상태, 메모리 정보 등을 포함
스레드
- CPU의 작업 단위, 하나의 프로세스 내에서 독립적으로 실행
- 모든 프로세스는 기본적으로 하나의 스레드를 갖는데, 이를 메인스레드 라고 함
- 스레드가 등장하면서 프로세스 > 자원의 단위, 스레드 > 실행의 단위
PCB와 TCB
- PCB는 프로세스의 정보를 담고 있고, 각 스레드는 프로세스의 PCB에 연결됨 TCB를 가짐
- TCB는 스레드의 프로그램 카운터(PC), 스택 포인터(SP), 레지스터 상태 등 CPU와 관련된 정보를 담아 컨택스트 스위칭을 가능하게 함
- 스레드가 많아질 경우, 여러개의 TCB를 갖기도 함
병렬 처리의 두가지 방식: 멀티프로세스 vs 멀티 스레드
멀티프로세스
장점
- 각 프로세스가 독립적이기에 하나의 프로세스가 오류나더라도 다른 프로세스에 영향을 주지 않음
단점
- 각 프로세스가 메모리를 독립적으로 사용해야하므로 메모리 중복 문제 발생
- IPC 구현이 복잡하고 비용이 많이 듦
- 컨텍스트 스위칭 비용 큼
ex) 크롬
멀티스레드
장점
- 메모리 비용 절감
- 컨텍스트 스위칭 비용 프로세스에 비해 적음
- 스레드간 데이터 공유 쉬움
단점
- race condition 문제 발생
- 하나의 스레드에 영향이 생기면 전체 프로세스에 영향을 줌
ex) 인터넷 익스플로러
여러 종류의 스레드
1. 하드웨어 스레드
- CPU코어가 동시에 처리할 수 있는 작업 단위, 실제 물리적인 구현체
- 인텔의 하이퍼 스레딩
- 하나의 CPU 코어에 두 개 이상의 하드웨어 스레드를 구현하여 효율적으로 병렬 처리를 지원하는 기술
- 운영체제는 하드웨어 스레드를 실제 CPU코어로 인식
2. OS 스레드
- 커널이 관리한느 스프트웨어적 스레드, 사용자 스레드와 1:1 매칭
- CPU의 스케줄링 단위, 커널에서 관리하기에 비용 발생
- 사용자 코드와 커널 코드 모두 OS 스레드에서 실행
3. 사용자 스레드
- 프로그래밍 언어 수준에서 제공되는 스레드, 개발자는 OS 스레드에 대한 세부사항을 신경쓰지 않아도 됨
- 반드시 OS 스레드와 연결되어야 함
멀티 스레드 모델
1. 1:N 모델
- 커널에 대해 멀티 스레드를 지원하지 않던 초기의 스레드 시스템에서 사용
- 커널의 입장에서는 사용자 스레드가 많아도 하나의 프로세스처럼 보임
장점
- 사용자 스레드 라이브러리에서 직접 스케줄링을 담당하고 작업에 대한 정보 처리 > 컨텍스트 스위칭 X
- 개발자가 원하는 만큼 사용자 스레드 생성 가능
단점
- 한 사용자 스레드가 블로킹 되면 모든 스레드가 블로킹 됨
- 병렬 처리 불가능
2. 1:1 모델
- 커널에 대해 멀티스레드를 지원하기 시작한 이후의 스레드 시스템에서 사용
- 각 사용자 스레드가 커널 스레드와 1:1 매칭
장점
- 독립적으로 스케줄링 가능
- 병렬로 처리 가능
단점
- 컨텍스트 스위칭 비용 발생 > 1 : N보다 느림
- 개발자가 원하는 만큼 사용자 스레드를 생성하는 것에 주의해야함 > 많은 수의 커널 스레드는 부하 증대
3. M:N 모델
- 여러 사용자 스레드가 여러 커널 스레드와 매칭
- 커널 스레드의 수는 사용자 스레드의 수보다 적거나 같음
- 1:N & 1:1 모델 혼합 방식
장점
- 동시성 및 병렬성의 장점 조합
- 개발자가 원하는 만큼 사용자 스레드 생성 가능
단점
- 구현이 복잡
- 1:1 모델보단 덜하지만 컨텍스트 스위칭에 대한 오버헤드 존재
Concurrency(동시성)과 Parallelism(병렬성)
동시성
- 동시에 실행되는 것처럼 보이는 상태
- 단일 코어에서 동작 가능
병렬성
- 실제로 동시에 실행되는 상태
- 다중 코어 환경에서도 가능
동시성 처리 기법
일반적 동시성 프로그래밍의 문제점
- 생성하는 스레드의 제한이 없어, 컨텍스트 스위칭이 빈번하게 일어나 시스템 성능 저하
- 스레드 생성 비용
스레드 풀
- 최소 스레드 수와 최대 스레드 수를 저장하여 스레드 개수에 대한 제한을 둘 수 있음
- 미리 생성된 스레드 풀에서 작업을 할당하여 스레드 재활용
- 스레드 생성 비용 절감
- 컨텍스트 스위칭 오버헤드 감소
GCD
- 애플이 지원하는 동시성 처리 기법
- 스레드 수를 시스템이 자동으로 조정하여 최적화
'운영체제' 카테고리의 다른 글
스레드의 등장 (0) | 2024.12.21 |
---|---|
프로세스와 운영체제의 이해 (1) | 2024.12.15 |
운영체제의 역할과 구조 (2) | 2024.12.14 |
컴퓨터의 구성과 동작원리 (0) | 2024.12.11 |