스레드(thread)의 의미
프로세스를 이루는 실행 흐름의 단위
하나의 프로세스는 하나 이상의 스레드를 가질 수 있다
모든 스레드들은 프로세스의 자원을 공유하면서 실행이 된다

스레드의 종류
1. 실행 흐름이 하나인 프로세스 (단일 스레드 프로세스)

2. 실행 흐름이 여러 개인 프로세스 (멀티 스레드 프로세스)
프로세스를 이루는 여러 명령어 동시 실행 가능

스레드의 구성요소
스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등
실행에 필요한 최소한의 정보

멀티 프로세스 vs. 멀티 스레드
프로세스끼리는 독자적으로 실행되고 자원을 공유하지 않는다
스레드끼리는 같은 프로세스 내의 자원을 공유하며 실행된다

멀티 프로세스
프로세스를 fork 하면 코드/데이터/힙 영역 등 모든 자원이 복제되어 저장됨
저장된 메모리 주소를 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재
fork를 여러번하면 그만큼 메모리에는 같은 프로세스가 여러 번 적재

+ fork 직후 같은 프로세스를 통째로 메모리에 중복 저장하지 않으면서
동시에 프로세스끼리 자원을 공유하지 않는 방법도 있다
이를 쓰기 시 복사(copy on write)기법이라 한다 (추후 다룰 예정)
멀티 스레드
스레드들은 각기 다른 스레드 ID, (별도의 실행을 위해 꼭 필요한) 프로그램 카운터 값을 포함한 레지스터 값,
스택을 가질 뿐 프로세스가 가지는 자원을 공유

멀티 프로세스와 멀티 스레드의 차이
프로세스끼리는 자원을 공유하지 않는다
> 남남처럼 독립적으로 실행
스레드는 프로세스의 자원을 공유한다
> 협력과 통신에 유리 (장점)
> 하나의 스레드라도 오류가 발생하여 공유 자원에 문제가 발생하면 해당 프로세스와 내부 스레드들이 전체적으로 문제 발생 (단점)
프로세스 간 통신(IPC)
일반적으로 프로세스끼리는 자원을 공유하지는 않지만 통신은 가능하다
프로세스 간 통신(IPC)를 통해 통신을 하며
파일을 통한 프로세스 간 통신, 공유 메모리를 통한 프로세스 간 통신 등이 있다
'CS > [혼자 공부하는] 운영체제' 카테고리의 다른 글
3-2] CPU 스케줄링: CPU 스케줄링 알고리즘 (0) | 2023.06.06 |
---|---|
3-1] CPU 스케줄링: CPU 스케줄링 개요 (0) | 2023.06.05 |
2-2] 프로세스와 스레드: 프로세스 상태와 계층 구조 (0) | 2023.06.04 |
2-1] 프로세스와 스레드: 프로세스 개요 (0) | 2023.06.04 |
1-2] 운영체제 기초: 운영체제의 큰 그림 (0) | 2023.06.03 |