操作系统--调度学习笔记(3)--单处理器调度

典型的调度类型分为长程调度、中程调度、短程调度和IO调度。

长程调度——决定是否把进程添加到当前活跃的进程集合中

中程调度——交换功能的一部分,决定是否把进程添加到那些知道部分在内存中,并且可以被执行的进程集合中

短程调度——真正决定下一次执行哪一个就绪进程

I/O调度——决定哪一个进程挂起的I/O请求江北可用的IO设备处理

他们的关系如下:



长程调度:

在批处理操作系统或者通用的操作系统中的批处理部分,新提交的作业呗发送到磁盘,并保存在一个批处理队列中。在长程调度程序运行的时候,从队列中创建相应的进程。这里涉及两个决策。

  1. 调度程序必须决定什么时候操作系统能够接纳一个进程或多个进程;
  2. 调度程序必须决定接受那个作业或者哪些作业将其转变成进程;
中程调度:
在前面已经讲过,这里不在复述

短程调度
执行得最频繁,精确地决定下一个执行哪个进程。导致进程阻塞或者被抢占的事件有:时钟中断、I/O中断、操作系统调用信号(如信号量)

调度的评判准则有很多,比较重要的是响应时间(用户角度)和吞吐量(系统角度)。
调度的算法有很多种常用的有:
  1. 先来先服务:选择等待服务时间最长的进程;
  2. 轮转:使用时间片,任何进程只运行一定时间,状态置为就绪,进入中转轮;
  3. 最短进程优先:选择预期处理时间最短的进程,该进程不会被抢占;它需要程序员预估时间(感觉实现起来很麻烦),长进程容易饥饿
  4. 最高剩余时间:选择预期的剩余处理时间最短的进程,但是可能会被抢占;
  5. 最高响应比优先:调度决策基于对归一化周转时间的估计;相应比=(等待处理时间+预计服务时间)/预计服务时间
  6. 反馈:建立一组调度队列,基于每个进程的执行历史和其他准则,把它们分配到各个队列中,每调度一次优先级降低,结合时间片轮转,会有比较好的效果,于传统unix调度策略相近;



猜你喜欢

转载自blog.csdn.net/woshizuxi/article/details/52662826