1. 우선순위(Priority)

- 할당된 우선순위 번호에 따라 CPU가 특정 프로세스에 할당된다.
- 우선순위 동일 시 FCFS기법을 이용한다.
- CPU 할당 후에는 문맥 전환이나 프로세스 종료를 통해서만 해제된다.
- 특별한 하드웨어(타이머 등)가 필요하지 않기 때문에 다양한 하드웨어 플랫폼에서 널리 사용된다.
- 동일한 우선순위를 갖는 두 개의 작업이 READY 상태인 경우 FCFS 방식으로 작동한다.
- 우선순위 스케줄링에서는 우선순위 수준을 나타내는 각 프로세스에 번호가 할당된다.
- 프로세스 우선순위 번호에는 Static과 Dynamic의 두 가지 유형이 있다.
- 정적 우선순위 : 할당된 우선순위 번호가 프로세스 전체에서 자체적으로 변경되지 않는 경우 우선순위 번호는 정적이다
- 동적 우선순위 : 할당된 우선순위 번호가 프로세스 전반에 걸쳐 자체적으로 변경되는 경우 우선순위 번호는 동적이다.
<aside>
💡 프로세스의 우선순위는 다음과 같은 몇 가지 요소에 따라 달라진다.
- 시간 제한
- 프로세스의 메모리 요구 사항
- 평균 CPU 버스트 시간에 대한 평균 I/O 비율
이러한 프로세스 우선 순위는 0~7 또는 0~4095와 같은 고정된 범위의 간단한 정수로 표시된다.
</aside>
- 장점
- 비선점형 우선순위 스케줄링은 구현하고 사용하기 쉽다.
- 우선순위에 따라 프로세스가 실행되므로 우선순위가 높은 프로세스는 오래 기다릴 필요가 없기 때문에 시간이 절약된다.
- 시간과 자원의 요구 사항이 변동하는 응용 프로그램이 유용하다.
- 단점
- 오버헤드가 있어 시스템 충돌 시 우선 순위가 낮은 거의 모든 프로세스가 손실된다.
- 더 큰 프로세스는 많은 시간이 걸리며, 우선 순위가 낮은 프로세스는 중단되거나 지연될 수 있다.
- 우선순위에 따라 우선순위가 낮은 일부 프로세스가 더 오랜 시간 동안 유지될 수 있다.
- 예시
2. 기한부(DeadLine)

- 프로세스에게 일정시간을 할당하여 그 시간 안에 작업을 완료하도록 하는 기법
- 시간 내에 작업을 완료하지 못할 경우, 제거가 되거나 처음부터 다시 한다.
- Linux 커널용 I/O 스케줄러이며, 요청에 대한 서비스 시작 시간을 보장한다.
- 시간, 주, 월 또는 연도별로 작업 일정을 설정할 수 있다.
- 원하는 요청 부족을 방지하기 위해 모든 I/O 작업에 마감일을 적용한다.
- 작업 우선순위는 그대로 유지되지만 마감일이 다가올수록 우선순위를 높인다.
- 우선순위 변경 시 작업이 재분류된다.