홍카나의 공부방

[운영체제] Ch.3 프로세스의 정의, 상태, state diagram, 인터럽트 본문

Operating System

[운영체제] Ch.3 프로세스의 정의, 상태, state diagram, 인터럽트

홍문관카페나무 2023. 3. 18. 23:35

본 글은 김덕수 교수님의 2019년도 봄학기 운영체제(CPA310)

강의 내용을 바탕으로 요약 정리한 내용입니다.

 

https://sites.google.com/view/hpclab/courses/operating-system

 

HPC Lab., KOREATECH - Operating System

Operating System (CSE132)

sites.google.com

 


Job vs Process

 

작업과 프로세스를 먼저 구분해보자.작업(Job)은 쉽게 말해 프로그램(Program)이며,컴퓨터 시스템에 실행을 요청하기 전에 있는 데이터를 의미한다.

 

그에 비해 프로세스는실행을 위해 커널에 등록되고, 커널의 관리하에 있는 작업이다.프로세스들은 시스템 성능 향상을 위해 커널에 의해 관리된다.

쉽게 말해, 프로세스는 실행 중인 프로그램이다.

 

Job vs Process

 

 

프로세스들은 생성 시에 프로세스 관리 블록(PCB)을 커널로부터 할당받으며,

해당 프로세스의 PCB는 커널 메모리 공간에 배치된다.

PCB에는 프로세스ID(PID), 프로세스 상태(state), 스케쥴링 정보 등이 들어가며 OS 별로 다르다.


Process states

 

프로세스의 상태로는 Create, Running, Ready, asleep, suspended blocked, suspended ready, Terminated 가 존재한다.

process state transition diagram

 

위 그림은 운영체제를 배웠다면 익숙해질 수밖에 없는 diagram이다.

 

(1) Create

- Created State에서는 작업을 커널에 등록한다. ( = 프로세스를 만든다. )

- 즉, 프로세스를 만들고 해당 프로세스의 PCB를 커널 메모리 공간에 생성한다.

- 여기서 가용 메모리 공간을 체크한 뒤, 메모리 공간이 있으면 ready로, 없으면 suspended ready 상태로 전이시킨다.

 

(2) ready

- ready state는 프로세스가 프로세서 외에 다른 모든 자원을 할당받은 상태를 의미한다.

- 프로세서 할당 대기 상태라고 할 수 있다. 프로세서만 할당받으면 즉시 작업에 들어갈 수 있다.

- ready에서 running 상태로 전이될 때, dispatch or schedule 된다고 한다.

 

(3) running

- running state는 프로세스가 프로세서 및 필요한 자원을 모두 할당받은 상태다.

- 여기서 커널의 프로세서 스케쥴링에 따라서 프로세스가 preemption되어 ready 상태로 전이할 수도 있고

- I/O interrupt 등의 이유로 sleep(block)되어 asleep 상태로 넘어갈 수도 있다.

 

(4) asleep/blocked

- 프로세서 외에 다른 자원을 기다리는 상태다.

- running 상태인 프로세스가 I/O 등의 작업을 수행해야 할때, 커널에 System call을 요청한다.

- 자원 할당은 System Call 요청에 의하여 커널로부터 진행된다.

- 이 때 running 상태인 process가 sleep되어 asleep으로 넘어간다.

- system call 요청이 완료되면 wakeup되어 ready로 넘어간다.

- running 상태로 바로 넘어갈 수 없는 이유는 이미 다른 프로세스가 프로세서를 선점하고 있는 상태이기 때문이다.

 

(5) Suspended

- 메모리를 할당받지 못한(빼앗긴) 상태다.

- 커널 또는 사용자에 의해 발생되며, 각각 swap-in, swap-out 된다.

 

(6) Terminated

- 프로세스 수행이 모두 끝난 상태이다.

- 모든 자원을 반납한 후에 커널 내에 일부 PCB 정보만 남아있는 상태다.

- 일부 PCB 정보를 남겨두면, 해당 프로그램(작업)이 다시 커널로 등록될 때 그거를 다시 참고하면 된다.

 


 

Interrupt

 

인터럽트는 예상치 못한, 외부에서 발생한 이벤트를 의미한다.

인터럽트의 종류는 다음과 같다.

• I/O interrupt
• Clock interrupt
• Console interrupt
• Program check interrupt
• Machine check interrupt
• Inter-process interrupt
• System call interrupt

 

인터럽트 처리 과정

 

인터럽트 처리 과정은 위와 같다.

이때 프로세스가 interrupt되면, 커널이 해당 프로세스를 다시 진행할 때 활용할 수 있도록

해당 프로세스의 register context를 커널 메모리 공간에 저장한다. 이를 context saving이라고 한다.

이와 거의 동시에 프로세스 중단이 진행된다.

(여기서 Context는 프로세스와 관련된 정보들의 집합을 의미한다.)

 

그리고 인터럽트 핸들링, 인터럽트 서비스가 진행된 다음에

해당 프로세스가 block -> ready -> running 상태로 넘어올 때 Register Context를 복구하면서 작업을 다시 수행한다.

이 과정을 context restoring이라고 한다.

 

이렇게 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일을

Context Switching이라고 한다.

 

Context Switch에 소요되는 비용은 OS마다 다르지만, 비용의 크고 작음과 관계없이 overhead는 발생한다.

따라서 Thread 등을 사용하며 불필요한 Context switching을 줄이는 것이 중요하다.

반응형