728x90
프로세스 관리(Process Management)
1. 프로세스(Process)
프로세스의 정의
- 실행 중인 프로그램
- 실행을 위해 시스템(커널)에 등록된 작업
- 시스템 성능 향상을 위해 커널에 의해 관리됨
- 각종 자원들을 요청하고 할당 받은 개체
- 능동적인 개체(active entity)
- 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
- Abstraction for CPU sharing
- CPU를 공유하는 여러 작업 간의 구분을 위한 단위로 사용
- 각 프로세스는 컴퓨터 시스템을 독점해서 사용하는 것으로 인식
프로세스의 구성
- CPU 상태
- register
- 프로그램이 CPU에 올라가야 프로세스, 즉 CPU의 래지스터에 올라가야 함
- register
- 메모리
- Text (프로그램 코드 저장)
- Data (프로그램 초기 데이터 저장)
- Heap
- Stack
프로세스의 종류
구분 | 종류 | 설명 |
역할 | 시스템(커널) 프로세스 | 모든 시스템 메모리와 프로세서의 명령에 액세스할 수 있는 프로세스 |
사용자 프로세스 | 사용자 코드를 수행하는 프로세스 | |
병행 수행 방법 | 독립 프로세스 | 다른 프로레스에 영향을 주지 않거나 다른 프로세스의 영향을 받지 않으면서 수행하는 프로세스 |
협력 프로세스 | 다른 프로세스에 영향을 주거나 다른 프로세스에서 영향을 받는 병행 프로세스 |
프로세스 유사 용어
- Job : Batch System
- Program : 실행되기 전의 프로그램 이미지
- passive state(program) vs actice state(process)
- 한 프로그램은 여러 프로세스로 구성될 수 있음
- Task : 일반적 의미로 job과 유사
- CPU에서의 task : 하나의 실행 흐름
- Thread : Lightweight process
- Processor : CPU 프로세서
자원(Resource)의 개념
- 커널의 관리 하에 프로세스에게 할당/반납되는 수동적 개체(passive entity)
2. 프로세스 관리 블록(PCB, Process Control Block)
- OS가 프로세스 관리에 필요한 정보 저장
- 프로세스 생성 시 생성 됨
- 각 프로세스들에 대한 상태정보 저장
PCB가 관리하는 정보
- PID(Process Identification Number)
- 스케줄링 정보
- 프로세스 상태
- 메모리 관리 정보
- 입출력 상태 정보
- 문맥저장 영역
- 계정 정보
더보기
PCB 정보는 OS 별로 서로 다름
PCB 참조 및 갱신 속도가 OS의 성능을 결정 짓는 요소 중 하나
3. 프로세스 상태 변화
프로세스 상태 및 특성
상태 | 자원 할당 상태 | ||
Active (swapped-in) |
running | 프로세서 O | 메모리 O |
ready | 프로세서 X, 기타 자원 O | ||
asleep, blocked | 프로세서 X, 기타 자원 X | ||
Suspended (swapped-out) |
suspended ready | 프로세서 X | 메모리 X |
suspended block | 프로세서 X, 기타 자원 X |
1) created 상태
- 작업(Job)을 커널에 등록
- PCB 할당 및 프로세스 생성
- 커널은 가용 메모리 공간 상태 체크 후 프로세스 상태 전이(ready or suspended ready)
2) ready 상태
- 프로세서 외에 다른 모든 자원을 할당 받은 상태
- 프로세서 할당 대기 상태
- 즉시 실행 가능 상태
- dispathch/shedule
- ready 상태→ running 상태
3) running 상태
- 프로세서와 필요한 자원을 할당 받아 실행중인 상태
- preemption
- ready 상태 ← running 상태
- 프로세서 스케줄링(e.g. time-out, priorty changes)
- sleep/block
- running 상태 → asleep 상태
- I/O 등 자원 할당 요청
4) asleep, blocked 상태
- 프로세서 외에 다른 자원을 기다리는 상태
- 자원 할당은 System call에 의해 이루어짐
5) suspended 상태
- 메모리를 할당 받지 못한/빼앗긴 상태
- 커널 또는 사용자에 의해 발생
- memory image를 *swap device에 보관
*Swap device : 프로그램 정보 저장을 위한 파일 시스템
6) terminated, zombie 상태
- 프로세스 수행이 끝난 상태
- 모든 자원 반납 후 커널 내에 일부 PCB 정보만 남아있는 상태 (이후 프로세스 관리를 위한 정보)
프로세스 관리를 위한 자료구조
- 커널 내에 ready queue, waiting queue, running queue를 두고 프로세스들을 상태에 따라 관리
4. 인터럽트-Interrupt
- 예상치 못한 외부에서 발생한 이벤트
- I/O, Clock, Console, Program check, Machine check, Inter-process, System call 등 다양한 인터럽트 종류
인터럽트 처리 과정
5. Context Switching (문맥 교환)
- Context: 프로세스와 관련된 정보들의 집합
- CPU가 여러 프로세스를 처리할 때, 기존에 작업하던 프로세스의 정보(Register Context)를 저장하고(Context saving), 새로 처리할 프로세스의 정보(Register Context)를 불러오는 것(Context restoring)
- 기본적으로 overhead(비용)가 발생한다
- OS마다 다르며 성능에 큰 영향을 미친다
- Thread 등을 사용하여 불필요한 context switching을 줄여야 함
728x90
반응형