作业调度和进程调度的辨析题_进程调度的功能有哪些

作业调度和进程调度的辨析题_进程调度的功能有哪些很多学习完《操作系统原理》这门课程的小伙伴都应该对“FCFS(先到先服务)”、“SJF(短作业优先)”等调度算法原理比较熟悉。但是在实际做题的时候,往往一不小心就把概念搞错,不容易区分“作业调度”和“进程调度”的区别。下面我主要针对这两个概念进行解析并给出经典习题解答。PS:本博客并不详解每种调度算法的原理,因此有这方面需求的小伙伴可以直接pass了。1、作业调度作业调度又称为高级调度,频度较低。其主要工作是将位于外存后备队列中的某个(或某几个)作业调入内存,排在就绪队列上。注意了,这个时候仅仅是将作

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

很多学习完《操作系统原理》这门课程的小伙伴都应该对“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.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187772.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 道友自诉:入职中软一个月(外包华为)就离职了!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:有人看我吗 blog.csdn.net/progammer10086/article/details/1050…

    2021年6月25日
    110
  • Node.js

    Node.js

    2021年8月18日
    65
  • CSS calc()函数与单位vh 常见height:100vh[通俗易懂]

    CSS calc()函数与单位vh 常见height:100vh[通俗易懂]calc()函数属于CSS3版本内容,用于动态计算长度值。例如:width:calc(100%-10px);需要注意的是,运算符前后都需要保留一个空格。calc()函数支持”+”,”-“,”*”,”/”运算;举例,给一个div动态设置宽度如下:#divBox{position:absolute;left:50px;width:calc(100%-100p…

    2022年6月5日
    45
  • linux访问服务器端口号命令_ssh的端口号

    linux访问服务器端口号命令_ssh的端口号来源:http://blog.csdn.net/u013943420/article/details/65938696大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解。所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误,或者被黑客利用某些端口进行入侵。对于这件事情,大部分人都很头疼——……

    2022年9月12日
    0
  • java集合详解完整版(超详细)「建议收藏」

    java集合详解完整版(超详细)「建议收藏」联合整理https://blog.csdn.net/feiyanaffection/article/details/81394745https://www.cnblogs.com/linliquan/p/11323172.html一、集合大纲1、集合与数组的区别2、集合常用方法3、常用集合分类Collection接口的接口对象的集合(单列集合)├——-List接口:元素按进入先后有序保存,可重复│—————-├LinkedList接口实现类,链表,插入删除,没有

    2022年5月4日
    42
  • Python中strip()函数

    Python中strip()函数在pythonAPI中这样解释strip()函数:声明:s为字符串,rm为要删除的字符序列s.strip(rm)删除s字符串中开头、结尾处,位于rm删除序列的字符s.lstrip(rm)删除s

    2022年7月5日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号