-
Process & ThreadCS/OS 2022. 3. 4. 15:24728x90
Program
- 실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음
Process
- 실행 중인 Program
- 운영체제로부터 시스템 자원을 할당 받는 작업의 단위
Stack (매개변수, 지역 변수 등 임시적인 자료: return 값) .
.
.Heap (동적으로 할당되는 메모리: new 등) Data (전역 변수: Static 등) Text (Program의 코드) 운영체제는 process를 관리하기 위해 각 process에 대한 PCB를 갖는다.
PCB (Process Control Block)
- 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조
- 각 프로세스는 운영체제에서 PCB로 표현
- 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB도 함께 제거
- CB는 프로세스 상태 관리와 문맥 교환(Context switch)을 위해서 필요
PCB구조
Pointer Process State Process Number(PID) Program Counter Registers Memory Limits ... - Pointer : 부모/자식 프로세스에 대한 포인터, 자원에 대한 포인터 등
- PID: 프로세스 식별자
- 프로세스 상태 : new, ready, running, waiting, halted 등
- 프로그램 카운터 : 다음 실행할 명령어의 주소
- 스케줄링 정보 : 우선순위 등
Thread
스레드 구조 - 프로세스 내에서 실행되는 흐름의 단위
- 각 프로세스는 한 개 혹은 그 이상이 있음
- CPU 이용의 기본 단위
- Text, data, heap 영역을 공유
- 각 thread는 별도의 stack 영역을 가짐 (그래서 독립적으로 일처리 가능)
Multi Thread (Thread가 2개 이상)
- 프로세스의 자원을 공유
- 향상된 응답성
- Context switching 비용이 적음
- 자원을 공유하는 만큼, 충돌을 주의 (Thread-safe)
Multi Process (Process가 2개 이상)
- 하나의 작업을 여러 개의 프로세스가 처리
- 프로세스간 통신(IPC, Interprocess communication)
- Context switching 비용이 큼
- 자식 프로세스 중 하나가 문제가 생겨도 다른 프로세스에 영향이 없음
+ 멀티 프로그래밍과 멀티 프로세싱의 차이??
728x90'CS > OS' 카테고리의 다른 글
macOS shell을 bash에서 ZSH로 바꾸기 (0) 2022.04.11 가상메모리 (0) 2022.03.20 Blocking & Non-Blocking 그리고 Sync & Async (0) 2022.03.05 OS 운영체제: 스케줄링(Scheduling) (0) 2022.02.27