221226 TIL

apwierk·2022년 12월 26일
0

TIL

목록 보기
32/33

CPU 스케줄링

: 운영체제가 프로세스들에게 공저앟고 합리적으로 CPU 자원을 배분하는 것

프로세스 우선순위

우선순위가 높은 프로세스는 대표적으로 입출력 작업이 많은 프로세스가 있다.
대부분의 프로세스들은 CPU와 입출력장치를 모두 사용하며 실행된다. 달리 말하면 프로세스는 실행 상태와 대기 상태를 반복하며 실행된다.
그런데 프로세스 종류마다 입출력장치를 이용하는 시간과 CPU를 이용하는 시간의 차이가 있다.
비디오 재생이나 디스크 백업 작업을 담당하는 프로세스와 같이 작업이 많은 프로세스를 입출력 집중 프로세스,
복잡한 수학 연산, 컴파일, 그래픽 처리 작업을 담당하는 프로세스를 CPU집중 프로세스 라고 한다.

CPU 버스트와 입출력 버스트
CPU를 이용하는 작업을 CPU 버스트라 하고, 입출력장치를 기다리는 작업을 입출력 버스트라고 한다.

만약, CPU 집중 프로세스와 입출력 집중 프로세스가 동시에 CPU 자원을 요구한다면,
입출력 집중 프로세스를 가능한 빨리 실행시켜 입출력장치를 끊임없이 작동시키고, 그 다음 CPU 집중 프로세스에 집중적으로 CPU를 할당하는 것이 더 효율적이다.

프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 하기 위해 운영체제는 프로세스마다 우선순위를 부여한다.
운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, 이것을 기준으로 먼저 처리할 프로세스를 결정한다.

스케줄링 큐

PCB에 우선순위가 적혀 있다고는 하지만 CPU를 사용할 다음 프로세스를 찾기 위해 운영체제가 일일이 모든 프로세스의 PCB를 찾는 것은 비효율 적이다.
그래서 운영체제는 메모리로 적재되고 싶은 프로세스들을 큐에 삽입하여 줄을 세운다.

준비 큐: CPU를 이용하고 싶은 프로세스들이 서는 줄
대기 큐: 입출력 장치를 이용하기 위해 대기상태에 접어든 프로세스들이 서는 줄

선점형과 비선점형 스케줄링

선점형 스케줄링: 하나의 프로세스가 자원을 사용하고 있을 때 다른 프로세스가 자원을 빼앗을 수 있는 스케줄링
비선점형 스케줄링: 하나의 프로세스가 자원을 사용하고 있을 때 다른 프로세스가 자원을 빼앗을 수 없는 스케줄링

핵심 포인트

  • CPU 스케줄링은 공정하고 합리적으로 CPU자원을 배분하는 방법을 의미한다.

CPU 스케줄링 알고리즘

스케줄링 알고리즘 종류

선입 선처리 스케줄링

: 준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식

최단 작업 우선 스케줄링

: 준비 큐에 삽입된 프로세스들 중 CPU 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식
기본적으로 비선점형 스케줄링 알고리즘으로 분류되지만, 선점형으로 구현 가능함

라운드 로빈 스케줄링

: 선입 선처리 스케줄링에 타임 슬라이스라는 개념이 더해진 스케줄링 방식

타임 슬라이스가 너무 크면 선입 선처리 스케줄링과 다를 바 없어 호위 효과가 생길 여지가 있고,
너무 작으면 문맥 교환이 지나치게 많이 발생하여 비효율적이기에 타임 슬라이스 크기가 중요하다.

최소 잔여 시간 우선 스케줄링

: 최단 작업 우선 스케줄링 알고리즘과 라운드 로비 알고리즘을 합친 스케줄링 방식
최소 잔여 시간 우선 스케줄링 하에서 프로세스들은 정해진 타입 슬라이스만큼 CPU를 사용하는 선점형 스케줄링 방식이다.

우선순위 스케줄링

: 프로세스들에 우선순위를 부여하고, 가장높은 순서대로 실행하는 스케줄링 알고리즘이다.
우선순위가 낮은 프로세스들은 계속 연기되는 기아 현상이 발생할 수 있다.
이를 방지하는 에이징 기법이 있다.
에이징: 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식

다단계 큐 스케줄링

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

다단계 피드백 큐 스케줄링

다단계 큐 스케줄링과 비슷하게 작동하지만, 프로세스들이 큐 사이를 이동할 수 있다는 차잊머이 있다.

profile
iOS 꿈나무 개발자

0개의 댓글