先来理解几个概念
作业管理、通信事务管理是操作系统提供给用户的最直接服务。
操作系统类型:单用户操作系统;多道批处理系统;分时系统(Unix系统);实时系统;网络操作系统;分布式操作系统(分布式操作系统是网络操作系统的高级阶段)。
操作系统运行环境:最为重要的是中断机构。事件引发中断,中断必须加以处理,操作系统由此被驱动。操作系统本身的代码运行在核心态。用户态进入核心态的唯一途径是中断。在Unix中是trap(陷门)。
主动模块:OS启动时就参与运行的程序代码段。被动模块:被主动模块调用而运行的模块或被另外一些被动模块调用,例如中断处理程序。
操作系统启动过程:用户交个计算机的工作称为作业;
作业由程序、数据、作业说明3部分组成;
我们接触的操作系统作业分为:批处理作业和交互式作业;脱机是批处理作业的主要特征。脱机的意思是不由人再操作。
交互式作业以联机为主要特征。
2.2 操作系统提供的用户界面
程序界面(编程系统调用的界面):它由一组系统调用命令组成。每条系统调用指令都对应一个由操作系统设计者事先编制好的、能完成某些特定功能的例行程序。供用户编程使用的界面,用户可以把系统调用命令写进程序中。系统调用在程序一级上为用户提供支持,所以称为程序界面。
联机用户界面(键盘操作屏幕操作的界面):由键盘命令和屏幕命令组成。键盘命令是由联机用户交互式终端上通过键盘键入的命令。屏幕命令的输入主要是靠鼠标的点击,拖曳移动。
脱机用户界面:它由一组作业控制命令组成。这组作业控制命令带有浓厚的编程语言特征,所以又被称为作业控制语言。C-Shell语言编写作业说明书,规格如下:
86% nroff -mm glossary > glossary.out & [1] 26025
%:命令提示符;
86:命令顺序号;
nroff:命令名;
-mm:参数;
glossary:文件名;
>:传送命令;
&:后台命令(只有在前台命令不运行时,后台命令才运行);
[1]:顺序号
26025:进程号
2.2.1 Unix系统调用执行过程
Unix中有64中系统调用命令。执行系统调用例行程序模块时涉及到处理机运行状态的改变:用户态到系统态,执行完例行程序后再返回用户态。Unix的系统调用命令是通过中断结构“陷入(trap)”操作系统的核心。
如何找到OS内部的例行程序?
通过系统调用命令表找到相应命令的入口地址,进而找到例行程序,执行完例行程序之后再返回调用处。Trap 03,通过03查找命令表,从而从用户态进入核心态。硬件上执行trap指令是,会自动自陷中断。
2.2.2 键盘命令执行过程
2.2.3 屏幕命令执行过程——事件驱动
事件驱动产生命令——命令排队——细分命令(用户命令,OS命令,DOS命令)——转到相应的处理程序。
2.2.4 用户界面现状与发展
屏幕功能将更加丰富;
屏幕命令的接受附件将更加智能化;
2.3 交互式作业管理
交互式作业有一个输入(编辑)、编译、运行、调试、再编译、再运行的反复过程。
2.4 批处理作业管理
三种状态:后备状态(处理前)—(作业调度)—运行状态(作业控制)—(作业撤离)—完成状态(处理后);
作业登录:作业登录程序负责为作业建立JCB;作业外存地址、作业登录时间;所有作业的JCB被链接在一起,习惯上称为作业队列。
2.4.1 作业撤离
从作业队列上取下该作业的JCB,释放JCB中指明的各种资源。2.4.2 作业调度
从后备作业队列中选出一个作业装入主存,参与多道运行。
常见的作业调度算法:
2.4.3 作业控制
作业 = 程序 + 数据 + 作业说明书
作业控制程序实际上是作业控制命令的解释执行程序,它根据用户作业的说明书,逐条解释执行其命令。
某作业说明书的一个片段:
cc f1.c /*编译f1模块,生成f1.obj文件*/
cc f2.c /*编译f2模块,生成f2.obj文件*/
link f1.obj f2.obj f.exe -lib :/*将两个目标文件链接成一个可执行文件f.exe
在多处理机环境下,作业控制程序有识别作业,步并行关系的能力和任务分派能力。
作业控制程序同样要能控制并发程序。作业控制程序被启动后以进程的方式运行,称为作业控制进程,它是运行态作业的祖先进程,再由祖先进程创建子孙进程,形成作业的进程家族。
2.4.4 作业与进程
进程(process)就是为描述任务的动态行为而提出来的;
作业(任务)是由多个进程组成的,作业的资源需求量等于它的进程拥有的资源数量之和。
现在操作系统把进程作为申请资源的基本单位,把线程(thread)作为任务执行的基本单位。