스레드
프로세스 내에서 실행되는 실행 흐름의 단위
각각 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택을 가질 수 있다.
멀티프로세스와 멀티스레드
멀티프로세스와 멀티스레드에 가장 주된 차이점은 자원 공유 여부이다.
- 프로세스간에는 기본적으로 자원을 공유하지 않음
- 스레드 간에는 프로세스의 자원(입출력장치, 열린 파일 등)을 공유
스레드 간에는 프로세스의 자원을 공유하기 때문에 문제가 발생했을 경우 모든 스레드에 문제가 발생한다.
멀티 프로세스와 멀티 스레드의 차이 예
웹브라우저의 새 탭 생성을 통해 만든 탭이 모두 개별 프로세스로 만들어졌다면 탭에서 문제가 생겼을 때 다른 탭에는 영향을 주지 않는다.
하지만 각 탭을 프로세스가 아니라 스레드로 만들어졌다면 하나의 탭에 문제가 생긴다면 모든 탭이 영향에 영향을 주게 될 것이다.
멀티 프로세스가 멀티 스레드보다 항상 좋은 것은 아니다.
멀티 프로세스는 기본적으로 자원을 공유하지 않기 때문에 각 프로세스를 메모리에 할당해야해서 멀티 스레드에 비해 메모리 소요가 크다.
프로세스 간 자원을 공유할 수 있는 방법이 있다.
프로세스간 통신(IPC)
- 공유 메모리를 통한 통신
- 파이프를 통한 통신
- 네트워크 소켓을 통한 통신
정리
- 스레드란 프로세스 내에서 실행되는 실행 흐름의 단위로 각각의 스레드ID, 레지스터, 프로그램 카운터, 스택을 가질 수 있다.
- 멀티프로세스와 멀티스레드의 가장 큰 차이는 자원 공유 여부이다. 프로세스는 기본적으로 자원을 공유하지 않고 스레드는 프로세스의 자원을 공유한다.
- 스레드는 프로세스의 자원을 공유하기 때문에 한 스레드에서 문제가 발생할 경우 다른 스레드에도 영향이 발생한다.
- 멀티프로세스는 기본적으로 자원을 공유하지 않기 때문에 각 프로세스를 메모리에 할당해야해서 스레드보다 메모리소요가 크다.
- IPC(프로세스간 통신)를 통해서 프로세스 간 자원을 공유할 수 있는 방법도 있다.
'CS > 운영체제' 카테고리의 다른 글
[OS] CPU 스케줄링 알고리즘 (0) | 2023.09.08 |
---|---|
[OS] CPU 스케줄링 (0) | 2023.09.08 |
[OS] 프로세스 생성과 상태 (0) | 2023.09.07 |
[OS] 커널 영역과 사용자 영역의 프로세스 (0) | 2023.09.07 |
[OS] strace기반 시스템 콜 관찰하기 (0) | 2023.09.07 |
댓글