一道题浅谈【作业调度】与【进程调度】

题目:(北京大学1993考研)

一个批处理系统中,有两个作业进程。有一个作业序列,到达时间和估计服务时间如下。系统采用最高响应比优先的作业调度算法,作业进程的调度采用短作业优先的抢占式调度算法。请列出各作业的执行情况表。

====================================================================

进程调度分为

长程调度,又称作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行

短程调度,又称进程调度,用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序把处理机分配给该进程的具体操作

中程调度,从就绪挂起到就绪,从阻塞挂起到阻塞,引入中程调度的主要目的,是为了提高内存利用率和系统吞吐量(这里不谈)

进程调度图:

一个作业到达时首先被放进后备队列。

作业调度按一定的算法从后备队列中选择到达的资源能得到满足的作业装入内存,使作业有机会去占用处理器执行。

所谓的有机会,是因为此后还需要进程调度程序来进行调度,决定哪个进程优先获得CPU,什么时候获得CPU,分配多少CPU时间片,能不能抢占等等,也就是说,调度程序才是大脑,CPU只是一个执行部件而已。

于是,作业调度选中了一个作业且把它装入内存时,就会为该作业创建一个进程,若有多个作业被装入内存,则内存中同时存在多个进程,这些进程的初始状态为就绪状态,放在就绪队列中,然后,由进程调度程序根据自己的调度算法来选择当前可占用处理器的进程,进程运行中会出现各种状态,有以下些状态会引起调度程序的重新调度决策:

1.在创建一个新进程时之后,需要决定运行父进程还是子进程

2.在一个进程运行结束让出CPU使用权的时候,需要重新调度一个进程给CPU

3.当一个进程阻塞在I/O信号或者信号量或其他上面时,必须选择另外一个进程运行。

4.在一个I/O中断发生时,某些被阻塞的等待该I/O的程序可能已经进入就绪态,需要重新决策。

调度算法分为抢占式和非抢占式算法两类,这里区分一下:

非抢占式:意味着调度程序调度某进程运行,分配时间片,直到时间片完或者该进程自己由于某些原因阻塞才回打断其执行,否则调度程序不能因为优先级等原因强行调度另一个进程来抢占原有进程的CPU资源。

抢占式:意味着调度程序虽然调度了某个进程运行,但是此后调度程序随时可以根据其算法让另一个符合优先执行的进程强制剥夺其CPU资源。

如此,作业调度与进程调度相互配合实现多道作业的并行执行。

那么为什么要制定作业调度算法呢?为什么要搞一个后备队列呢?一个作业到来后直接把它扔到就绪队列中不就好了?实际上我们不这样做的原因是就绪队列的空间可能是有限的。比如题目说的有两个作业进程,说明就绪队列的容量是2,一个作业运行,一个作业就绪。由于不是每个作业都能迅速达到就绪态,所以就需要作业调度来选择进入系统(就绪态)的作业。

解如下:

10:00    作业A到达,由于就绪队列空,作业调度进系统,进程调度执行

10:10    作业B到达,就绪队列未满,作业调度进系统,由于B此时是最短作业,所以进程调度A到就绪态,调度B执行

作业A已运行10分钟,剩余25分钟

10:15    作业C到达,响应比为1,等待作业调度进系统

作业B继续执行,已运行5分钟,剩余25分钟

作业A剩余25分钟,位于就绪队列

10:20    作业D到达,响应比为1,等待作业调度进系统

作业C等待5分钟,响应比R=1+5/45 = 1.11

作业B继续执行,已运行10分钟,剩余20分钟

作业A剩余25分钟,位于就绪队列

10:30    作业E到达,响应比为1,等待作业调度进系统

作业D等待10分钟,响应比R=1+10/20 = 1.5

作业C等待15分钟,响应比R=1+15/45 = 1.3

作业B继续执行,已运行20分钟,剩余10分钟

作业A剩余25分钟,位于就绪队列

10:40    作业E等待10分钟,响应比R=1+10/30 = 1.3

作业D等待20分钟,响应比R=1+20/20 = 2.0

作业C等待25分钟,响应比R=1+25/45 = 1.6

作业D具有最高响应比,D被作业调度进系统,由于是最短作业,进程调度D执行

作业B运行结束

作业A剩余25分钟,位于就绪队列

11:00    作业E等待30分钟,响应比R=1+30/30 = 2.0

作业C等待45分钟,响应比R=1+45/45 = 2.0

两者响应比相同,由于C先到达,所以作业调度C进系统

作业D运行20分钟,运行结束

作业A剩余25分钟,服务时间比C小,进程调度A执行

11:25    作业E等待55分钟,响应比R=1+55/30 = 2.8,作业调度进系统

作业C剩余45分钟,位于就绪队列

作业A运行25分钟,运行结束

因为C服务时间比E长,所以进程调度E执行

11:55    作业C剩余45分钟,位于就绪队列

作业E运行30分钟,运行结束

12:40    作业C运行结束

