您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux操作系统的作业调度和进程调度

时间:2020-07-28 11:24:53  来源:  作者:

作业状态

作业从提交给系统、直到它完成任务后退出系统前,在整个活动过程中它会处于不同的状态。通常,作业状态分为四种:提交、后备、执行和完成,如图所示。

Linux操作系统的作业调度和进程调度

作业的基本状态

1.提交状态——用户向系统提交一个作业时,该作业所处的状况。如将一套作业卡片交给机房管理员,由管理员将它们放到读卡机予以读入;或者用户通过键盘向机器输入其作业。

2.后备状态——用户作业经输入设备(如读卡机)送入输入井(磁盘)中存放,等待进入内存时所处的状况。此时,该作业的数据已转换成机器可读的内部形式,并且作业请求资源等信息也交给了操作系统。

3.执行状态——作业分配到所需的资源,被调入内存,其进程经调度在处理机(CPU)上运行相应的程序时所处的状况。此时该作业处于活动状况。由于内存中有多个作业,所以在单CPU系统中,任何时刻真正在运行的作业至多只能有一个。

4.完成状态——即作业完成了计算任务,结果由打印机输出,最后由系统回收分配给它的全部资源,准备退出系统时的作业状况。

Linux操作系统的作业调度和进程调度

 

作业调度

1.作业控制块(JCB)

在多道批处理系统中通常有上百个作业被收容在输入井(磁盘)中。为了管理和调度作业,系统为每个作业设置了一个作业控制块(JCB),它记录该作业的有关信息。不同系统的JCB的组成内容有所区别。图示出JCB的主要内容。

Linux操作系统的作业调度和进程调度

 

如同PCB是进程在系统中存在的标志一样,JCB是作业在系统中存在的标志。作业进入系统时由SPOOLing系统为每个作业建立一个JCB;当作业退出系统时,则它的JCB也一起被撤消。在磁盘输入井中的所有后备作业按作业类型(CPU型,I/O型等)组成不同的后备作业队列。由作业调度从中挑选作业,随后放入内存,予以运行。

2.作业调度的功能

作业调度的主要任务是完成作业从后备状态到执行状态和从执行状态到完成状态的转换。具体来说,通常作业调度程序要完成以下工作(这就是作业调度的功能):

(1)记录系统中各个作业的情况。要当好指挥,必须对所管对象心中有数。同样,作业调度程序必须掌握各个作业进入系统时的有关情况,并把每个作业在各个阶段的情况(包括分配的资源和作业状态等)都记录在它的JCB中。作业调度程序就是根据各个作业的JCB中的信息对作业进行调度和管理的。

(2)按照某种调度算法从后备作业队列中挑选作业,即决定接纳多少个作业进入内存和挑选哪些作业进入内存。这项工作非常重要,它取决于多道程序度,直接关系到系统的性能。往往选择对资源需求不同的作业进行合理搭配,使得系统中各部分资源都得到均衡利用。

(3)为选中的作业分配内存和外设等资源。

(4)为选中的作业建立相应的进程,并把该进程放入就绪队列中。

何时创建新进程一般由多道程序决定,因为创建的进程越多,每个进程占用CPU的百分比就越小。为了对当前的一组进程提供良好的服务,作业调度程序要限制多道程序度。

(5)作业结束后进行善后处理工作,如输出必要的信息,收回该作业所占用的全部资源,撤消与该作业相关的全部进程和该作业的JCB。

应该指出,内存和外设的分配与释放的工作,实际上分别由存储管理程序和设备管理程序完成,即由作业调度程序调用它们来实现的。

进程调度的功能和时机

进程只有在得到CPU之后才能真正活动起来。一个就绪进程怎样获得CPU的控制权呢?这是由进程调度实现的。

进程调度也叫低级调度进程调度程序也往往叫低级调度程序,它完成进程状态从就绪态到运行态的转化。实际上,进程调度程序完成一台物理的CPU转变成多台虚拟(或逻辑)的CPU的工作。

1.进程调度的主要功能

(1)保存现场。当前运行的进程调用进程调度程序时,即表示该进程要求放弃CPU(因时间片用完或等待I/O等原因)。这时,进程调度程序把它的现场信息,如程序计数器及通用寄存器的内容等保留在该进程PCB的现场信息区中。

(2)挑选进程。根据一定的调度算法(如优先级算法),从就绪队列中选出一个进程来,并把它的状态改为运行态,准备把CPU分配给它。

(3)恢复现场。为选中的进程恢复现场信息,并把CPU的控制权交给该进程,从而使它接着上次间断的地方继续运行。

2.进程调度的时机

(1)任务完成。正在运行的进程完成其任务后,主动释放对CPU的控制。

(2)等待资源。由于等待某些资源或事件,正在运行的进程不得不放弃CPU。

(3) 运行到时。在分时系统中,当前进程使用完规定的时间片,时钟中断使该进程让出CPU。

(4)发现标志。核心处理完中断或陷入事件后,发现系统中“重新调度”标志(如linux系统中进程task_struct的成员need_resched)被置上,表示有比当前用户进程更适宜运行的进程,则执行进程调度。

进程调度程序是操作系统的真正核心,它直接负责CPU的分配。系统中所有进程都是在CPU上运行的,进程调度程序就是它们的切换开关。

如果把硬件CPU看成一台裸机,那么加上这个调度程序之后,就变成多台逻辑上相同的CPU,只是速度慢一些。在有的机器上,甚至用微程序设计把这个程序装入只读存储器(ROM)中,从而提高CPU的调度效率。



Tags:Linux 作业调度   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作业状态作业从提交给系统、直到它完成任务后退出系统前,在整个活动过程中它会处于不同的状态。通常,作业状态分为四种:提交、后备、执行和完成,如图所示。作业的基本状态1.提交...【详细内容】
2020-07-28  Tags: Linux 作业调度  点击:(182)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(13)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(21)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(21)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(34)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(26)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(16)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(24)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条