본문 바로가기
front-end

[운영체제] OS(운영체제) 프로세스 스케줄링 / 스케쥴링 알고리즘 시스템 종류

by 현제☺️ 2023. 3. 9.
반응형

 

프로세스 스케줄링 개요

단일프로세서 시스템(Single Processor System)에서는 한 번에 한 프로세스만 실행될 수 있다.
하지만 프로세스가 항상 CPU를 사용하는 것은 아니다. 키보드나 마우스 등의 입력 장치에서 사용자의 입력을 기다리거나, 프린터 등의 느린 출력장치에서 데이터를 출력할 때 CPU는 일을 하지 않고 가만히 있는다. 일반적으로 프로세스는 CPU를 한차례 사용(CPU burst)하고 I/O를 한차례 사용(I/O burst)하는 주기를 반복한다. I/O를 사용하는 주기에서는 CPU를 사용하지 않는다. 그렇다면 여러 프로세스를 처리할 때, 한 프로세스가 모든 작업이 끝날 때까지 기다렸다가 다음 프로세스를 실행하는 방법보다 한 프로세스를 실행 가능한 시점까지 실행하고, I/O 등 CPU를 사용하지 않는 작업을 할 때는 다른 프로세스를 실행한다면 CPU 사용 효율을 높일 수 있다. (나무위키)

⟹즉 여러 프로세스를 처리할 때 한 프로세스의 모든 작업이 끝날 때까지 기다렸다가 다음 프로세스를 진행하는 비효율적인 방법이 아닌, 실행 가능한 시점까지 실행하고 CPU를 사용하지 않는 작업을 할 때 다른 프로세스가 실행하는 CPU 사용 효율을 높이는 방법

 

프로세스 스케줄링 종류

√ 배치 처리 시스템

여러 프로그램을 실행 시 첫 번째 응용 프로그램의 작업이 끝나면 바로 이어서 다음 응용 프로그램이 자동으로 실행될 수 있도록 하는 방법이다.(선입선출방법) 한 번에 하나의 작업만 처리하기 때문에 여러 한계가 존재한다.

 -각 응용프로그램당 실행시간을 정확히 계산할 수 없기 때문에, 먼저 실행된 프로그램 시간이 오래 걸릴 경우 이 프로그램이 실행되기까지의 대기시간이 과도하게 늘어난다.

 -한 번에 하나의 작업만 처리하기 때문에 멀티 태스킹이 불가능하다.

 -하나의 작업이 일단 실행된 경우, 중간에 입력된 작업은 해당 작업이 끝나야만 실행될 수 있다.

 

√ 시분할 시스템

다중 사용자 지원을 위해 응용 프로그램이 CPU를 점유하는 시간을 잘게 쪼개어 실행될 수 있도록 하는 시스템이다. 시분할 시스템의 목표는 컴퓨터 응답 시간을 최소화하는 것이다.

 

√ 멀티 태스킹 시스템

굉장히 짧은 시간 차이는 사람이 인지하지 못하는 점을 활용해 작업을 굉장히 짧은 시간 단위로 쪼갬으로써 단일 CPU에서 여러 응용프로그램이 동시에 실행되는 것처럼 보이게 하는 시스템이며, 시분할 시스템을 기반으로 한다.

10~20ms(0.01초~0.02초) 단위로도 실행 응용 프로그램이 변경되며 사용된다.(1000ms =1초)

멀티 태스킹

 

√ 멀티 프로세싱 시스템

멀티 태스킹은 CPU 코어 하나만 사용하지만 멀티 프로세싱은 여러 CPU 코어를 사용한다. 

멀티프로세싱은 최대한 CPU를 많이 활용하면서, 시간 대비 CPU의 활용도를 높이는 것을 통해 짧은 시간 안에 응용 프로그램 실행을 완료하는 것이다. 즉 여러 CPU에 여러 개의 프로그램을 병렬로 실행해서 실행 속도를 극대화시키는 시스템이다.

멀티 프로세싱

 

√ 멀티 프로그래밍 시스템

멀티 프로그래밍은 CPU 활용도를 최대한 높이는 것이다.(CPU활용도=CPU가 작업을 한 시간/프로세스 실행에 걸린 시간)

