OS

프로세스 개요

Bryan Lee 2022. 4. 28. 22:01

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) 완료 상태

- 완료 상태는 프로세스가 종료되는 상태임 

 

참고

- 쉽게 배우는 운영체제