Program : 파일 형태로 존재하는 실행 파일
Process : CPU & Memory 사용해 실행 중인 프로그램 (= job = task)
※ Process 상태
1. new (생성) : 프로세스 생성
- PCB (Process Control Block) 생성 : 프로세스를 제어하는데 필요한 정보
- ex. 상태 전이, context switching 시 사용
2. ready (준비) : 준비 큐(queue)에서 CPU 할당 받기를 기다리는 준비 상태
3. running (실행) : CPU를 사용하여 실행 중인 상태
- 문맥 교환 이뤄짐 (Context Switching) : CPU에서 실행 중인 A 프로세스를 B 프로세스로 전환하는 과정
4. terminated (완료) : 실행이 완료된 상태
- PCB 삭제
5. waiting (대기) : I/O controller를 사용하여 I/O가 완료될 때까지 대기하는 상태
※ Process 전이
1. admitted (승인) : new → ready
2. scheduler dispatch (스케줄러 디스패치) : ready→ running
3. interrupt (인터럽트) : running→ ready
4. I/O wait (입출력 대기) : running→ waiting
5. I/O completion (입출력 완료) : running → terminated
Process의 메모리 구조
※ 메모리의 OS 영역 : PCB
※ 메모리의 사용자 영역
- 코드 영역 : 디스크에서 빌드된 프로그램
- 데이터 영역 : 전역 변수 or 정적 변수 저장
- Stack 영역 : 지역 변수 저장
- Heap 영역 : malloc() & free() 메서드를 사용한 동적 메모리 할당 및 해제
※ fork() : 프로세스 복사하는 함수
- 원본 : 부모, 복사한 프로세스 : 자식
- PID, PPID, CPID, 메모리 관련 정보 다름
※ exec() : 프로세스에서 프로그램 실행하는 함수
- 코드, 데이터, 힙, 스택 영역 변경
◎ 참고
좀비 프로세스 : 자식 프로세스가 종료되었지만 자원이 남아있는 프로세스
- 자식보다 부모 프로세스가 먼저 종료된 경우 (= Orphan Process)
- 자식 프로세스가 비정상 종료된 경우
Thread
프로세스에서 실질적인 작업 실행
TCB
- multiprocess
1. 각 프로세스는 독립적으로 실행, 각각 별개의 메로리 차지
2. Distributed-memory 방식 (분산 메모리 방식)
3. 구현 방법 : MPI 병렬 프로그래밍
- multithread
1. 각 스레드는 독립적으로 실행되지만 한 프로세스 내 메모리 공유
2. Shared-memory 방식 (공유 메모리 방식)
3. 구현 방법 : CreateThread, 리눅스의 pthread, OpenMp 병렬 프로그래밍
'CS > Operating System' 카테고리의 다른 글
메모리 주소 & 메모리 할당 (0) | 2023.08.31 |
---|---|
프로세스 간 통신 & 임계 영역 (0) | 2023.08.31 |
Process Priority (0) | 2023.08.31 |
컴퓨터의 구조 (0) | 2023.08.30 |
Operating System 이란? (0) | 2023.08.30 |