CS/운영체제
스레드
Mecodata
2023. 1. 4. 11:33
스레드(Thread)
- 프로세스를 구성하는 실행 흐름의 단위
- 하나의 프로세스는 하나 이상의 스레드를 가질 수 있음
- 단일 스레드 프로세스, 멀티 스레드 프로세스가 존재
- 멀티 스레드 프로세스에서 스레드들은 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하여 실행됨
구성 요소
- 스레드 ID
- 레지스터 값 (프로그램 카운터 포함)
- 스택
멀티 프로세스와 멀티 스레드
- 멀티 프로세스 = 동일한 작업을 수행하는 단일 스레드 프로세스를 여러 개 실행하는 것
- 멀티 스레드 = 하나의 프로세스를 여러 스레드로 실행하는 것
차이점
멀티 프로세스 | 멀티 스레드 |
프로세스끼리는 기본적으로 자원을 공유 X => 서로 독립적으로 실행 |
스레드끼리는 같은 프로세스 내의 자원을 공유 => 협력과 통신에 유리함 |
하나의 프로세스에 문제가 생겨도 다른 프로세스에 지장이 없거나 적음 |
하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있음 |
프로세스 간 통신(IPC: Inter-Process Communication)
- 프로세스 간에 자원을 공유하고 데이터를 주고 받는 메커니즘
- 프로세스들끼리 데이터를 교환하는 것은 까다로울 뿐이지 불가능하지는 않음
- 파일을 통한 IPC = 서로 다른 프로세스가 동일한 파일의 데이터를 주고 받음
- 공유 메모리를 통한 IPC
※ 공유 메모리(Shared Memory) = 프로세스들이 공유할 수 있는 메모리 영역
- 파이프(Pipe) = fork를 통해 부모 프로세스 => 자식 프로세스로 일방적으로 통신하는 단방향 통신 기법
- 소켓(Socket)을 이용한 IPC = 데이터 교환을 위해 양쪽 PC에서 각각 임의의 포트를 정하고 해당 포트 간의 대화를 통해 데이터를 주고받는 양방향 통신 기법
※ 소켓(Socket) = 네트워크상에서 동작하는 프로그램 간 통신의 종착점