운영체제에서 CPU를 사용할 수 있는 프로세스를 선택하고, CPU를 할당하는 작업입니다.
프로세스의 우선순위, 작업량 등을 고려하여 효율적으로 배치하여, 이를 통해 운영체제는 CPU를 효율적으로 사용하며 시스템 전반적인 성능을 향상시킵니다.
그래서 스케쥴링은 멀티 태스킹 작업을 만들어내는 데에 있어서 핵심적입니다.
운영체제의 특징과 시스템 요구사항에 따른 다양한 알고리즘 방식
-> FCFS(First-Come, First-Served), SJF(Shortest-Job-First), RR, Multilevel Queue, Priority
프로세스가 실행되는 동안 변경되는 고유 상태를 프로세스 상태라고 합니다.
프로세스가 생성되어 실행되기까지 프로세스는 여러가지의 상태를 갖고, 상태의 변화에 따라 프로세스가 동작합니다.
| 프로세스 상태 | 설명 |
|---|---|
| 생성(new) | - 프로세스가 생성되고 아직 준비가 되지 않은 상태. |
| 준비(ready) | - 프로세스가 실행을 위해 기다리는 상태. - CPU를 할당받을 수 있는 상태이며, 언제든지 실행될 준비가 되어 있음. |
| 실행(running) | - 프로세스가 CPU를 할당받아 실행되는 상태. |
| 대기(waiting) | - 프로세스가 특정 이벤트(입출력 요청 등) 가 발생하여 대기하는 상태. - CPU를 할당받지 못하며, 이벤트가 발생하여 다시 Ready 상태로 전환될 때까지 대기. |
| 종료(terminated) | - 프로세스가 실행을 완료하고 종료. - 메모리에서 제거됨. |
프로세스가 실행되는 동안 상태가 OS에 의해 변경되는 것입니다.

운영체제에서 다중 스레드를 관리하며, CPU를 사용할 수 있는 스레드를 선택하고, CPU를 할당하는 작업입니다.
하나의 프로세스 내에서 다수의 스레드가 동작하는 형태이기 때문에, 스레드 간의 상호작용과 동기화 문제를 고려해야 한다는 차이점이 존재합니다.
알고리즘 종류
Round Robin, Priority-based scheduling, Multi-level Queue scheduling 등
| 프로세스 상태 | 설명 |
|---|---|
| NEW | - 스레드가 생성되고 아직 호출되지 않은 상태. |
| RUNNABLE | - 스레드가 실행을 위해 기다리는 상태. - CPU를 할당받을 수 있는 상태이며, 언제든지 실행될 준비가 되어 있음. |
| BLOCKED | - 스레드가 특정 이벤트가 발생하여 대기하는 상태. |
| TERMINATED | - 스레드가 실행을 완료하고 종료된 상태. - 메모리에서 제거됨. |
🖇️ https://velog.io/@rlvy98/CS-PCB%EC%99%80-Context-Switching