各作业运行时间段为:

A    10:00-10:10   11:00-11:25

B    10:10-10:40

C    11:55-12:40

D    10:40-11:00

E    11:25-11:55

时间: 2024-10-12 13:34:10

一道题浅谈【作业调度】与【进程调度】的相关文章

【ZOJ】3785 What day is that day? ——浅谈KMP应用之ACM竞赛中的暴力打表找规律

首先声明一下,这里的规律指的是循环,即找到最小循环周期.这么一说大家心里肯定有数了吧,“不就是next数组性质的应用嘛”. 先来看一道题 ZOJ 3785 What day is that day? Time Limit: 2 Seconds      Memory Limit: 65536 KB It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are multiple tes

浅谈操作系统之进程管理

详解本文前,先来说说什么是操作系统吧,要不,大家可能都不知道自己在看些什么.下图,可以非常形象的表示操作系统及它的相关内容.本文主要详细介绍一下操作系统的进程管理功能. 上图可以看出,操作系统是位于计算机硬件和应用软件之间的,有效组织和管理系统中各种软.硬件资源.它通过资源管理,提高了计算机系统的效率:也改善了人机界面,不需要我们直接面对简单且复杂的0和1了,向用户提供了友好的工作环境.下面来细说说进程管理吧. 首先,我们需要了解,什么是进程,与其相关的,什么又是线程?进程,可以认为它就是程序的

浅谈Trigger(SimpleTrigger&CronTrigger)

 1.Trigger是什么 Quartz中的触发器用来告诉调度程序作业什么时候触发,即Trigger对象是用来触发执行job的.  2.Quartz中的Trigger  3.触发器通用属性: JobKey:表示job实例的标识,触发器被触发时,该指定的job实例会执行 StartTime:表示触发器的时间表 首次被触发的时间,值类型是Java.util.Date EndTime:指定触发器的不再触发的时间,它的值类型是Java.util.Date 例如:通过Trigger设置开始时间,结束时间以

cdq分治浅谈

$cdq$分治浅谈 1.分治思想 分治实际上是一种思想,这种思想就是将一个大问题划分成为一些小问题,并且这些小问题与这个大问题在某中意义上是等价的. 2.普通分治与$cdq$分治的区别 普通分治与$cdq$分治都是基于分治思想之上的算法,但是他们是有区别的.普通分治的适用条件是,产生的小问题之间互不影响,然而$cdq$分治就相对比较宽泛,小问题之间可以有影响,但是$cdq$分治不支持强制在线. 3.$cdq$分治浅谈 分治一共分为四步: 1) 将当前处理区间分为左右两个等大的子区间: 2) 递归

整体二分浅谈

整体二分浅谈 一.前置知识 在学习整体二分之前,要学会二分,以及二分的分治思想. 二.整体二分浅谈及例题 例题:bzoj2527: [Poi2011]Meteors 对于这道题是整体二分的经典例题,我们先抛开整体二分,思考二分怎么做.对于一个询问,因为答案有单调性,如果$x$时刻为最小可以时刻,则比$x$小的时刻都不可以,比$x$大的时刻都可以,所以我们可以进行二分答案,并加以验证.先不说怎样验证,就单是时间复杂度就不能接受,$O(nmlog_2^n)$. 如果一个一个进行二分时间复杂度不允许,

【转】【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

ASP.NET MVC系列文章 原文地址:https://www.cnblogs.com/wangjiming/p/6275854.html [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP.NET框架 [05]浅谈ASP.NET MVC运行过程 [06]浅谈ASP.NET MVC 控制器 [07]浅谈ASP.NET MVC 路由 [08]浅谈AS

浅谈欧洲算法——模拟退火

初听说退火这个名词感觉就很(zhuang)帅(A__CDEFG...) 直到学了退火之后,我才发现: 退火不只是帅,而且非常万能 甚至比 D (大) F (法) S (师)还要万能 简直就是骗(de)分神器啊 简介 作为一个计算机算法,它竟然在百度上有物理词条! 当时我看了就懵了,你说计算机一个算法,跟冶炼金属有什么关系啊? 后来我看了算法的词条... 是不是更懵了... 方便大家理解(变得更懵),我搬了百度上的定义: Simulate Anneal Arithmetic (SAA,模拟退火算法

从《楼房重建》出发浅谈一类使用线段树维护前缀最大值的算法

首先需要申明的是,真的是浅谈,因为我对这个算法的认识还是非常低的. 既然是从<楼房重建>出发,那么当然是先看看这道题: [清华集训2013]楼房重建 bzoj 链接 题意简述: 有 \(n\) 栋楼,第 \(i\) 栋的高度为 \(H_i\),也就是说第 \(i\) 栋楼可以抽象成一条两端点为 \((i, 0)\) 和 \((i, H_i)\) 的线段. 初始时 \(H_i\) 均为 \(0\),要支持动态修改单点的 \(H_i\). 每次询问从 \(O(0, 0)\) 点可以看到多少栋楼房.

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化