💡 프로세스 개요
프로세스 (Process) = 실행중인 프로그램
PCB (Process Control Block, 프로세스 제어 블록)
운영체제가 프로세스에 대한 중요 정보를 저장해 놓는 곳
- 각 프로세스 생성 => 고유 PCB 생성 / 프로세스 완료 => PCB 제거됨
- 저장되는 정보
- 프로세스 현재 상태 / 포인터 / 프로세스 고유 식별자 / CPU 레지스터 정보 /
주기억장치 정보 / I/O 장치 정보 / 계정 정보
프로세스 상태 전이
프로세스가 시스템 내 존재하는 동안 프로세스의 상태가 변하는 것

- 제출 : 작업 처리 위해 사용자가 작업을 시스템에 제출
- 접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장
- ⭐ 준비 : 프로세스가 프로세서를 할당받기 위해 기다림
- ⭐ 실행 : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행됨
- ⭐ 대기 : 프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 처리 완료될 때까지 대기
- 종료 : 프로세스 실행 끝나고 프로세스 할당이 해제
Dispatch (준비->실행) / Wake up (대기 -> 준비) / Spooling (접수 <-> 디스크)
교통량 제어기 : 프로세스 상태에 대한 조사 및 통보 담당
스레드 (Thread)
시스템의 여러 자원을 할당받아 실행하는 프로그램 단위 또는 프로세스 내 작업 단위
하나의 프로세스에 존재하는 스레드 수에 따라 => 단일 스레드 or 다중 스레드
프로세스의 일부 특성을 가지므로, "경량 프로세스"라 불림
스레드 기반 시스템에서 스레드는, 독립적인 스케줄링의 최소 단위로서 프로세스 역할 담당함
💡 스케줄링
프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 종류
- 장기 스케줄링 - 어떤 프로세스가 시스템 자원을 차지하도록 할 것인가
- 중기 스케줄링 - 어떤 프로세스들이 CPU를 할당받을 것인가
- 단기 스케줄링 - 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스 지정
- 목적
- 공정성 / 처리율 ↑ / CPU 이용률 ↑ / 우선순위 제도 / 무한 연기 회피 /
오버헤드 ↓ / 응답시간 ↓ / 반환시간 ↓ / 대기시간 ↓ / 균형 있는 자원 사용
비선점 (Non-Preemptive) 스케줄링
이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
ex) FCFS, SFJ, 우선순위, HRN, 기한부 등
- 프로세스가 CPU 할당받으면, 해당 프로세스가 완료될 때까지 CPU 사용
- 프로세스 응답 시간 예측 용이
- 일괄 처리 방식에 적합
선점 (Preemptive) 스케줄링
하나의 프로세스가 CPU를 할당받아 실행하고 있을 때,
우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
ex) RR, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
- 우선순위 높은 프로세스를 빠르게 처리 가능
- 빠른 응답 시간 요구하는 대화식 시분할 시스템에 사용
- 많은 오버헤드 초래
💡 스케줄링 알고리즘
1) FCFS (First Come First Service, 선입선출) = FIFO
준비상태 큐에 도착한 순서에 따라 차례대로 CPU 할당
2) SJF (Shortest Job First, 단기 작업 우선)
준비상태 큐에서 기다리고 있는 프로세스 중 실행 시간이 가장 짧은 것을 먼저 CPU 할당
3) HRN (Highest Response-ratio Next)
대기 시간과 실행 시간 이용하여 우선순위 계산 / SJF 기법 보완
우선순위 = (대기시간 + 실행시간) / 실행시간
4) RR (Round Robin)
각 프로세스를 시간 할당량 동안만 실행 후, 덜 실행했으면 다음 프로세스에게 CPU 넘김
- 시분할 시스템 위해 고안된 방식
- 할당된 시간 작을 수록, 작은 프로세스에게 유리
- 할당된 시간 클 경우 FCFS, 작을 경우 문맥 교환 및 오버헤드 자주 발생되어 신속 처리 X
5) SRT (Shortest Remaining Time)
현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간 비교하여
가장 짧은 실행 시간을 요구하는 프로세스에게 CPU 할당
- 시분할 시스템에 유용
- 준비상태 큐의 프로세스 실행 시간을 추적 및 보유해야하므로 오버헤드 증가