프로세스실행중인 프로그램을 말하며, 프로세스의 문맥(Context)을 아는 것이 중요하다. 여러 개의 프로세스들이 번갈아 실행이 되기 때문에 문맥 정보를 기억해두지 않으면 이어서 실행할 수 없기 때문이다.

 

프로세스의 문맥을 나타내는 정보는 CPU의 PC(Program Counter)와 각종 레지스터, 프로세스의 주소 공간, 그리고 운영체제 커널에 생성되는 해당 프로세스의 PCB(Process Control Block)와 커널 스택이 있다.

 

CPU의 PC는 해당 프로세스의 code 공간에 다음 실행할 명령어의 주소를 담고 있고커널 주소 공간은 프로세스들이 공유하기 때문에 프로세스별로 data영역에 PCB, 스택 영역에 프로세스별 스택을 생성한다.

 

프로세스의 상태는 다음과 같이 나뉜다.

 

NEW(생성 중)

RUNNING(CPU를 잡고 명령 수행 중)

READY(CPU 대기 상태)

BLOCKED(CPU가 있어도 명령을 수행할 수 없는 상태)

TERMINATED(처리가 끝난 상태)

SUSPENDED (외부적인 이유로 프로세스 수행이 정지된 상태)

 

프로세스 스케줄링 큐

 

프로세스는 준비 상태가 되면 READY 큐에 들어가서 CPU를 받아 처리를 하고 이때는 RUNNING 상태가 되고 이후 타이머 인터럽트에 의해 다시 READY 상태가 되거나 입출력 요청시 BLOCKED 상태가 되며 Device 큐에 들어간다.

여기서 프로세스 상태와 큐 공간은 운영체제가 프로세스를 스케줄링 하기 위해 Data 영역에 큐를 만들어놓고 프로세스 상태를 바꾸어가며 처리를 한다. (실제 큐는 우선 순위 큐처럼 우선 순위가 있다)

 

운영체제는 data 영역에 프로세스별로 PCB를 생성해서 보관한다 했는데 위에서 말한 프로세스의 상태, 스케줄링 정보, 우선순위, 프로세스의 문맥 정보, CPU 관련 PC, 레지스터 값 등을 구조체로 보관하고 있는다.

그래서 운영체제는 CPU를 현재 프로세스에서 다른 프로세스로 넘겨줄 때 현재 프로세스의 PCB에 상태를 저장하고 다음 프로세스의 상태를 PCB에서 읽어오는데 이를 문맥 교환(Context Switching)이라 한다.

 

시스템 콜이나 인터럽트가 발생해도 프로세스가 바뀌지 않으면 컨텍스트 스위칭이 발생하지 않는데 이 경우는 컨텍스트 스위칭은 아니지만 운영체제에게 CPU가 넘어가면서 PCB에 save가 된다. 하지만 컨텍스트 스위칭(캐시 메모리를 flush하는 등)에 비하면 추가 오버헤드가 적은 편이다.

 

프로세스 스케줄링에는 장기, 단기, 중기가 있는데 먼저 단기 스케줄러(Short term, CPU Scheduler)다음 번에 어떤 프로세스를 running시킬지 결정하고 프로세스에 CPU를 주는 문제를 담당한다.

장기 스케줄러(Long term, job scheduler)시작 프로세스중 어떤 것을 Ready 큐로 보낼지 결정하며 메모리에 올라가있는 프로세스의 수(degree of Multiprogramming)를 제어하는 방식으로 시분할 시스템에서는 보통 장기 스케줄러를 사용하지 않고 중기 스케줄러를 사용한다. 중기 스케줄러(Medium term, Swapper)일단 프로세스가 시작되면 메모리를 할당하고 너무 많은 프로그램이 올라가면 일부를 메모리를 뺏는 방식으로 프로세스의 수를 제어한다. 이때 프로세스 상태를 SUSPENDED라고 하며 프로세스가 통째로 디스크에 swap oup 되는데 이 외에 사용자가 프로그램을 정지시킨 경우도 SUSPENDED에 해당된다.

(BlOCKED는 자신이 요청한 event가 만족되면 READY, SUSPENDED는 외부에서 resume 해주어야 Active)

 

 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

 

 

프로세스 스케줄링, 그리고 기법

도커에서 프로세스 스케줄링 하다가 이전에 정처기에서 학습했던 선점/비선점 스케줄링에 대한 이해도 떨어지는 것 같아 정리할 겸 글을 남긴다.

velog.io

 

[운영체제 OS]우선순위 스케줄링(Priority Scheduling) 총정리,장단점, aging 스케줄링, 우선순위 부여기

[운영체제 목차] 안녕하세요!! 오늘은 우선순위 스케줄링에 관한 내용을 들고 왔어요 ㅎㅎ 우선순위 스케줄링이란? 우선순위 알고리즘이 나오게 된 흐름! 이전 SJF가 되었던 SRTF가 되었던 이 스케

jhnyang.tistory.com

 

'CS' 카테고리의 다른 글

[운영체제] 가상 메모리  (0) 2023.04.05
[운영체제] 프로세스와 스레드  (0) 2022.12.08
컴퓨터 구조와 운영체제  (0) 2022.12.01
컴퓨터 구조  (0) 2022.12.01

+ Recent posts