프로세스 개요
1. 프로세스란?
- 프로그램은 저장장치에 저장되어 있는 정적인 상태이고,
프로세스는 실행을 위해 메모리에 올라온 동적인 상태임
- 일괄 작업 방식은 한 번에 하나의 작업만 처리하는 것임
-> 반면, 시분할 방식은 CPU가 시간을 쪼개어
여러 프로세스에 적당히 배분함으로써 동시에 실행하는 것처럼 느껴짐
- 현대의 운영체제는 시분할 방식을 기본으로 사용하기 때문에
프로세스가 여러 상태를 오가며 실행됨
- 프로세스 제어 블록(Process Control Block)은 프로그램이 프로세스가 될 때 생성됨
-> 프로세스 제어 블록은 프로세스 구분자(Process Identification), 메모리 관련 정보,
프로그램 카운터와 각종 레지스터 같은 중간값을 관리함
2. 프로세스의 상태
- 프로세스에는 네 가지 상태가 존재함
-> 그것은 생성 상태, 준비 상태, 실행 상태, 완료 상태임
- 준비 상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정하는 일은
CPU 스케줄러가 담당함
-> CPU 스케줄러는 준비 상태의 맨 앞에서 기다리고 있는 프로세스 제어 블록을
CPU에 전달하여 작업이 이루어지게 함
-> 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업을
디스패치(dispatch)라고 함
- CPU 스케줄러에 의해 선택된 프로세스는 실행 상태에서 일정 시간 동안 작업을 하는데,
프로세스에 배당된 작업 시간을 타임 슬라이스 또는 타임 퀀텀이라고 부름
- 오늘날 운영체제는 효율성을 고려하여 프로세스의 상태 한 가지를 더 만들었음
-> 어떤 프로세스가 입출력을 요구하면, 입출력이 완료될때까지 기다려야 하는데,
이를 대기 상태라고 함
-> 즉, 입출력을 요청한 프로세스는 실행 상태에 두지 않고 대기 상태로 옮김
(2-1) 생성 상태
- 생성 상태는 프로그램이 메모리에 올라오고 운영체제로부터 프로세스 제어 블록을 할당 받은 상태임
-> 생성된 프로세스는 바로 실행되는 것이 아니라 준비 상태에서 자기 순서를 기다림
(2-2) 준비 상태
- 준비 상태는 실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태임
프로세스 제어 블록은 준비 큐에서 기다리며 CPU 스케줄러에 의해 관리됨
-> 지금까지는 준비 큐가 1개인 것처럼 설명했지만 실제로는 다수의 준비 큐가 운영됨
(2-3) 실행 상태
- 실행 상태는 프로세스가 CPU를 할당 받아 실행되는 상태임
-> 준비 상태에 있는 많은 프로세스 중 실행 상태에 들어가는 프로세스는 CPU의 개수 만큼임
(2-4) 대기 상태
- 대기 상태는 실행 상태에 있는 프로세스가 입출력을 요청하면
입출력이 완료될때까지 기다리는 상태임
(2-5) 완료 상태
- 완료 상태는 프로세스가 종료되는 상태임
참고
- 쉽게 배우는 운영체제