由于笔者要准备参加研究生考试复试,而操作系统这门课程又是复试考试中的一门课程,因此参考笔者报考学校的ppt,特此记录一下自己的学习过程,下面正文开始了:
作业的基本概念
- 什么是作业?
作业(Job)是用户在一次算题过程中或者一个事物处理过程中要求计算机系统所做工作的总和,它是用户向计算机系统提交一项工作的基本单位。为理解方便我们可以将作业看作是一个要求计算机处理的任务(task),具体体现形式为程序。一个作业通常由一个或若干个程序组成。一个作业可以看成是由若干个独立的步骤组成的,我们把这些相对独立的步骤称为作业步。一个作业就是由不同的顺序相联的作业步组成。 - 作业的分类
- 脱机作业:在作业执行过程中用户不直接和计算机交互
脱机作业控制方式:在作业执行前将各种控制方式一起输入到计算机中,此后作业自动执行
生活中的实例:邮政系统 - 联机作业:在作业执行过程中用户可以直接和计算机交互
联机作业控制方式:采用人机对话方式控制作业运行
生活中的实例:ATM机
- 脱机作业:在作业执行过程中用户不直接和计算机交互
- 作业的组成:数据、程序、作业控制信息
作业控制信息:也叫做作业说明书(要使用专门的作业控制语言(JCL)书写)。主要是供给批处理作业用户使用的,它体现用户对作业的控制意图.
包括:- 作业基本情况:用户名、作业名、编程语言最大处理时间等
- 作业控制描述:作业控制方式、作业步的操作顺序、作业执行出错处理
- 作业资源要求描述:处理时间、优先级、内存空间、外设类型和数量、实用程序要求等。
- 作业的处理过程(状态的变化)
作业的输入/输出方式
- 概念
- 作业的输入:指把作业经输入设备送入计算机系统后援存储器的过程
- 作业的输出:指将作业执行的结果由系统经输出设备输出的过程
- 输入/输出的过程
- 脱机输入/输出(人工干预)
特点:主机和输入/输出机可并行工作 - 联机输入/输出
- SPOOLing系统,即外围设备同时联机操作(Stimultaneous Peripheral Operation OnLine)
特点:兼具脱机和联机方式的优点,可以实现联机方式下的主机和外围设别的同时工作,又称为假脱机。
技术基础:- 多道程序设计技术:一次可以容纳多个程序在主机上“同时”执行。
- 通道技术:通常是一个独立于CPU的,专管输入/输出控制的处理机,他控制外部设备与内存直接进行数据交换。
- 脱机输入/输出(人工干预)
作业注册
作业控制块(JCB,Job Control Block)
JCB是系统为管理作业设置的一个数据结构,是系统作业中作业存在的唯一标志
JCB里面记录有与作业相关的各种信息,只有当作业推出系统时,JCB才被撤销
作业调度
- 单道批处理作业调度
- 特点:一次只能将一个作业调入内存运行(没有并发)
- 单道批处理系统作业调度算法:
- 先来先服务调度算法(FCFS,First Come First Served)
优点:简单,公平
缺点:周转时间长,吞吐量小,不利于对短作业的执行 - 最短作业优先调度算法(SJF,Shortest Job First)
优点:降低作业平均周转时间,提高系统吞吐量
缺点:对长作业不利,出现“饥饿”现象 - 最高响应比优先算法(HRP,Highest Ratio Priority)
思想:为每个作业设置一个优先级,使之能够尽量保证短作业优先执行,同时又不让长作业等待过长时间。
响应比计算方法:
RP = 作业响应时间 / 作业运行时间
= (作业等待时间 + 作业运行时间) / 作业运行时间
= 1 + (作业运行时间 / 作业运行时间)
优缺点:
1) 优点:即照顾到了短作业,也考虑了长作业,能够克服长作业的“饥饿”现象,是一种折中的算法
2) 缺点:计算略微复杂
- 先来先服务调度算法(FCFS,First Come First Served)
- 多道批处理系统作业调度算法
特点:一次可以选择多个作业同时执行(并发)
- 作业调度算法性能分析
评价因素:- CPU利用率:希望能够获得较高的CPU利用率。显然尽量让外设和CPU同时工作是提高CPU利用率的有效方法
- 吞吐量:单位时间内CPU完成作业的数量。显然短作业优先有利于提高吞吐量
- 周转时间:评价批处理系统的性能指标
- 作业调度算法性能分析
接口
- 用户接口
作业(Job/Task)控制级接口:命令方式和图形界面 - 程序级接口
-
访管指令:在算态下执行的一条特殊的指令(不是特权指令)。当源程序中有需要操作系统服务的要求时,编译程序就会在目标程序中安排一条“访管指令”并设置一些参数。访管指令能引起访管中断,使得程序“自愿进管”
访管指令功能:- 能够使处理器从算态进入管态
- 操作执行后完成后,从管态回到算态,使用户程序接着执行
特权指令:操作系统中有一些cpu指令是非常危险的,如果错用,将导致整个系统崩溃,如停机指令,置PSW指令、中断操作指令(开、关、屏蔽中断)、输入输出指令等。这类指令只能在管态下运行而不能在算态下运行。
-
系统功能调用与普通过程调用的区别
- 运行状态不同:系统功能调用的调用过程和被调用过程运行在不同的状态,而普通的过程调用运行在相同的状态
- 调用方法不同:系统调用必须通过中断机制首先进入系统核心,然后才能转向相应的命令处理程序。普通过程调用可以直接由调用过程转向被调用过程
- 返回问题:普通的过程调用直接返回调用过程继续执行。对于系统功能调用,由于发生状态的改变,在返回时可能需要重新进行调度分析
-
系统功能调用的具体实现(UNIX)
-
Win32 API函数由以下三个windows组件支持:
- KERNEL32.dll:完成内存管理、程序的装入、执行和任务调度等功能
- GDI32.dll:提供了图形与文字输出、图像操作和窗口管理等各种与显示和打印有关的功能
- USER32.dll:它用来对声音、时钟、鼠标器及键盘输入等操作进行管理
-
下面的是笔者的微信公众号,欢迎关注,会持续更新c++、python、tensorflow、机器学习、深度学习等系列文章