CPU스케줄링

2022. 11. 14. 20:47cs 상식/운영체제

CPU스케줄링 개요 

 

 

컴퓨터자원 : 필수장치인 (CPU,메모리) 그리고 주변장치로는 (하드디스크나 , 키보드 , 마우스) 있다.

 

 

 

CPU

;프로그램을 실행시키면 메모리에 프로세스가 생성되고 각 프로세스에는 1개 이상의 쓰레드가 있습니다.

프로세스들은 CPU를 차지 하기 위해 운영체제의 명령을 기다리고 있습니다.

 

CPU 스케줄링: 운영체제는 모든 프로세스에게 CPU를 할당/해제 하는데  여기서  스케줄러(운영체제) 가 고려해야 할 사항은 두가지가 있다.

 

  • 어떤 프로세스에게 CPU리소스를 줘야 하는가?( 메모리에는 수많은 프로세스들이 있는데  어떤 프로세스에게 CPU프로세스를 줘야 하는 가? , 하나만 주면 다른 프로세스 불만이 있다)
  • CPU를 할당 받은 프로세스가 얼마의 시간동앞 CPU를 사용하는가? 오늘날은 시분활 처리를 사용하는데  여러 프로세스에게 짧은 시간동안 돌아가면서  CPU를 할당한다. 

컴퓨터 성능에 가장 큰 영향을 미친다. 

 

CPU Burst: CPU를 할당 받아 실행하는 작업

I/O Burst: 입출력 작업 

 

 

다중큐

 

준비 상태 와 대기 상태는  큐(Queue)라는 자료구조로 관리된다.

 

큐(Queue)

먼저 들어온게 먼저 처리 되는 방식이다.

 

 

프로세스가 실행->준비 상태로 넘어갈때

 

 

 

 

운영체제는 해당 프로세스에 우선 순위를 보고 그에 맞는 "준비 큐"에 넣는다.

 

cpu스케줄러는 "준비 상태의 다중큐"에 들어가 있는 프로세스들 중에  적당한 프로세스를 선택해서 실행상태로 전환 시킨다.

 

 

프로세스가 실행상태에서 I/O 요청을 받아 대기 상태로 오게되면  

I/O작업 종류에 따라서 분류된 큐에 들어가게 된다.

하드디스크 작업은 "HDD큐"에 들어가고 그 작업이 끝나면 "HDD큐"에서 다시 꺼내 갑니다.

 

 

=> 프로세스가 아니라 정확히는 PCB가 들어가는 것이다.

프로세스정보를 담고 있는 PCB는 준비상태의 다중큐에 들어가서 실행되기를 기다리고 있고  CPU스케줄러에의해 

실행 상태로 전환된다 ,, 이때 CPU스케줄러는 준비상태의 다중큐를 사용해서 어떤 프로세스를 실행시킬지 결정합니다.

 

I/O도 실행중인 프로세스에서 I/O가 발생하면  해당 I/O작엡의 종류별로 나뉜 큐에 들어가고 CPU스케줄러는 이를 참조해 스케줄링을 한다.

 

스케줄링 목표

리소스 사용률: CPU사용률을 높이는 것을 목표로 할 수도 있고  I/O디바이스의 사용률을 높이는 것을 목표로 할수도 있다.

오버헤드 최소화:스케줄링을 하기 위한 계산이 너무 복잡하거나  컨텍스트 스위칭을 너무 자주하면  배보다 배꼽이 커진다.

공평성: 모든 프로세스에게 공평하게 CPU가 할당이 되어야 한다 , 공평의 의미는 시스템에 따라 달라질수 있다.

EX)자율주행 자동차 같은 경우, 자율주해 프로세스가 제일 중요하다.  이 운영체제는 이 프로세스에게 CPU가 

많이 할당되는것이 공평하다.

 

하지만 우리가 보통사용하는 것은 모든 프레세스에게 공평하게 CPU가 할당되어야 한다.

 

처리량:같은 시간내에 많은 것을 처리하는 것을 목표로 한다.

대기 시간: 작업이 요청하고 실제작업이 이루어지기 전까지 시간이 짧은 것을 목표로 한다.

응답시간:대화형 시스템에서 사용자의 요청이 얼마나 빨리 반응하는지 중요하기에 응답시간이 짧은 거을 목표로 한다.

=목표간에 상반되는 상황이 있어서 충족하기 어렵다. 처리량 높이기 위해서는 CPU를 하나에 할당 시간이 

많아야 하고 반면 응답시간을 CPU시키기위해서는 여러 프로세스에 골고루 CPU를 할당해야 하는데 

서로 상반되기에 둘다 목표를 같이 달성 할수 가 없다 .

 

사용자가 사용하는 시스템에 따라서 목표를 다르게 설정한다.

 

일반사용자는: 밸런스를 유지 하는 게 중요하다 .

과학 관련 프레세스는: 처리량 높이는 것이 좋고 

터치 스크린: 응답시간 속도가 빠른 것이 좋다.

 

 

FIFO

 

CPU 알고리즘을 알아보겠다.

 

  1. First In First Out : 스케줄링 큐에 들어온 순서대로 cpu를 할당받는 방식이다 . 이방식은 먼저 들어온 프로세스가 완전히 끝나야 다른 프로세스가 작동할수 있다. 장점은 단순하고 직관적이나 한 프로세스가 완전히 끝나야 다른 프로세스가 실행이 되기에 먼저 도착한 실행시간이  긴 프로세스가 있다면  실행시간이 짧은 프로세스가 그 프로세스가 끝날때 까지 기다려야 한다 , 또한 I/O 작업이 있다면 그 작업이 끝날때 까지 CPU는 기다려야 하기에 사용률이 떨어지게 된다.

 

스케줄링의 성능은 "평균 대기시간" 으로 평가한다

프로세스 여러개가 실행될때  프로세스 모두가 실행되기 까지 대기시간의 평균을 의미한다.

 

 

Burst time  긴 순서 대로 실행

25초/5초/4초

 

 

 

Burst Time 짧은 순서대로 실행

4초/5초/25초

 

 

=프로세스의 실행 순서만 바꿨는데 평균 대기 시간의 차이가 많이 난다.

 

 

 

FIFO알고리즘은  프로세스의  Burst Time에 따라 성능차이가 심하게 난다,
그래서 현대 윤영체제에서 잘 쓰이지 않고 일괄처리 방식에서 자주 쓰인다.












'cs 상식 > 운영체제' 카테고리의 다른 글

데드락  (0) 2022.11.16
프로세스 동기화  (0) 2022.11.15
CPU스케줄링 (2)  (0) 2022.11.14
프로세스와 쓰레드  (0) 2022.11.09
운영체제 들어가기  (0) 2022.11.09