进程调度

基本概论
对于单处理器系统,同一时间只有一个进程可以运行;其他进程都应该等待,直到cpu空闲并可调度为止。多道程序的目标,始终允许某个进程最大化cpu利用率。
对于简单操作系统,单进程处于阻塞,cpu处于空闲状态,这个等待时间就是浪费cpu时间,我们试图利用这个时间,多进程同时处于内存,操作系统就从该内存接管cpu控制,并将cpu交给另外进程。这种方式不断重复,当一个进程必须等待,另外进程接管cpu时间片。
cpu-io周期
进程执行周期包括运行和io等待这两个状态不断交替
进程执行从cpu执行开始,之后io执行;例外进程执行,接着另外io执行
抢占调度与非抢占调度
非抢占调度:在非抢占调度下,一旦某个进程分配到cpu,该进程就会一致使用cpu,直到它终止或切换到等待状态
抢占调度:当进程运行一段时间还没有运行完,也被其他进程抢占
调度程序
调度程序功能包括:切换上下文,内核模式用户模式切换,跳转到用户程序的合法位置,以便运行程序
调度程序根据pcb进行调度
调度程序应近可能快,因为在每次进程切换都要使用。调度停止运行一个进程而启动另外一个进程称为调度延迟
调度原则
特定的算法适用特定的进程,选择一个特定的算法对某些进程更加有利,为了选择算法以便与特定特定的场景
为了比较cpu调度算法,可以采用许多比较准则。选择那些特征来比较,对于确定那种算法是最好的本质上的区别:
cpu使用率 应尽量使cpu忙碌起来。cpu使用率从%0到%100,对于一个实际系统,它的范围从40%(轻负荷)到%90(重负荷)
吞吐量 如果让cpu忙于执行进程,那么工作就在完成,一种测试工作量的方法称为吞吐量,它是在一个时间单元内进程完成的数量。对于一个长进程,吞吐量为每个小时一个进程;对于短进程,吞吐量可能为每秒几十个进程
周转时间 从一个特定进程来看,一个重要准则是运行这个进程需要的时间,从进程提交到进程完成的时间称为周转时间,周转时间为所有时间之和,包括等待进入内存,在就绪队列等待,在cpu上执行和io执行
等待时间 cpu调度算法并不影响进程运行和执行io的时间。它只影响进程在就绪队列中因等待所需要的时间。等待时间为在就绪队列中等待时间所花之和
响应时间 从提交到输出结果所需要的时间

进程饥饿
由于进程长期得不到调度而产生的饥饿现象
调度算法
cpu调度处理的问题:从就绪队列中选择进程以便为其分配cpu
先来先服务调度
最简单的cpu调度算法是先来先服务,先请求cpu进程先分配cpu,先来先服务可以通过先进先出队列来实现。
实现:当一个进程进入就绪队列时,他的pcb会被链接到队列尾部。当cpu空闲时,它会分配给位于队列头部的进程,并且运行这个进程,从头部移除。
缺点:等待时间过长,对io密集型进程不利
比较
进程 执行时间
p1 20
p2 2
p3 2
如果按先来先服务调度算法:平均等待时间为(0+20+22)/3=14
如果按p2,p3,p1到达顺序(0+2+4)/3=2
最短作业优先调度
实现:将每个进程于其下次长度关联起来,当cpu空闲时,从就绪队列选择时间长度最短运行
优点:可以证明最短作业优先算法是最优的,因为平均等待时间最短
实现难度:如何知道下次进程调度长度,可以通过预测来知道下次运行长度
优先级调度
优先级的定义可以是内部的,也可以是外部的。
内部定义的优先级可以是,时限,内存,打开文件数量,和平均io时间等。
外部定义可以是操作系统之外的准则,如进程的重要性等其他要素。
优先级调度可以是抢占调度,也可以是非抢占调度。
优先级抢占调度:如果新到的进程优先级比正在执行的优先级高,那么抢占优先级就会抢占cpu
优先级非抢占调度:非抢占调度只会插队排队排在低优先级进程前面
优先级调度缺陷:低优先级在高负荷情况下会产生饥饿,长期得不到调度
低优先级无穷等待解决办法之一是老化,每隔一段时间如果还没调度就增加进程优先级
轮转调度
轮状调度专门为分时系统设计的,它类似于先来先服务调度,但增加了抢占以切换进程,将一个较小单位定义为时间片,就绪队列作为循环队列。cpu调度程序为之分配不超过一个时间片的cpu。
如果时间片过大就会为先来先服务调度,过短就会带来开销,进程由就绪变运行或运行变就绪。
多级队列调度
多级队列调度按照优先级分不同队列,高优先级放高优先级队列,低优先级放低优先级队列,取执行进程由高取低
多级反馈队列调度
多级反馈队列调度算法允许进程在队列中迁移,这种想法是,根据不同cpu执行特点来区别进程。如果进程使用过多的cpu时间,那么它会被移动到更低优先级队列。这种方案将io密集型进程和交互进程放到更高优先级
通常多级优先级可由以下参数来定义:
队列数量
每个队列的调度算法
用以何时升级更高优先级的方法
用以何时降低降低更低优先级的方法
用以确定那个进程进入那个级别的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验二 单处理器系统的进程调度 1.实验目的 加深对进程概念的理解,明确进程和程序的区别; 深入了解系统如何组织进程、创建进程; 进一步认识如何实现处理器调度。 2.实验预备知识 进程的概念; 进程的组织方式; 进程的创建; 进程的调度。 3.实验内容 编写程序完成单处理机系统中的进程调度,要求采用时间片轮转调度算法。实验具体包括:首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建原语和进程调度原语;最后编写主函数对所作工作进程测试。 4.提示与讲解 这个实验主要要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。 考虑如何组织进程,首先就要设定进程控制块的内容。进程控制块PCB记录各个进程执行时的情况。不同的操作系统,进程控制块记录的信息内容不一样。操作系统功能越强,软件也越庞大,进程控制块记录的内容也就越多。这里的实验只使用了必不可少的信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类: ① 标识信息 每个进程都要有一个惟一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值