본문 바로가기
CS/운영체제

[운영체제 OS] Process / PCB / Context Switch

by 루시킴 2021. 8. 18.

Process란?

실행중인 프로그램으로 스케줄링의 기본 단위이다. 프로세스가 실행되기 위해서는 메모리 공간에 올라가 있어야하는데, 그 공간을 Process Address Space라고 한다. 

 

Process Address Space

프로세스의 주소공간 (Process Address Space)

  • Stack - 함수 호출시 지역변수와 매개변수를 저장하며, 함수 종료시 사라짐
  • Heap - 동적으로 메모리 할당시에 사용하며 메모리 할당 해제 전까지 사라지지 않음
  • Static data - 정적 데이터를 저장하는 곳으로 한번 저장하면 바뀌지 않고 프로그램 종료시 사라짐
  • Code - 기계어 저장

 

프로세스 2가지 구분

CPU burst vs I/O burst

a. CPU-bound process - I/O burst < CPU burst 로 주로 연산위주의 프로세스를 의미 (ex : 기상청, 슈퍼컴퓨터)

b. I/O-bound process - I/O burst > CPU burst 로 사용자와 Interactive한 프로세스를 의미 (ex : 문서편집기, 영상재생)

* CPU burst - CPU가 running상태로 명령어를 수행하는 구간

* I/O burst - Waiting상태로 I/O 작업이 끝날때까지 기다리는 구간


Process 상태

Process State

프로세스 5가지 상태

  • New - 프로세스 생성
  • Running - 프로세스 실행
  • Waiting - 프로세스 실행하다 I/O event 등 CPU의 다른 작업으로 인해 멈춤
  • Ready - 프로세스가 CPU에 올라갈 준비가 된 실행가능한 상태
  • Terminated - 프로세스 실행 종료

과정 

Admit - 생성된 프로세스를 실행가능한 상태로 바꿔주는 것 (new -> ready)

Dispatch - 실행가능한 프로세스를 CPU에 할당시켜주는 것 (ready -> running)

Exit - 프로세스 실행이 끝나면 종료시키는 것 (running -> terminated)

Interrupt - 할당된 시간 안에 못 끝냈을때 실행중인 프로세스를 중지시키는 것 (running -> ready)

Wait -  I/O event 발생해서 CPU가 실행중인 프로세스 잠시 중지시키는 것 (running -> wait)


Process Control Block (PCB)

프로세스의 중요한 정보를 저장하는 운영체제의 자료구조로, 프로세스는 생성과 동시에 고유한 PCB를 가진다. 프로세스는 CPU할당을 받아 실행되다가도 중지되기도 하는데, 이러한 모든 상태를 PCB에 저장한다. 그리고, 다시 CPU를 할당 받을 시 PCB의 정보를 통해 중지된 시점부터 다시 프로세스를 실행한다. 

PCB에 저장되는 정보

PID (Process number) : 프로세스의 고유한 아이디

Process state : 프로세스의 현재 상태 (New, Ready, Running, Terminated, Waiting)

Program counter : 프로세스 다음에 실행할 명령어의 주소

CPU registers : CPU 상태 및 명령어 저장

 


Context Switch란?

멀티 프로세스 환경에서 CPU가 하나의 프로세스를 실행하고 있는 도중에 인터럽트(Timer Interrupt, System Call, I/O Event) 요청이 들어와 기존 작업 및 상태를 저장하고, 다음 프로세스를 CPU가 수행할 수 있도록 프로세스를 교체하는 작업을 말한다. 

지속적으로 Process를 교체하기 때문에 오버헤드 문제가 발생하지만, 여러 사람들이 컴퓨터를 동시에 사용해도 빠른 응답시간을 보장해주는 Time-sharing 장점이 더 크기 때문에 사용한다. 

 

Context swtich from process to process


 

 

'CS > 운영체제' 카테고리의 다른 글

[운영체제 OS] Process vs Thread  (2) 2021.08.21
[운영체제 OS] CPU Scheduling  (0) 2021.08.21
[운영체제 OS] Process Scheduler  (0) 2021.08.18
[운영체제 OS] System Call  (0) 2021.08.18
[운영체제 OS] Introduction  (0) 2021.08.18

댓글