很多学习完《操作系统原理》这门课程的小伙伴都应该对“FCFS(先到先服务)”、“SJF(短作业优先)”等调度算法原理比较熟悉。但是在实际做题的时候,往往一不小心就把概念搞错,不容易区分“作业调度”和“进程调度”的区别。下面我主要针对这两个概念进行解析并给出经典习题解答。
PS:本博客并不详解每种调度算法的原理,因此有这方面需求的小伙伴可以直接pass了。

1、作业调度

作业调度又称为高级调度,频度较低。其主要工作是将位于外存后备队列中的某个(或某几个)作业调入内存,排在就绪队列上。注意了,这个时候仅仅是将作业调入内存,并为作业创建进程、分配资源,此时进程处于就绪态,并没有执行

2、进程调度

进程调度又称为低级调度,是最基本的、频度最高的调度方式。其主要任务是从就绪队列中选取一个(或几个)进程,并分配处理机的过程,这时候才可以理解为“执行”。

3、区别

作业调度和进程调度最主要的区别在于,前者是为作业建立进程的过程,是将作业由外存调入内存的过程;而后者整个过程并没有跑出内存的范围,是将就绪态的进程变为运行态的过程。

下面,我们就某个实例题目,给大家做进一步的辨析。
———————————————————————————
题目:
有一个两道批处理系统,它只有一个CPU(一次只能处理一个进程),在作业调度算法采用短作业优先调度、进程调度算法采用抢占式优先级调度。假设有四个作业J1、J2、J3、J4,其运行情况如下表所示,采用“优先数越小、优先级越高”的原则,计算平均周转时间。

解析:
在做这种题的时候最好画一个就绪队列,或者脑海中想象一个就绪队列,以免思维混乱,初始情况下就绪队列为空:

还要注意一点的是,“单CPU两道批处理系统”的意思是,一次最多允许两道作业存在,并且一次只能处理一道作业。

① 首先8:00的时候作业J1到达(注意这里的“到达”不是指到达就绪队列,而是表明“J1这个任务来了,我们即将处理它”,很浅层的意思,不要多想),这个时候只有J1,那么毫无疑问直接调入内存,由于是两道批处理,我们假设这里的内存叫内存1,进入就绪队列,然后开始执行,也就是分配CPU
此时的就绪队列如下(空),因为J1刚进入就绪队列就被分配了CPU,转为运行态:

② 8:20的时候,J2到达,此时内存还有个位置空闲,显然将J2调入内存,我们叫内存2,进入就绪队列,那调入内存后要不要分配CPU呢?这就得看我们的进程调度算法了,使用抢占式优先级调度,J2的优先数要小于J1,因此优先级大,此时J1被迫暂停执行,重新回归就绪队列,而J2从就绪队列出去,分配CPU,进入运行态,而此时J1还剩下20min时间;
此时的就绪队列如下:

③ 8:30的时候,J3到达,但是内存此时已经没有位置了,即一道给了J1,另一道给了J2,因此J3只能在外存的后备队列里等着,进不了就绪队列;
此时的就绪队列没变:

④ 8:50,J2执行完毕,这样“内存2”就空出来了,此时J4正好也到达了,那到底是将J3还是J4调入内存就绪队列中呢?看我们的作业调度算法,短作业优先,J4需要的的时间要比J3短,因此J4先调入内存2;
此时的就绪队列如下:

⑤ 现在就绪队列里有J1、J4,谁先执行呢?比较优先级的大小!J1的优先级大,因此J1先执行。注意:此时两道内存仍然还有作业,因此J3还是要在外存中等着;
此时的就绪队列如下:

⑥ 9:10的时候,J1执行完毕了,内存1就空出来了,这个时候J3就可以调入内存1了,即进入就绪队列;
此时的就绪队列如下:

⑦ 同理,J3优先级高,先占用CPU开始执行,到10:00执行完毕,此时J4分配CPU开始执行20min,到10:20执行完毕。至此,全部作业都完成了。
此时的就绪队列自然也清空了:

好了,以上就是整个过程的全部详解,只看文字略显枯燥,我们附上整个过程的Gantt图:

答案:
J1的周转时间 = J1的等待时间 + J1的运行时间 = 30 + 40 = 70min;
J2的周转时间 = 0 + 30 = 30min;
J3的周转时间 = 40 + 50 = 90min;
J4的周转时间 = 70 + 20 = 90min.

最终的平均周转时间 = (70 + 30 + 90 + 90) / 4 = 70min.

