作业的概念
作业指用户要求的,计算机系统在该次计算或处理该事务时所要完成的工作总量。是用户向计算机系统提交一项工作的基本单位。
作业的分类
1)脱机作业(用户通过操作员间接同计算机系统交互)
常用在批处理系统中,也叫批量型作业,后台作业。在批处理系统中,用户把成批的作业按某种次序输入系统,如此就形成了作业流。不同的系统有一个或多个作业流。批处理系统也叫SPOOLing系统。
(2)联机作业(用户直接同计算机系统交互)
多用于分时系统,也叫交互型作业、终端作业、前台作业。
作业的处理过程
输入状态:用户将作业输入到系统的后援存储器
后备状态:作业注册程序为作业建立作业控制快,将其加入到后备作业队列
执行状态:作业调度程序选中该作业,为其分配资源,建立进程。执行状态又分为就绪、运行和阻塞
完成状态:作业正常结束运行,或因发生错误而终止。
作业的输入/输出方式
- 联机输入/输出
- 脱机输入/输出(人工干预)
- SPOOLing方式(也叫伪脱机方式,但它采用的是联机方式)
作业的三级调度
操作系统中,一个作业从提交到完成,需经过高级、中级、低级三级调度。
中级调度负责内存和磁盘之间进程的对换。内存紧张的情况下,为将磁盘中的进程调过来,必须腾出空间,为此会将内存中的进程交换至磁盘交换区。因而中级调度是为了缓解内存资源的紧张,实现了进程动态覆盖的虚拟存储技术。
作业调度算法
作业调度又称为高级调度或宏观调度,它依据作业调度算法择取后备状态作业中的一个或一批作业,为其建立进程,调入内存。评估作业调度算法好坏的标准:
①CPU利用率
②吞吐量(单位时间内CPU完成作业的数量)
作业周转时间=作业完成时间-作业提交时间 作业周转系数(带权周转时间)=周转时间/执行时间 n个作业的平均周转时间=n个作业周转时间之和/n n个作业的平均周转系数=n个作业周转系数之和/n |
③周转时间
对于用户来说,总是希望周转时间=执行时间,周转系数=1。
作业的平均周转时间越短,作业在系统中停留的时间越短,系统的吞吐量就越高。
作业调度算法的分类
1)单批道处理系统
①先来先服务(First Come, First Serve,FCFS)。
有利于长作业,不利于短作业;有利于CPU繁忙型作业,不利于I/O繁忙型作业。
②短作业优先(Short Job First,SJF)
③最高响应比(HRP)
响应比RP=响应时间/预计运行时间 =(等待时间+预计运行时间)/预计运行时间 =1+等待时间/预计运行时间 |
2)多道批处理系统
①优先级调度算法
②均衡调度算法
作业控制方式
1.脱机作业控制:用户输入作业说明书,由系统控制整个作业的运行。
2.联机作业控制:通过联机命令语言和会话式程序设计语言控制作业运行。
程序的状态
程序可分为系统程序和用户程序。系统程序像有用户程序所不能享有的特权。如此就将两者的运行状态区分开来:操作系统程序运行的状态为管态、系统态;用户程序运行的状态叫算态、目态。在unix中,系统程序运行的状态叫核心态,用户程序运行的状态叫用户态。
特权指令
特权指令是一类只能在管态下执行而不能在算态下执行的指令。有以下几类:传送程序状态字指令;启动、测试和控制外设的指令;存取特殊寄存器的指令(特殊寄存器即中断寄存器、时钟寄存器、上/下界地址寄存器等,它们只能在管态下由系统程序存取)。这些特权指令保证了只有操作系统才能改变内存寄存器和处理及状态寄存器。
访管指令 ∉ 特权指令
用户程序只能在算态下运行,不能使用特权指令。启动外设的工作必须在管态下由操作系统去完成。
访管指令可以使处理机从算态进入管态,待操作系统完成用户程序提出的请求后,再从管态返回算态。
当用户程序希望完成在算态下无法完成的工作时,可使用访管指令,引起访管中断。中断发生后,硬件开始响应中断,将原程序状态字(PSW)保存到内存固定单元,再从内存另一固定单元中取出新PSW送入处理机的程序状态字寄存器里。由于新PSW中已事先预设为管态,所以处理机也就进入了管态。在管态下由中断处理程序完成用户程序的请求,之后通过恢复原来的PSW到程序状态寄存器,即可返回用户程序(从管态回到算态)。
因而系统功能调用就是指用户在程序中用访管指令调用操作系统提供的子功能。
系统调用
系统调用是操作系统为软件开发人员提供的程序级接口,是一种特殊的过程调用。
它与一般用户程序中的过程调用的区别在于:
1)运行在不同的系统状态
一般的过程调用,其调用或被调用的过程要么都是在子程序,要么都是在系统程序,都运行在同一系统状态下,要么都在系统态要么都在用户态。而系统调用的调用过程是用户程序,运行在用户态;被调用过程是系统程序,运行在系统态。
2)通过软中断进入
一般的过程调用不涉及系统状态的转换,直接由调用过程转向被调用过程。但执行系统调用时,因为调用过程和被调用过程处于不同的系统状态,只能通过软中断机制实现,并且一个OS的所有系统调用都通过同一个中断入口来实现。
3)能否即时返回
一般的过程调用,当被调用过程执行完后,会返回到调用过程继续执行。但在采用了抢占剥夺调度方式的系统中,系统调用在被调用过程执行完后,需对系统中所有要求运行的进程的优先权进行分析,当调用进程仍具有最高优先权时,方返回到调用进程,不然将进行重新调度,让优先权高的进程先执行。
4)嵌套调用
系统调用也可以嵌套进行,但每个系统调用对嵌套调用的深度都有限制。一般的过程调用对嵌套调用的深度则没有。
系统调用的实现过程
1)设置系统调用号和参数;
2)系统调用命令的一般性处理;
3)系统调用命令处理程序的具体处理。