응용프로그램을 실행할 때 CPU만 이용하는 것이 아닌 메모리나 저장매체에도 접근한다. 응용프로그램을 실행 중 메모리에 접근한다면 그동안 CPU는 아무 작업도 하지 않는 상태가 된다. 멀티프로그래밍은 그동안 다른 응용프로그램을 실행할 수 있도록 하는 시스템이다.

 

요약정리

-배치 처리 시스템: 여러 프로그램을 순차적으로 실행시키는 시스템

-시분할 시스템: 다중 사용자 지원, 컴퓨터 응답 시간을 최소화하는 시스템

-멀티 태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템

-멀티 프로세싱: 여러 CPU에서 여러 개의 응용 프로그램을 병렬로 실행해서, 실행 속도를 높이는 기법

-멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용하는 시스템

 

스케줄링 알고리즘 개요

프로세스는 필요한 *시스템 자원을 할당받기 위해 큐에 대기하는데, 큐에 있는 프로세스를 어떻게 스케줄링하는지를 프로세스 스케줄링 알고리즘이라고 한다. 스케줄러는 특정 알고리즘에 따라 프로세스를 실행 또는 교체시킨다.

*시스템자원(System Resource) = 컴퓨터 하드웨어

-CPU(중앙처리기), Memory(DRAM,RAM)

-I/O Devices(입출력장치): 모니터 마우스 키보드 등

-저장매체: SSD,HDD(하드디스크)

 

스케줄링 알고리즘 종류

√ FLFO 스케줄러(FCFS,First Come First Served)

가장 간단한 스케줄러로 프로세스가 저장매체를 읽는다든지 하는 작업 없이, 프로세서를 들어온 순서대로 실행하는 스케줄러이다. 스케줄링의 구현이 쉽고 프로세서가 지속적으로 프로세스를 처리해서 처리율이 높지만, 장기 실행 프로세스가 단기 실행 프로세스를 모두 지연시켜 평균 대기시간이 길어지게 된다.

 

√ 최단 작업 우선 스케줄러(SJF,Shortest Job First)

가장 프로세스 실행 시간이 짧은 작업부터 실행을 시키는 알고리즘이다. 위의 FLFO의 방법과는 같지만 실행시간이 적은 순서대로 우선순위 큐를 이용한다고 생각하면 된다. 항상 실행 시간이 짧은 작업을 가장 먼저 실행하므로 평균 대기시간이 짧지만, 기본적으로 짧은 작업이 항상 먼저 시작되기에 불공평하고 실행시간을 예측하기 어렵다.

 

√ 우선순위 기반 스케줄러(Priority-Based)

우선순위 스케줄링은 프로세스가 Ready Queue(준비큐)에 도착하면 우선순위를 비교(정적or동적)하여 우선순위가 가장 높은 프로세스에 CPU를 할당하는 방식이다. 각 프로세스의 상대적 중요도를 명시할 수 있으며, 실시간 시스템에 유리하다. 하지만 사람이 직접 모든 프로세스에 대한 우선순위를 매기는 것은 불가능하기 때문에 스케줄러가 프로세스에 우선순위를 매기는 동적 우선순위가 많이 사용된다.

-정적 우선순위: 프로세스마다 우선순위를 미리 지정

-동적 우선순위: 스케줄러가 상황에 따라 우선순위를 동적으로 변경

 

√ Round Robin 스케줄러

프로세스가 도착한 순서대로 프로세스를 디스패치하지만 정해진 시간 할당량에 의해 실행을 제한한다. 즉, 시간 할당량을 매 프로세스에 주고 할당된 시간 안에 완료되지 못한 프로세스는 준비 큐의 맨뒤에 배치되도록 하여 CPU를 독점하지 않고 공평하게 이용될 수 있게 한다.

ex) 정해진 시간 할당량=3일 때

프로세스 도착시간 실행시간
P1 1 6
P2 2 2
P3 3 4
1 2 3 4 5 6 7 8 9 10 11 12
P1 P2 P3 P1 P3

 

728x90
반응형

댓글