본문 바로가기

OS

CPU 스케줄링

CPU 버스트 : CPU를 이용하는 작업

입출력 버스트 : 입출력장치를 기다리는 작업

 

입출력 집중 프로세스 : CPU 보다는 입출력 작업이 많은 프로세스 / 입출력 버스트가 많은 프로세스

→ 대기 상태로 오래 있음

CPU 집중 프로세스 : CPU 작업이 많은 프로세스 / CPU 버스트가 많은 프로세스

 

위의 둘 중 입출력 집중 프로세스가 우선순위가 더 높음

→ 실행하면 당분간 대기상태로 있을거니까 먼저 해치워버림

 

우선순위는 PCB(Process Control Block)에 부여됨


스케줄링 큐 : 메모리에 적재되고 싶은 프로세스를 큐에 삽입하여 관리

 

준비 큐 : CPU를 사용하고 싶은 프로세스를 담은 큐

대기 큐 : 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스를 담는 큐

 

대기 큐에서 입출력이 완료되면 준비 큐에 삽입됨


선점형 스케줄링

CPU를 사용하는 프로세스가 일정 시간 사용하면 빼내고 다음 프로세스를 CPU에 인가

프로세스가 이용중인 자원 강탈 가능

 

비선점형 스케줄링

어떤 프로세스가 CPU를 사용하고 있으면 끝날 때까지 건들이지 않고 내비둠

프로세스가 이용중인 자원 강탈 불가


스케줄링 알고리즘

선입 선처리 스케줄링(First Come First Served) : 먼저 온거부터 비선점형 스케줄링으로 처리 - 호위효과 발생

 

호위효과 : CPU 사용시간이 긴 프로세스에 의해 CPU 사용 시간이 짧은 프로세스들이 기다리는 현상

 

최단 작업 우선 스케줄링(Shortest Job First) : CPU 사용시간이 적은 프로세스부터 처리 - 선점,비선점  구현 가능

 

라운드 로빈 스케줄링 : 타임 슬라이스를 이용하여 정해진 시간만큼 CPU 사용하고 완료되지 못했다면 큐의 맨 뒤에 다시 삽입

 

타임 슬라이스 : CPU를 이용할 수 있는 정해진 시간

 

최소 잔여 시간 우선 스케줄링(Shortest Remaining Time) : 최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링

먼저 큐에 도착한 순서대로 타임 슬라이스만큼 실행한 뒤 대기하는 큐 중에 실행 시간이 가장 짧은 프로세스부터 실행

ex) A : 0s 도착, 실행시간 100s / B : 5s 도착, 실행시간 15s / C : 도착 7s, 실행시간 10s / 타임 슬라이스 : 10s

A 10s 실행 → 실행시간이 가장 짧은 C 실행 → C는 처리 완료 됬으므로 B 10s 실행 → B는 5s / A는 90s 남았으니 B실행 → B 완료 되었으니 A 10s 실행 → A 10s 실행...

 

우선순위 스케줄링

우선순위가 높은 프로세스부터 실행

우선순위가 높은 프로세스가 큐에 들어올 수 있어 기아 현상이 발생할 수 있지만 이를 위해 에이징 기법으로 방지

최단 작업 우선 스케줄링 / 최소 잔여 시간 우선 스케줄링이 일종

 

기아 현상 : 우선순위가 높은 프로세스들이 계속 먼저 실행되서 우선순위가 낮은 프로세스가 계속 뒤로 밀려나는 현상

 

에이징(aging) 기법 : 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식

 

다단계 큐 스케줄링

우선순위 별로 준비 큐를 여러개 사용하는 스케줄링

우선순위가 높은 것부터 먼저 처리하고 비어있을때 그다음 우선순위 큐 프로세스 처리

큐별로 다른 타임 슬라이스 / 다른 스케줄링 적용 가능

기아 현상 발생 가능

 

다단계 피드백 큐 스케줄링

다단계 큐 스케줄링에서 프로세스들이 큐 사이를 이동할 수 있음

타임 슬라이스에 작업을 끝내지 못하면 우선순위 낮아짐

오래 기다린 프로세스의 우선순위를 높임

가장 일반적인 CPU 스케줄링 알고리즘

'OS' 카테고리의 다른 글

가상메모리  (0) 2023.02.13
페이징 / 세그멘테이션  (0) 2023.02.07
운영체제 / 커널 / 콘솔 / 터미널 / 쉘  (0) 2022.12.23