(一) 作业的基本概念

(1) 用户的角度

首先,看一张流程图,顺着这个图我们简单理解一下

所以我们可以从用户的角度这样理解作业:作业就是用户一次请求计算机系统为用户完成任务所做工业的综合

进而,在一个作业的处理过程中,计算机所做的每个相对独立的工作就是,一个作业步,作业由不同顺序的作业步组成。

补充理解:编辑(cpp)-> 编译(obj)-> 链接(exe)

(2) 系统的角度

接下来,从系统的角度,可以将作业视为程序、数据和作业说明书构成的整体,即:

作业程序 + 数据(作业体)+ 作业说明书(作业控制语言编写)

其中,书写作业说明书的语言称为作业控制语言(JCL),是用户用于描述批处理作业处理过程控制意图的一种特殊程序,例如批处理文件。

批处理系统中,作业是抢占内存的基本单位,即以作业为单位将程序和数据调入内存

(3) 作业组织

作业:程序、数据、作业说明书

作业说明书:作业基本情况、作业控制、作业资源

  • 作业基本情况:用户名、作业名、编程语言、最大处理时间等
  • 作业控制描述:作业控制方式、作业步的操作顺序、作业执行出错处理
  • 作业资源要求描述:处理时间、优先级、内存空间、外设类型和数量等

(二) 作业的建立

作业的建立指的是一个作业的全部程序和数据输入到外存且在系统中建立了相应的作业控制块(job control block——JCB),也就是说,作业的建立包括

  • 作业的输入
  • 作业控制块的建立

(1) 作业的输入

作业的输入是将作业的程序、数据和作业说明书从输入设备输入到外存,并形成有关初始信息

在作业输入时,需要外部启动信号通知系统调用相应的输入管理程序——决定了作业的输入方式

A:联机输入方式

定义:外围设备和主机直接连接的输入方式

特点

  • 采用这种输入方式时,单台设备和主机连接,I/O 与作业处理不能并行,降低了 CPU 效率
  • 如果采用多台外设同时联机输入,就构成了我们后面要介绍的 SPOOLING 系统

B:脱机输入方式

定义:利用低档个人计算机作为外围处理机进行输入处理

这种方式下,主机与输入设备不是直接连接,实现了脱机。具体地:在个人机上,用户通过联机方式将作业输入到后援存储器,然后将装有输入数据的后援存储器拿到主机的高速外设上与主机连接

特点

  • 解决了主机 CPU 的浪费,以牺牲个人机为代价;灵活性差,需人工干预介质传送
  • 脱机输入方式的一个示例如下图所示

C:直接耦合方式:

定义:将主机和外围低档机通过一个公用的大容量外存直接耦合,如下图

特点

  • 保留了脱机方式快速的优点,克服了其人工干预的缺点
  • 需要大容量公用存储器和多台低档机,成本高

D:SPOOLING 系统

定义:假脱机(Simultaneously Peripheral Operation OnLine-同时外围设备联机操作)

这种输入方式下的工作方式是:

系统把作业处理的全过程划分为相对独立的三个部分——输入流、处理流、输出流

spooling-in/spooling-out 进程:控制输入/输出,包括输入程序模块、输出程序模块、作业调度程序

工作原理:

  • 作业执行前用慢速设备将作业预先输入到后援存储器(如磁盘、磁鼓,称为输入井)中,称为预输入
  • 作业运行后,使用数据时,从输入井中取出
  • 作业执行不必直接启动外设输出数据,只需将这些数据写入输出井中
  • 作业全部运行完毕,再由外设输出全部数据和信息,称为缓输出

可见,这一过程表明,实现了对作业输入、组织调度和输出的统一管理,使外设在 CPU 直接控制下,与 CPU 并行工作。虽然主机与输入设备没有分离,却具有了脱机的性质——假脱机

E:网络输入方式

当用户需要在计算机网络中某一台主机上输入的信息传送到同一网络中的另一台主机上进行操作或执行时,即构成网络输入方式

(2) 作业控制块的建立

作业控制块(JCB)是在作业建立时系统根据作业说明书建立的

在运行过程中,JCB 是系统对作业进行管理的必要信息,主要包括:

  • 作业名
  • 估计执行时间
  • 优先数(用于调度)
  • 作业说明书文件名
  • 程序类型(需调用的系统程序)
  • 资源要求(静态,或中间可以随作业步变化)
  • 作业状态(提交、后备、执行、完成)

A:作业的四个状态:

  • 提交:作业由输入设备进入外存的过程
  • 后备:提交完成后,系统建立JCB,作为调度作业的依据,并将JCB 加入到后备作业队列
  • 执行:一个后备作业由作业调度程序选中并调入内存中,分配相应的资源后为其建立了相应的进程
  • 完成:当作业正常结束或因发生错误而终止时,作业进入完成状态

B:作业控制块(JCB)

系统为每个作业建立了 JCB,该表格登记该作业所要求的资源情况、预计执行时间和执行优先级
包括:

  • 作业名以及状态
  • 资源要求
  • 作业控制方式

作用:

  • 作业的唯一标识
  • 通过 JCB 对作业进行控制和管理

JCB 的创建和撤销:

  • 在作业进入后备状态时,由作业注册程序建立
  • 当作业执行完毕时,由作业终止程序撤销

(三) 作业的调度

