《操作系统 第2章 用户接口》由会员分享,可在线阅读,更多相关《操作系统 第2章 用户接口(45页珍藏版)》请在金锄头文库上搜索。
1、第2章 操作系统用户界面 作业的基本概念:作业、作业步、作业流 批处理操作系统的作业管理 交互式系统的命令控制界面 系统调用思考 什么是作业? 什么是命令控制界面? 什么是系统调用?3.1 作业的基本概念1.作业用户在一次计算过程中,或者一次事务处理过程中 ,要求计算机系统所做工作的总称2. 作业步 一个作业可划分成若干部分,称为一个作业步 典型的作业控制过程:“编译”、“连接装配”、“运行” 3. 作业流典型的作业步编译连接装配运行目标 程序 段目标 程序源程序输入数据子程序库函数 动态库函数计算结果编辑(输入,修改)源程序编译连接运行成功编辑(输入,修改)另一源程序是否典型的作业流一个作业
2、另一个作业3.2 批处理系统的作业管理 在批处理系统中,作业是抢占内存的基本单位。也 就是说,批处理系统以作业为单位把程序和数据调 入内存以便执行。 从系统的角度看,作业则是一个比程序更广的概念 。它由程序、数据和作业说明书组成。系统通过作 业说明书控制文件形式的程序和数据,使之执行和 操作。3.2.1 批处理作业控制语言与作业说明书1作业说明书:表达用户对作业的控制意图内容: 作业的基本描述 作业控制描述 资源要求描述2作业控制语言 书写作业说明书的语言称为作业控制语言(JCL) 用户用于描述批处理作业处理过程控制意图的一种 特殊程序作业控制语言的类别 包括: I/O命令、编译命令、操作命令
3、以及条件命令等3.2.2 作业控制块与作业表1作业控制块(JCB:Job Control Block)作业控制块是批处理作业存在的标志 其中保存有系统对于作业进行管理所需要的全部信息 它们被保存于磁盘区域中(1)作业控制块的内容作业控制块中所包含的信息数量及内容因系统而异 较简单的系统 较复杂的系统 作业标知 用户名称 用户帐号 调度信息 资源需求 作业状态 作业类别 输入井地址 输出井地址 进入系统时间 开始处理时间 作业完成时间 作业退出时间 资源使用情况作业控制块JCB(2)作业控制块的建立当作业开始由输入设备向磁盘的输入井传输时系统输入程序为其建立一个作业控制块进行初始化初始化的大部分
4、信息取自作业说明书(3)作业控制块的使用需要访问作业控制块的程序 系统输入程序 作业调度程序 作业控制程序 系统输出程序等(4)作业控制块的撤消作业完成后,其作业控制块由系统输出程序撤消 作业控制块被撤消后其作业也不复存在 作业在系统中存在与否的唯一标志是( )。 A、源程序 B、作业说明书 C、作业控制块 D、目的程序 当作业进入完成状态,操作系统( )。A将删除该作业并收回其所占资源,同时输出结 果B将该作业的控制块从当前作业队列中删除,收 回其所占资源,并输出结果C将收回该作业所占资源并输出结果D将输出结果并删除内存中的作业3.2.3 作业的输入作业的输入将作业程序、数据和作业说明书从输
5、入 设备(例如键盘)输入到外存,并形成初始信息1作业输入方式联机输入方式 脱机输入方式 直接耦合方式 SPOOLing系统(1)联机输入方式 用户和系统通过交互会话来输入作业 外围设备直接和主机连接(2)脱机输入方式为了解决单台设备联机输入时的CPU浪费问题(3)直接耦合方式把主机和外围低档机通过一个公用的大容量外存直 接耦合起来主 机公用存储器低档PC机低档PC机(4)SPOOLing系统SPOOLing系统工作原理全称: Simultaneous Peripheral Operations On-Line 含义: 同时的外围设备联机操作(假脱机技术)包括: 输入程序模块 输出程序模块 作业
6、调度程序SPOOLing系统工作原理(续1) 作业执行前用慢速设备将作业预先输入到后援存储 器(如磁盘、磁鼓,称为输入井)中,称为预输入 作业运行后,使用数据时,从输入井中取出 作业执行不必直接启动外设输出数据,只需将这些 数据写入输出井中 作业全部运行完毕,再由外设输出全部数据和信息 ,称为缓输出实现了对作业输入、组织调度和输出的统一管理 使外设在CPU直接控制下,与CPU并行工作(称为假 脱机)输入装置输出装置通道通道输出装置输出装置通 道主机系统输入管 输出管 理模块 理模块外 设输入井 输出井 SPOOLing系统 批处理作业进入计算机系统时必须提交() A 可执行文件 B 作业控制控
7、制说明书 C 源程序 D 作业所需资源 E 运行时的数据3.3 交互式系统的命令控制界面3.3.1 概述 1.命令控制界面在操作系统与计算机用户之间提供易于理解的双向 通信机制基本任务: 解释命令,传送命令以便执行 接受系统信息,提交给用户(以响应语言的形式) 交互式命令的接口复杂含功能结构,可能问题的处理,如各种约定、前端 处理、命令日志、命令注解、宏命令及命令组等 交互式控制灵活方便,可以随时进行各种处理,排 除问题,方便调试;系统利用率低 接口包括:一组联机命令,终端处理程序,命令解 释程序2命令语言命令语言规定由OS执行的一系列操作 在一般的命令语言中,用户通过打入称为命令行的 一行指
8、令来规定每一个动作 每一命令行以命令开始,它标识所要执行的操作 大多数命令是用运行一个程序来执行所请求的操作多数命令行中要给出一些参数, 每一命令语句实际上 是带有参数的一个过程调用一个命令语言通常提供下列几组命令: (1)系统访问命令 登录命令,如,login等 撤离命令,如,logout等 (2)文件管理命令(3)编辑、编译和执行命令 (4)询问命令 (5)操作员专用命令命令语言(续1)典型命令实例: (1)UNIX系统: ls -l (2)DOS系统 dir c: (3)VAX/VMS run mypro命令语言(续4)3交互式系统的历史与展望 六十年代中期:问答式对话、文本菜单或命令语
9、言 ,基于命令行界面的交互式系统 七十、八十年代:图形用户界面时代,形成WIMP标 准,以窗口(windows)、图标(icon)、菜单( menu)、指点装置(pointing device)为基础的 交互式系统,实际行动代替复杂语法 未来的交互式系统必将是多通道的通过各种不同的人体通道,如语音、手势、身体语 言等交互,大大提高交互的自然性和高效性遵循以人为中心的自然交互特点,实现人与系统的 无障碍自然交互 交互作业的特点是() A 成批处理 B 采用人机对话方式 C 多道处理 D 自动控制 E 交互性 用户在自己的用户终端上连续键入组成作业的若干 命令,无需等待一条命令是否执行完毕。所键入
10、的 命令形成了一道命令串,存储在一个系统缓冲区中 ,由操作系统自动地对这些命令逐步提取并解释进 行,最后向用户提供处理结果。在这样的多用户、 多作业、多命令串的系统中,前后台作业的执行调 度( )。 A、完全由操作系统自动完成,无需用户干预 B、由用户干预完成 C、由系统和用户干预结合完成 D、全由用户完成3.4 系统调用3.4.1 系统调用简介 系统调用,是用户在程序中调用操作系统所提供的一 些子功能 这是特殊的过程调用,由特殊的机器指令实现 这个指令还将系统转入管态 系统调用程序是一个低级过程,只能由汇编语言直 接访问 系统调用是操作系统提供给编程人员的唯一接口 利用系统调用,动态请求和释
11、放系统资源,完成与 硬件相关的工作以及控制程序的执行等 每个操作系统都提供几百种系统调用,包括:外存 文件与目录的读写,各种I/O设备的使用,在程序 中启动另一个程序,查询和统计系统资源使用情况 等等 实际上系统调用语句本身是硬件提供的(机器指令 ),但其所调用的功能是操作系统提供的 每种机器的机器指令集中都有一条系统调用指令( 访管指令)汇编程序例子:打印5个字符MOVE AX, PARA1MOVE BX, PARA2INT 21H系统调用的例子高级语言例子:打印5个字符char buff4=“abcde”;for(i=4;i=0;i-)print(buffi);.i=4 printf(.
12、. .) i+(1)源程序段INT. .(2)printf目标代码INTi=4i+.INOUT .(3)程序段编译产生的 可执行代码(4)操作系统 内部代码嵌入后该系统调 用的操作 系统内部 实现代码. .功能号 地址显 示打 印读文件. . . .OS的系统调用分支表 OS代码显示打印读文件OSINT. . . . . .用户程序系统调用的分类将系统的功能分为两部分: 系统自身所需要的 作为服务提供给用户的OS的系统调用: 进程控制类系统调用 文件操作类系统调用 进程通信类系统调用 设备管理类系统调用 信息维护类系统调用3.4.2 系统调用的处理过程为了保证OS不被用户程序破坏不允许用户程序
13、访问OS的系统程序和数据那么,怎样得到系统服务的呢?需要有一个类似于硬件中断处理的处理机构 当用户使用操作系统调用时,产生一条相应的指令 处理机在执行到该指令时发生相应的中断,并发出有 关的信号给该处理机构 该处理机构在收到了处理机发来的信号后,启动相关 的处理程序去完成该系统调用所要求的功能system call入口地址表(1)保护处理 现场(2)取系统调 用功能号并 寻找子程序 入口(3)返回A0A1AiAnA0 A1AiAnSub0Sub1SubiSubn 用户程序 陷入处理机构 系统子程序系统调用的处理过程3.4.3 Win32 应用程序接口 在Windows中,定义了一系列程序(应用程序接口 Win32 API) ,提供OS服务 这个接口(部分)支持Win95 以后的Windows版本 Win32 API调用的种类非常多,以千计算 在Windows中不可能分辨出哪些是系统调用(被内 核执行),哪些是用户空间的库调用(不涉及硬件 ) 下列C语言库函数哪些涉及系统调用() A sin() B printf() C abs() D sqrt() E getch( )总结 什么是作业? 作业的组成和标识? 作业的输入方式及各自特点? 命令控制界面的类别? 系统调用的原理?