- 멀티 프로세스는 둘 이상의 프로그램을 실행시키기 위해 필요
- 하나의 프로그램은 하나의 흐름을 가지고 실행
ex) 테트리스에서 멀티 플레이로 2명이 동시에 진행(흐름이 2개)
ㄴ 하나의 프로그램 내에서 둘 이상의 실행 흐름을 가짐
ㄴ 하나의 흐름 안에 Context Switching으로 인해 여러 프로세스의 실행으로 보이게 됨
ㄴ 시작은 부모 프로세스로 시작하지만 자식 프로세스가 생성되어 여러 흐름으로 프로그램이 실행됨
- 프로세스A와 프로세스B가 Code영역을 공유하여 사용해도 무방하지만 각 프로세스가 사용하는 함수를 동일한 Stack영역을 사용하게 되면 성능에 문제가 발생 : A와 B가 동시에 사용하게 되면 스택에 쌓이는 순서와 호출 순서가 뒤섞이게 됨
- 이러한 문제를 해결하기 위해 만들어진 것이 쓰레드
- 쓰레드 A와 쓰레드 B는 프로세스의 Code 영역, Data 영역, Heap 영역의 공간을 공유
ㄴ 쓰레드는 프로세스의 공유하는 영역에 접근 가능(프로세스 간 통신 기법(IPC) 없이 접근 가능)
- 쓰레드 A, B가 사용하는 Stack 영역은 별도로 마련하여 사용
- 쓰레드와 프로세스는 서로 담당하는 영역이 다른 것이지 대체 가능한 것이 아님
'시스템 프로그래밍' 카테고리의 다른 글
12-1. Windows에서의 쓰레드 생성과 소멸 (0) | 2022.06.02 |
---|---|
11-2. Windows에서의 프로세스와 쓰레드 (0) | 2022.05.31 |
10-3. 호출 규약과 실행의 이동 (0) | 2022.05.25 |
10-2. 함수 호출 인자의 전달과 PUSH & POP 명령어 디자인 (0) | 2022.05.25 |
10-1. 절차적 함수 호출(Procedure Call) 지원 CPU 모델 (0) | 2022.05.25 |