批处理系统中采用的调度算法

1.CPU调度的概念

CPU调度是指按照一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程。

如果没有就绪进程,系统会安排一个系统空闲进程或者idle进程上CPU运行。

2.衡量调度算法的指标

吞吐量——单位时间完成的进程的数目。

周转时间——每个进程从提出请求到运行完成的时间。

响应时间——从提出请求到第一次回应的时间。

CPU利用率——CPU做有效工作的时间比例。

等待时间——每个进程在就绪队列中等待的时间。

3.批处理系统中采用的调度算法

(1)先来先服务(FCFS)

算法描述:进程按照就绪的先后顺序使用CPU。

这个算法的原则只有一个且非常直观——先到先得,在我们的生活中随处可见,比如在食堂排队打饭。下面是一个例子:

(2)短作业优先

算法描述:最有最短完成时间的作业最先执行。它是非抢占的,也就是说,在一个作业的执行过程中,如果到来了一个完成时间更短的作业,也不会打断正在执行的作业。

在所有进程同时可运行时,采用短作业优先调度算法可以得到最短的平均周转时间。下面是一个例子,这个例子假设作业P1, P2和P3同时到达,它们的执行分别需要24s, 3s, 3s。采用短作业优先调度算法有如下结果:

短作业优先调度算法有一个缺点,就是,如果有源源不断的短作业到来,可能是长的作业长时间得不到运行,产生“饥饿”现象。

(3)最短剩余时间优先

算法描述:抢占版本的短作业优先算法。也就是说,如果一个作业正在运行,这时来了一个需要的运行时间(现在,该作业的需要的运行时间也就是它需要运行的剩余时间)比正在运行的作业的剩余时间短的作业,这个刚来的作业会抢占CPU的使用权(只可能是后来的作业抢占正在运行的作业的CPU使用权)。

既然它也是短作业优先调度算法,自然也有可能产生“饥饿”现象的缺点。

(4)最高响应比优先

算法描述:响应比最高的作业最先执行。

下面是响应比的计算公式:

从公式可以看出,一个作业的等待时间越长,响应比越大;需要的处理时间越短,响应比也越大。

其实,这个算法就是同时考虑了先来先服务和短作业优先这两个算法用于衡量哪一个作业应该获得CPU使用权的因素,也就是等待时间和执行时间。先来先服务算法等于是说,等得越久的作业越早获得CPU的使用权,这很好理解,比如一系列作业都没有执行,自然先到的作业等得最久,它也先得到CPU的使用权。短作业优先算法,它的名字就告诉了我们它是通过一个作业需要的处理时间来判断该给哪个作业CPU使用权的,需要的处理时间越短,越早执行。

(本文的大部分内容整理自coursera上陈向群讲的操作系统原理课程,只有少量自己的解释)

时间: 2024-10-10 00:35:58

批处理系统中采用的调度算法的相关文章

交互式系统中采用的调度算法

1.轮转调度 (1)时间片轮转调度算法 CPU的时间分成一段一段的,每一段就是一个时间片,进程轮流使用时间片.示意图如下: (2)虚拟轮转法 时间片轮转调度算法对IO型进程不公平:对于CPU型进程,该进程获得CPU时间片后总是会用完整个时间片:但是对于IO型,它经常是运行一部分时间片后就去等待IO事件,总是用不完自己的时间片.为了解决这个问题,提出了虚拟轮转法,该算法的示意图如下: 虚拟轮转调度算法的思想是:进程用完时间片后,回到就绪队列:而进程因为等待某个事件放弃CPU,该进程等待的事件发生后

操作系统中常见的调度算法

一.先来先服务调度算法 先来先服务的调度算法(FCFS)是一种最简单的调度算法,该算法既可以用于作业调度,也可以用于进程调度.当在作业调度中采用该算法时,每次都是从后备作业队列选择一个或多个最先进入该队列的作业,将他们调入内存,为他们分配内存,为他们分配资源,创建进程,然后放入就绪队列中.在进程中采用FCFS算法时,则每次调度室从就绪队列中选择一个最先进入该队列的进程,位置分配处理机,使之投入运行.该进程一直运行到完成或发生某事件而阻塞后才放弃处理机. FCFS调度算法有利于cpu繁忙型的作业,

构建低成本、高度可配置的桥接解决方案:在嵌入式设计中采用基于D-PHY的MIPI标准外设

http://www.autooo.net/classid106-id128484-2.html 嵌入式系统的设计者们正面临着进退两难的困境.一方面他们需要降低系统成本.另一方面他们的系统面向使用面相对较窄.小批量的应用,无法发挥出大批量生产的规模效益.大批量的消费类应用市场提供的元件能够处理类似的任务,而且成本更低,但嵌入式系统设计者们却无法充分利用这些元件,因为他们的系统可靠性建立在为嵌入式环境优化的高度专用的那些传统接口之上.这个问题在显示屏.摄像头和应用处理器方面最为突出,适用于移动平台

C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据

我曾经在系列文章中的<C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍>中介绍了微信菜单里面的重定向操作,通过这个重定向操作,我们可以获取一个code值,然后获取用户的openID,进而就能获取到更多的用户信息,这个在会员信息的场景里面用的很多,本篇介绍在网站中迅速配置这样的菜单链接,并介绍如何在后台获取相关的用户信息,实现页面数据个性化的展现操作. 我们知道,微信的自定义菜单分为两大类,分别对应Click类型和View类型的,而重定向属于View类型的一种,如下所示. 1.微信重

Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx":意思是返回到某个JSP页面上 如果想在此Action中跳转到另一个Action中怎样做呢? return "redirect://.do?" 例如: @RequestMapping(params = "action=delete") public String del

QuartusII 中采用门级原语

QuartusII  中采用门级原语 默认的是前面第一个 为output  后面所有信号为输入 图中的工程实现的是 一个二选一多路选择器 QuartusII 中采用门级原语,码迷,mamicode.com

mysql中采用concat来拼接中文字符乱码解决方式(转)

mysql中采用concat来拼接中文字符乱码解决方式 - fuxuejun的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/fuxuejun/article/details/6284725 mysql concat乱码问题解决 concat(str1,str2) 当concat结果集出现乱码时,大都是由于连接的字段类型不同导致,如concat中的字段参数一个是varchar类型,一个是int类型或doule类型,就会出现乱码. 解决方法:利用mysql的字符

在Tomcat中采用基于表单的安全验证

1.概述   (1)基于表单的验证 基于From的安全认证可以通过TomcatServer对Form表单中所提供的数据进行验证,基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面.这种验证方法与基本HTTP的验证方法的唯一区别就在于它可以根据用户的要求制定登陆和出错页面. 通过拦截并检查用户的请求,检查用户是否在应用系统中已经创建好login session.如果没有,则将用户转向到认证服务的登录页面.但在Tomcat中的基于表单的验证凭证不被保护并以纯文本发送.   (2)在Tomc

OS中常用的调度算法总结 (转)

http://blog.chinaunix.net/uid-25132162-id-361291.html 一.常见的批处理作业调度算法 1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业.这种调度算法的优点是实现简单,公平.其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多. 2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短.而在作业未投入运行时,并不能