• Short-term 스케줄러 (CPU 스케줄러)
• CPU 사용 극대화, 시간 공유를 위해 프로세스를 CPU로 신속하게 전환
• CPU burst & I/O burst
-프로세스 실행은 CPU 실행 cycle(주기) 및 I/O 대기로 구성
-CPU burst 다음에 I/O burst
-CPU burst는 연산 위주의 시간이고 I/O burst는 I/O 요청 대기 시간
-CPU burst에 먼저 초점을 맞춤(작업공간 비우면 비효율적)
-메모리에서 준비된 프로세스 하나 선택해 CPU 할당
• CPU 스케줄링 결정은 프로세스를 앉히는 타이밍
① 실행 상태에서 대기 상태로 전환 (I/O burst로)
② 실행 상태에서 준비 상태로 전환 (OS의 강제 – 공평성을 위해서 한 프로세스가 길게 일하지 않도록)
③ 대기 상태에서 준비 상태로 전환 (I/O가 끝났다는 인터럽트가 오면)
④ 종료 terminates
-> ①,④는 non-preemptive / ②,③은 preemptive
• 시스템 설계 원칙에 따른 CPU 스케줄러 설계
-policy, dispatcher(메커니즘)로 분리
-policy는 경우에 따라 바꿔낄 수 있음
-메커니즘은 항상 동일(기계적)
• 프로세스를 실행하는 OS의 가장 안쪽 부분
-모드 관리 (하던 일 저장->다른 애 앉히기)를 반복
• 시스템 모드: user mode, kernel mode(일시적)
-mode bit(hardware): 1은 사용자모드, 0은 커널모드
• 디스패처 모듈은 프로세스에 CPU 제어권을 부여
-switching context
-switching to user mode
-해당 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 점프
• CPU는 한 번에 한 가지 작업만 수행 가능
• 사용자 프로세스 running은 디스패처가 실행 중이 아님을 의미(user mode이면 디스패처 작동 X)
• 비선점형 방식: 디스패처를 깨우는 프로세스 신뢰
(I/O request)
-때때로 프로세스 오작동
• 선점형 방식: 디스패처에게 알람 시계 제공
(I/O response)
-타이머 하드웨어 및 인터럽트
• Traps & Faults: 사용자 프로세스 내부 이벤트
-시스템 콜 / 부동 소수점 예외 / 페이지 오류
• Interrupts: 사용자 프로세스 외부 이벤트
-터미널에 입력된 문자 / 디스크 전송 완료 / 타이머
• 가능성1:처음 실행 가능 프로세스의 프로세스 테이블 스캔
-검색에 많은 시간 할애
-이상한 우선순위 결과
-질문:프로세스가 실행 가능한지 어떻게 알 수 있나?
• 가능성2:실행 가능한 프로세스를 대기열에 함께 연결
-디스패처는 대기열queue의 헤드에서 가져옴
-실행 가능한 프로세스는 대기열 뒤에 삽입됨
• 가능성3:프로세스에 우선순위 지정
-대기열을 우선순위별로 정렬 유지
-우선순위별로 별도의 대기열
• OS의 일부인 스케줄러가 결정
-디스패처가 아닌 이유는 정책과 메커니즘 분리 개념 때문.
• 디스패처의 상태 저장 및 복원 방법
-컨텍스트 전환 메커니즘
• 무엇을 저장?
-다음 프로세스가 손상시킬 수 있는 모든 것:
프로그램 카운터, 프로세서 상태 단어, 범용 레지스터, 부동 소수점 레지스터, 메모리(메모리 일부를 디스크에 저장-swapping)
• 기계에 따라 다름
• OS는 프로세스 상태를 변경하지 않고 상태를 저장하기 위해 코드를 실행해야 함
• 특별한 하드웨어 지원 필요
-트랩 또는 인터럽트에 PC와 PSR 저장

• CPU utilization(사용률): CPU를 바쁘게 유지
• Throughput(처리량): 시간 단위당 실행 완료하는 프로세스 수
• Turnaround time(처리 시간):특정 작업 수행 시간
• Waiting time(대기 시간): 프로세스가 준비 큐에서 대기한 시간 / 최소화하는 게 중요
• Response time(응답 시간): 요청 제출 시점부터 첫 번째 응답이 생성될 때까지 걸리는 시간-시분할 환경