操作系统

操作系统-处理器调度

2016-07-20  本文已影响24人  IAmWhoAmI

作业,进程,线程

作业

作业是由一组统一管理和操作的进程集合构成,是用户要求计算机系统完成一项相对独立的工作。

所以,作业有作业调度。
作业调度,就是按照操作系统预先规定的作业调度策略,从磁盘的作业后备队列中选择作业调入内,为作业分配所需要的资源并建立与作业相对应的进程。

作业调度的单位是作业。

进程

进程是可并发执行的,具有独立功能的程序在一定数据集合上的一次执行过程,是操作系统进行资源分配和调度的基本单位。

进程状态变化
Paste_Image.png Paste_Image.png Paste_Image.png
(1)运行:当一个进程在处理机上运行时,则称该进程处于运行状态。处于此状态的进程的数目小于等于处理器的数目,对于单处理机系统,处于运行状态的进程只有一个。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
(2)就绪:当一个进程获得了除处理机以外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
(3)阻塞:也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。

还有创建,终止,挂起。
挂起和阻塞差别:
阻塞:主动进入阻塞,等待系统唤醒。I/O,,等待进程之间通信。
挂起:被动进入挂起,放到外存中,挂起它的人,来负责唤醒。由于资源不足,或是父进程要审核它等原因。

各种状态机,不过是系统怎么实现,
这里系统认为应该有这么多种状态,所以设计了这样的状态机,
用于将各个进程分类,从而好管理而已。

#所以线程的状态是为了解决实际问题方便管理分配二抽象出来的。
#你可以往里面加更多的状态。

中级调度和低级调度都是对进程而言的调度。

中级调度是,在换出内存的进程中确定需要进入内存的进程。

低度调度是按照一定的调度算法从内存的就绪进程队列中选择进程,为进程分配处理器,避免进程对处理器的竞争。

一个CPU怎么可以保证多个程序,可以安然运行?
方法就是恢复现场。恢复上下文。
所以线程就是为了恢复线程而存在的东西。

为此维护了一个结构PCB,用于恢复现场。

PCB
进程标志信息
处理剂状态信息(通用寄存器,指令寄存器,程序状态字寄存器和用户堆栈指针寄存器的内容。)
进程调度信息(调度状态,进程优先级,进程的等待时间。进程执行时间,进程状态变化相关时间)
进程控制信息(程序和数据地址)

PCB表的存储结构:
链表结构:只记录头指针,然后,每一个PCB都有一个指针指向下一个。
索引方式:维护几个表,就绪索引表,阻塞索引表,然后里面存了PCB的地址。

作业调度算法

只是一些为调度而设计出来的算法,看你怎么设计,你也可以设计自己觉得优秀的算法

评价标准:
{
1.处理器利用率
CPU利用率 = CPU的有效工作时间 /CPU总的运行时间
CPU总的工作时间 = CPU有效工作时间+CPU空闲时间
2.响应时间    提交请求,到反应的时间
3.周转时间    作业提交到作业完成
4.系统吞吐量 单位时间完成的进程数目为系统吞吐量
}

调度算法:
1.FCFS 先来先服务
2.短作业优先(抢占的)
执行时间段的先运行。比较的是剩余时间。
3.响应比搞着优先
就是计算响应比而已:
响应比 = 响应时间/处理时间
=( 等待时间+处理时间)/处理时间 =1+ 等待时间/处理时间

为什么不直接比,等待时间/处理时间算了...

4.优先权高优先

进程调度算法

同样也是你可以设计的算法啦。

1.FCFS
2.时间片轮转。TRR算法
3.优先级调度算法
4.多级队列调度算法
将进程分成若干个队列,
不同队列之间,优先级高的队列先调度,
不同对列内部采用不同的调度算法。
5.度级反馈队列调度算法
(书上写了规则,总之,运行时间以会影响有优先级以及分配的时间片)

上一篇下一篇

猜你喜欢

热点阅读