当前位置: 首页 > news >正文

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

题目:(北京大学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

转载于:https://www.cnblogs.com/whatbeg/p/4469709.html

相关文章:

  • imagick-3.1.0RC2 安装错误
  • Taro 1.3 震撼发布:全面支持 JSX 语法和 HOOKS
  • Android Adapter
  • ognl表达式
  • 直播APP关于后期运营你知道多少?
  • 【新手向】vim快捷注释与删除操作
  • Maven搭建SpringMVC+Mybatis项目详解
  • Access restriction: The method createJPEGEncoder(OutputStream) from the type JPEGCodec is not access
  • 路由器简单的基础实验
  • Android(java)学习笔记18:单例模式
  • 感受
  • 黑马程序员--C语言中的枚举
  • 父窗口中得知window.open()出的子窗口关闭事件
  • CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
  • 码医自学法V2.2(附名老中医)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【个人向】《HTTP图解》阅后小结
  • C++类中的特殊成员函数
  • Java超时控制的实现
  • learning koa2.x
  • leetcode388. Longest Absolute File Path
  • Mac转Windows的拯救指南
  • nginx 负载服务器优化
  • SOFAMosn配置模型
  • 阿里云前端周刊 - 第 26 期
  • 彻底搞懂浏览器Event-loop
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 基于Android乐音识别(2)
  • 前端性能优化--懒加载和预加载
  • 如何在GitHub上创建个人博客
  • 树莓派 - 使用须知
  • 用Canvas画一棵二叉树
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 主流的CSS水平和垂直居中技术大全
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 白色的风信子
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​linux启动进程的方式
  • #pragma pack(1)
  • (8)STL算法之替换
  • (C语言)fread与fwrite详解
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (九)One-Wire总线-DS18B20
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (原)Matlab的svmtrain和svmclassify
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 回调、接口回调、 委托
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET开发者必备的11款免费工具