A:作业调度功能:

  • 建立 JCB
  • 按照调度算法从后备队列中选择作业运行
  • 为选择的作业分配资源并建立进程
  • 作业完成后,负责回收资源和该作业的 JCB

B:CPU利用率

  • CPU利用率=CPU有效工作时间/CPU总运行时间
  • 作业周转时间Ti

    • = 作用i完成时间-作业i提交时间
    • = 作业运行时间Tri+作业等待时间Tdi
  • 作业平均周转时间=(T1+T2+…+Ti+Tn) / n
  • 作业带权周转时间 Wi = Ti / Tri = 1 + Tdi / Tri
  • 作业平均带权周转时间 W = (W1 + W2 + … + Wn) / n

C:常用作业调度算法:

  • 先来先服务(FCFS)
  • 短作业优先(SJF)
  • 最高响应比优先(HRN)

R =(W + T)/ T= 1 + W / T

(四) 用户接口

(1) 程序级接口

程序级接口:是系统为用户在程序一级提供有关服务而设置的,由一组系统调用命令组成

  • 负责管理和控制运行的程序
  • 在这些程序与系统控制的资源和提供的服务间实现交互作用
  • 用汇编语言:在程序中直接用系统调用命令
  • 用高级语言:可在编程时使用过程调用语句

例如:在 C 的编程中,使用到的一些系统调用函数(例如:fork() )就是程序级接口

注意:程序级接口只能在高级语言或汇编语言中作为函数和过程被调用,而不能像一个命令那样直接在系统提示符下输入

这一部分会在 第五大点 再单独介绍一下

(2) 命令级接口

用户在 DOS 或 UNIX 文字界面的系统提示符下输入命令,即使用了操作系统提供的命令级接口(操作级接口)

因此,操作级接口为用户提供了各种命令。
具体在使用时,用户可以将一些命令通过 JCL 编写作业控制程序提交给系
统,系统执行过程中用户无法干预,这种方式可以视为“批处理”。注意,这是
命令的批处理。

另一种更常见的方式是,用户通过命令与系统对话,控制程序执
行和管理计算机系统(用户直接参与控制作业执行)

  • 操作系统通过操作级接口提供的命令种类包括:
  • 环境设置:改变终端用户所在位置、执行路径等;
  • 执行权限管理:控制用户访问系统和操作文件的权限;
  • 系统管理:系统维护、开机关机、增加或减少终端用户、计时收费等;
  • 文件管理:管理和控制终端用户的文件;
  • 编辑、编译、链接装配和执行编辑命令;
  • 通信:主机 <--> 远程终端、主机 <--> 主机;
  • 资源要求:用户向系统申请资源。
此外,现在的 Windows、UNIX 图形界面等操作系统为用户提供了图形用户接口,用户通过鼠标点击图标、菜单、窗口等即可进行操作。但就其实质而言,点击图标实际上也是在执行一个命令。比如,点击文件夹图标,实际上相当于DOS 中的 cd 命令,点击一个文件图标,就是执行该文件的操作。因此,图形用户接口实质上也是操作级接口(命令接口)。

当然,在命令行方式下,用户与操作系统的交互要求用户记忆命令格式。在图形用户接口方式下,用户可利用鼠标对屏幕上的图标进行操作,完成与操作系统的交互,从而减少记忆内容,方便用户使用。它的技术基础是高分辩显示器和鼠标

(3) 用户接口总结

操作级接口(命令接口)提供给用户直接在键盘终端上交互式地使用,程序级接口提供给用户在编程时使用。

操作系统为用户提供两个接口:

  • 一个接口是系统调用(程序级接口),编程人员使用系统调用来请求操作系统提供服务,例如申请和释放外设等类资源、控制程序的执行速度等
  • 另一个是系统为用户提供的各种命令接口,用户利用这些操作命令来组织和控制作业的执行或管理计算机系统

(五) 系统调用

(1) 基本概念

概念:提供了应用程序与操作系统之间的接口

作用:使用户级程序方便获得操作系统提供的服务,主要是与系统资源有关的服务都由操作系统提供

分类:进程控制、文件管理、设备管理、存储管理、通信管理、线程管理

(2) 系统调用与普通过程调用的异同

A:相同点

  • 改变指令流程
  • 重复执行和公用
  • 改变指令流程后需要返回原处

B:不同点

  • 运行在不同的系统状态

    • 一般过程调用,其调用程序和被调用程序都运行在相同状态;而系统调用,调用程序在用户态,被调用程序运行在系统态。
  • 通过软中断进入

    • 一般调用过程通过过程调用语句直接由调用过程转向被调用过程,而系统调用必须通过系统调用指令,由软中断(陷入指令)转向相应处理程序,CPU 由用户态转为系统态
  • 返回问题

    • 一般调用过程在被调用过程执行完毕后,直接返回调用过程;系统调用,在被调用过程执行完毕后,必须首先对系统中所有要求运行的进程进行优先级分析

(六) 结尾

如果文章中有什么不足,欢迎大家留言交流,感谢朋友们的支持!

如果能帮到你的话,那就来关注我吧!如果您更喜欢微信文章的阅读方式,可以关注我的公众号

在这里的我们素不相识,却都在为了自己的梦而努力 ❤

一个坚持推送原创开发技术文章的公众号:理想二旬不止


二境志
191 声望26 粉丝