作业调度和进程调度的辨析相关推荐

  1. 作业调度和进程调度的区别

    作业调度和进程调度的区别 (2011-11-08 13:02:07) 转载▼ 标签: 杂谈 分类: 网络编程 作 业调度按一定的算法从磁盘上的"输入井"中选择资源能得到满足的作业装 ...

  2. 作业调度和进程调度有什么关系

    作业调度和进程调度有什么关系 本文中的定义,来自<计算机操作系统>(第四版),汤小丹 梁红兵 哲凤屏 汤子瀛主编,西安电子科技大学出版社出版 关系 在传统OS中,调度包括作业调度和进程调度 ...

  3. 第一章 1.4操作系统作业调度和进程调度

    1.操作系统两级调度 前言 包括长期调度和短期调度.长期调度是作业调度,以小时为单位,短期调度是进程调度,以毫秒为单位.现代操作系统不产生长期不被调度和经常被调度的进程.进程调度是操作系统对进程就绪队 ...

  4. 作业调度与进程调度的区别

    一.作业调度 作业调度主要是将位于外存后备队列中的某个(或某几个)作业调入内存,排在就绪队列上.这个时候仅仅是将作业调入内存,并为作业创建进程.分配资源,此时进程处于就绪态,并没有执行. 二.进程调度 ...

  5. 操作系统-作业调度和进程调度

    1:作业调度 作业调度的主要任务是: 根据JCB的信息,按照某种规则从作业后备队列中进行挑选,给选中的作业分配内存等资源,并建立响应的进程,使其投入运行. 2:作业调度算法 先到先服务 短作业优先 高 ...

  6. 计算机操作系统之期末考试复习——作业调度和进程调度

    作业调度和进程调度算法 先来先服务(first-come first-served,FCFS)调度算法:按照作业/进程到达的先后顺序进行服务. 短作业优先(short job first,SJF)的调 ...

  7. 【OS笔记 11】三级调度模型——作业调度、进程调度、中级调度(换入/换出)

    在多道批处理系统中,一个作业从提交到获得CPU执行,直到作业运行完毕,可能需要经历多级处理机调度. 一.处理机调度的层次 1. 高级调度(作业调度 / 长程调度) 调度对象: 作业 功能: 根据某种算 ...

  8. 作业调度、进程调度、实时调度的几种典型算法

    1.先来先服务FCFS 定义:系统按照作业到达的先后次序来进行调度(优先考虑等待时间最长的作业),并且不管该作业所需执行时间的长短. 例子: 2.短作业优先SJF 定义:系统在调度时会从作业后备队列中 ...

  9. 操作系统 实验三 进程调度模拟程序

                                                          实验三 进程调度模拟程序                                   ...

最新文章

  1. 医生还未失业,IBM Watson已跌入深渊 | 极客头条
  2. 使用StarWind为RAC设置存储
  3. 经典FOXMAIL报错 winsock error 11004
  4. CentOS中JAVA_HOME的环境变量设置
  5. oracle查询pga大小GB,Oracle如何调整SGA和PGA的大小
  6. 流水灯c语言程序延时失败,用c8051f340做控制流水灯实验,程序会卡死在延时函数中 ,只要在那加延时函数程序就只能跑到那,代码如下...
  7. 2020年日历电子版(打印版)_“温故知新”——2020年《故宫日历》(青少版)正式发布...
  8. java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔)
  9. java低配电脑运行,学会这几招,低配电脑用着也不卡啦!真心的实用 ,真是好方法。...
  10. 【SQL Server】CONVERT() 函数
  11. CSS绝对定位元素居中的几种方法
  12. 文件备份软件 FreeFileSync
  13. python语言与存货管理,(二)实现对库存管理系统的模块化编程
  14. axio基础配置方法
  15. Ubuntu系统下载及安装教程
  16. 勿忘2022,迎接2023
  17. 超详细的css知识树状图~CSS选择器盒子模型、浮动、定位和装饰
  18. 学号,课程名查询成绩
  19. 鸟叔的linux私房菜:第0章 计算机概论学习笔记(Learning Notes for Basic Computer Theory)
  20. 电信光猫天翼网关usb插U盘共享文件

热门文章

  1. 【SSD论文解读】 论文中用到的数据集:Pascal VOC、MS COCO、ImageNet
  2. 弘辽科技:淘宝词根和关键词有什么联系?如何优化?
  3. HCL/异丙醇湿法处理制备洁净的InAs表面
  4. 光照常用设置经验总结--初级(个人笔记)
  5. 仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮
  6. Django电商项目—项目规划和环境搭建
  7. 中企动力与港田高分子同行 创建营销型企业云平台
  8. Linux ping命令详解
  9. 在ubuntu17.04下安装最新版QQ教程
  10. matlab中 w 和 r,如何使用MATLAB 编辑公式 w^2=λ/π(根号下L(R-L)) L 是个变量 取值1到100 能不能画出一条曲线...