单处理器调度

1.主要调度准则

面向用户:

周转时间——指一个进程从提交到完成之间的时间间隔。

响应时间——对于一个交互进程来说,这是指从提交一个请求到开始接受响应之间的时间间隔。通常进程处理该请求的同时,就开始给用户一些输出。因此从用户的角度看,相对于周转时间这是一种更好的度量。

面向处理器:

吞吐量——调度策略应该试图使得每一个时间单位完成的进程数目达到最大。(注意这里的吞吐量与CPU吞吐量的含义不同)

处理器利用率——这是处理器忙的时间百分比。对于昂贵的系统来说这是一个重要的准则。在单用户系统和其他的一些系统中,该准则与其他准则相比显得不太重要。

       还用一些不是面向性能的调度准则是:可预测性、公平性、强制优先级、平衡资源。

2.各类调度策略

       在选择调度策略的时候先要选择决策模式分为不可抢占和抢占策略,与不可抢占策略相比,抢占策略可能会导致较大的开销,但是可能会对所有进程提供较好的服务。

       另外最为基本的策略就是优先级策略!!

2.1先来先服务(FCFS)

       先来先服务策略比较简单,开销小,但是有两个缺点:①对短进程不利,因为当短进程在长进程之后到达的话,那么短进程将等待很长一段时间,使得归一化等待时间(周转时间/服务时间)较大。②同理FCFS不利于I/O密集型进程,因为一般I/O密集型进程所需要的处理器时间较短(所以I/O密集型进程应该优先服务,这样才能更好地利用外设)。

2.2轮转(抢占)

    为了减少在FCFS策略下短作业的不利情况,一种简单的方法是采用基于时钟的抢占策略,在这类方法中,最简单的就是轮转算法。

    对于轮转算法,最主要的设计问题是使用的时间片的长度。如果这个长度设计得比较短,则短作业会相对比较快地通过系统。另一方面,处理时钟中断、执行调度和分派函数都需要处理器开销。因此应避免使用过短的时间片。一个有用的思想是时间片最好略大于一次典型的交互需要的时间。如果小于这个时间,那么大多数进程都需要至少两个时间片。另外,当一个时间片比运行时间最长的进程还要长时,轮转算法退化成FCFS

       轮转算法的缺点是,对I/O密集型进程不利,由于同等对待I/O密集型进程和处理器密集型进程,处理器密集型进程会占用大部分处理器时间,从而导致I/O密集型进程性能降低、使用I/O设备低效、响应时间的变化大。

       有一种改进的轮转算法,该算法使得就绪队列分为两个,一个是普通的就绪队列,一个是辅助就绪队列,在辅助就绪队列中存在的进程都是事件发生后解除阻塞的进程,在辅助队列中的进程优先于一般就绪队列中的进程执行。

2.3最短进程优先(SPN)(非抢占)

       减少FCFS固有的对长进程的偏向的另一种方法是最短进程优先。这个是一个非抢占的策略,其原则是下一次选择预计处理时间最短的进程。SPN有利于提高吞吐量。

       SPN的风险在于只要持续不断地提供更短的进程,长进程可能饥饿。另外一方面,尽管SPN减少了对长作业的偏向,但是由于缺少抢占机制,它对分时系统或事务处理环境仍然不理想。

2.4最短剩余时间(SRT)(抢占)

       最短剩余时间是针对SPN增加了抢占机制的版本。不过SRT依然存在长进程可能饥饿的情况。

2.5最高响应比优先(HRRN)(非抢占)

       归一化周转时间也可以作为性能度量,考虑下面的表达式R=(w+s)/s,其中R为响应比w为等待处理器的时间,s为预计的服务时间。该策略为选择最大的R值的进程执行,R的最小值为1,即第一个进入的进程。这样在偏向短进程的同时,随着长进程等待的时间变长,R值增大,也可以获得处理的机会。

       SPNSRT一样,使用最高响应比(Highest Response Ratio Next)策略需要估计服务时间。

2.6反馈(抢占)

       如果没有关于各个进程相对长度的任何信息则SPNSRTHRRN都不能使用。另一种导致偏向短作业的方法是处罚运行时间较长的作业,换句话说,如果不能获得剩余的时间那就关注已经执行了的时间。

       方法如下:调度基于抢占原则(按时间片)并且使用动态优先机制,首先有各个级别的就绪队列,如果进程执行一段时间之后被抢占,那么放入下一级别的就绪队列,高级别的就绪队列中的进程优先于低级别的就绪队列中的进程执行。这样的话一个短进程不会降级太多次就能够执行完毕。

       这个方案可能存在的一个问题是长进程的周转时间可能惊人地增加。事实上如果频繁地有新进程进入系统,可能导致饥饿。为了补偿这点,可以按照对列设置不同的抢占时间片,优先级低的队列时间片的长度长。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值