进程调度的概念
- 内核决定将CPU分配给某个就绪进程的过程
- 选择一个就绪的进程
- 调度指标
- 调度算法(策略)
- 进程切换
- 进程执行现场的切换(回顾进程)
- 选择一个就绪的进程
一、进程调度的时机
- 非抢占式/协作式(Non-preemptive)
- 当一个进程从运行态切换到阻塞态(例如 发生I/O请求)
- 当一个进程终止
- 抢占式(Preemptive)
- 当一个进程从运行态切换到就绪态(例如 出现时钟中断)
- 当一个进程从阻塞态切换到就绪态(例如 I/O完成)
非抢占式情况下必须等待进程完成再考虑下一 步调度,抢占式可以在进程执行时切换进
二、进程调度的指标
- CPU利用率(CPU utilization)
- $\uparrow$ ,使CPU尽可能忙碌(0%-100%)
- 吞吐量(throughput)
- $\uparrow$ ,单位时间内进程完成的数量
- 周转时间(turnaround time)
- $\downarrow$,进程就绪到进程完成的时间
- $T_{周转} = T_{完成} – T_{到达}$
- 周转时间强调的是性能(performance) ,除此之外,还有一个很重要的指标:公平
- 响应时间
- $\downarrow$,交互式任务中,响应用户操作的时间
- $T_{响应} = T_{首次运行}– T_{到达}$
- …
工作负载假设
- 完全可操作的调度准则:
- 假设1.所有的任务运行相同的时间
- 假设2. 所有的任务同时到达
- 假设3. 一旦开始,所有任务保持运行直到完成
- 假设4. 所有的任务只使用CPU(不考虑I/O)
- 假设5. 每个工作的运行时间是已知的
三、进程调度的经典策略
先到先得(FCFS: First Come First Served)
- 按照进程就绪的先后次序调度(非抢占式)
- 优点:最“简单直接”的策略,易于实现(FIFO队列)

说些什么吧!