作业调度和进程调度的辨析

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

  • 204
    点赞
  • 559
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
实验一 进程调度 编写并调试一个模拟的进程调度程序,采用“短进程优先”调度算法对五个进程进行调度。以加深对进程的概念及进程调度算法的理解. 下面是采用动态优先数的调度程序,可作参考。  例题: 设计一个有 N个进程共行的进程调度程序。   进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。   每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。   进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。   进程的运行时间以时间片为单位进行计算。   每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。   就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。   如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。   每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。实验二 作业调度 一、实验目的:用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二、实验内容: 1.写并调试一个单道处理系统的作业等待模拟程序。 2.作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。 3.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。 4.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。 5.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 三、思考:比较各种算法的优缺点。 实验三 动态分区分配方式的模拟 1、实验目的:了解动态分区分配方式中的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解 2、实验内容: (1)用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程和回收过程。其中,空闲分区通过空闲分区链(表)来管理;在进行内存分配时,系统优先使用空闲区低端的空间。 (2)假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: •作业1申请130KB •作业2申请60KB •作业3申请100KB •作业2释放60KB •作业4申请200KB •作业3释放100KB •作业1释放130KB •作业5申请140KB •作业6申请60KB •作业7申请50KB •作业8申请60KB 请分别采用首次适应算法和最佳适应算法进行内存的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。 3、思考:讨论各种分配算法的特点。
1. 实验目的 调度的实质是操作系统按照某种预定的策略来分配资源。进程调度的目的是分配CPU资源。由于进程调度程序执行的频率很高,因此调度算法的好坏直接影响到操作系统的性能。本实验的目的是编程模拟实现几种常用的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。 2. 实验原理 [1]. 进程调度算法描述 进程调度算法包括先来先服务调度算法、最短作业时间优先(抢占式和非抢占式)、最高响应比调度算法4种。(每个人必须做FCFS,然后在后面的三种中任选一种,即每个人必须做2种调度算法的模拟。) [2]. 衡量算法性能的参数 计算进程的平均周转时间和平均带权周转时间。 3. 实验内容 (1)编程实现本实验的程序,要求: [1]. 建立进程的进程控制块,进程控制块至少包括: a) 进程名称; b) 进程需要执行时间; c) 进入就绪队列时间; d) 进程执行开始时间 e) 进程执行结束时间 [2]. 编程实现调度算法。 [3]. 进程及相关信息的输入。这些信息可以直接从键盘上输入,也可以从文件读取。 [4]. 时间片与时间流逝的模拟。本实验需要对算法的执行计时,程序应该提供计算时间的方法。一种最简单的方法是使用键盘,比如每敲一次空格代表一个时间片的流逝。另一种方法是使用系统时钟。 [5]. 一组进程序列执行完毕,打印出结果信息。程序需要计算出每个进程的开始执行时间、结束时间、周转时间和带权周转时间,并为整个进程序列计算平均周转时间和平均带权周转时间。程序将计算结果按一定的格式显示在计算机屏幕上或输出到文件中。打印出进程调度顺序图。 [6]. 实现数据在磁盘文件上的存取功能。 (2)对下列就绪进程序列分别使用上面的几种算法进行调度,计算每种算法下的平均周转时间和平均带权周转时间。 进程号 到达时间 要求执行时间 0 0 1 1 1 35 2 2 10 3 3 5 4 6 9 5 7 21 6 9 35 7 11 23 8 12 42 9 13 1 10 14 7 11 20 5 12 23 3 13 24 22 14 25 31
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋之颂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值