배경
- 지금까지는 프로세스가 싱글 스레드에서만 실행된다고 가정하고 그 처리 과정에 대해서 배웠음
- 하지만 프로세스는 여러개의 스레드를 가질 수 있음
프로세스 vs 스레드
프로세스
- 정의: OS로부터 독립적인 메모리 공간(코드, 데이터, 스택, 힙)을 할당받은 작업의 단위
- 특징
- 각 프로세스간 '기본적으로' 메모리 영역을 공유 하지 않음
- 만약 접근하고 싶다면 IPC를 사용해야함
- 각 프로세스간 '기본적으로' 메모리 영역을 공유 하지 않음
스레드
- 정의: 프로세스 내에서 실행되는 흐름의 단위
- 특징:
- 스레드들 간 코드, 데이터, 힙 영역을 공유하고, 스택 영역만이 스레드별로 할당된다.
- 각 프로세스들은 최소 한개 이상의 스레드를 가지고 ( 이 스레드를 메인 스레드라고 함 )
- 프로세스는 여러 개의 스레드를 가질 수 있다.
멀티 프로세스 vs 멀티 스레드
프로그램을 구현할때 여러가지 이유로 하나의 작업을 여러 개의 프로세스 or 여러 개의 프로세스로 구성하는데, 전자를 멀티 프로세스 후자를 멀티 스레드라고 한다.
멀티 프로세스
- 장점: 여러개의 프로세스 중 하나에 문제가 발생하면 해당 문제가 다른 프로세스로 확산이 되지 않음
- 단점: 독립적인 공간을 사용하기에 자원을 많이 사용하고 프로세스 간 통신이 어려운 면이 있음
멀티 스레드:
- 장점:
- 시스템 자원을 적게 소모
- 스레드 간 통신이 쉬움
- 스레드 생성/종료 와 컨텍스트 전환 비용도 프로세스보다 적게 발생
- 단점: 공유 메모리의 동기화 문제가 존재함
- 한 스레드에 문제가 생기면 전체 스레드에 영향을 미침
p.s) 멀티 스레드는 클라이언트 - 웹 서버 구조에서 큰 장점이 있음
만약 싱글 스레드 였으면, A 클라이언트 요청이 처리가 될때까지 B 클라이언트는 대기를 해야함.
하지만 멀티 스레드라면, A 클라이언트 요청이 들어오면 해당 요청에 대한 스레드를 생성하고 다시 추가적인 요청에 대한 listening을 하면
스레드 제한 개수전까지 여러개의 요청을 받을 수 있음
참고
https://haedallog.tistory.com/138
[OS] 프로세스(process)와 스레드(thread)
목차프로그램프로세스스레드멀티 프로세스 vs 멀티 스레드참고자료1. 프로그램먼저 프로세스를 살펴보기 전에 프로그램(program)이 무엇인지 알아볼 필요가 있다. 본래 프로그램의 의미는 업무를
haedallog.tistory.com
'CS > 운영체제' 카테고리의 다른 글
[OS] 프로세스 동기화(세마포어와 뮤텍스) (1) | 2024.09.02 |
---|---|
[OS] CPU 스케줄링 (1) | 2024.09.02 |
[OS] 프로세스간 통신(IPC) (0) | 2024.09.02 |
[OS] 프로세스 구조, PCB와 Context Switching (1) | 2024.09.02 |
[OS] 시스템콜과 I/O인터럽트 (3) | 2024.09.02 |