多道程序设计
用户提交的作业都先存放在外存上并排成一个 “后备队列” ,作业调度程 序按一定的算法从后备队列中选择若干个作业调入内存,使其并发执行。
基本思想是在主存中同时存放多个用户的作业,使之同时处于运行状态而共享系统资源。
之所以采用多道程序设计技术,是由于中断和通道技术的出现,CPU可以把直接控制输入/输出的工作转给通道。
特点:
作业共享处理机时间和外部设备等其他资源,多道程序(设计)系统具有的优点是使CPU和输入/输出设备以及其他系统资源充分得到利用
- 并行性。–主存中存放有多道程序,并同时处于运行状态,即并行运行。
- 共享性。–主存中并行运行的程序共享所有的系统资源,因此,操作系统要管理并行程序对CPU的共享。负责在并行程序间协调对CPU的使用、管理对主存的共享,管理对外存储器的使用以及对系统中数据(或文件)正确的共享,以维护数据的完整性。
设计目标和方法
- 目标是充分使用系统所有资源并尽可能地使它们并行工作
- 方法是一个正在运行的程序不使用某设备时,让另一程序去使用该设备
实现
- 存储保护
- 程序浮动处理机的管理和调度
- 系统资源的管理和调度。
需解决的问题
- 提出解决各种冲突的策略;
- 协调并发活动的关系;
- 保证数据的一致性;
- 实现数据的存取控制。
进程
进程
进程的定义和特征
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
特征
- 动态性–它由创建而产生,由调度而执行,因得不到资源而暂停执行,以及因撤销而消亡
- 并发性–指多个进程实体,同存于内存中,能在一段时间内同时运行
- 独立性–指进程实体是一个能独立运行的基本单位同时也是系统中独立获得资源和独立调度的基本单位
- 异步性–指进程按各自独立的、不可预知的速度向前推进
- 结构特征–从结构上看,进程实体是由程序段、数据段及进程控制块3部分组成,这3部分统称为“进程映像”。
进程和程序的区别
- 进程是动态的,而程序是静态的。
- 进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。
- 1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。一个进程可以执行一个或多个程序,比如游戏多开,一个dll文件可被多个程序运用
进程的状态
进程的 3种基本状态
- 就绪 (Ready ) 状态。
当进程己分配了除 CPU以外的所必要的资源后,只要能再获得处理机,便可立即执行。这时的进程状态称为就绪状态。
- 执行状态。 指进程已获得处理机,其程序正在执行。
- 阻塞 (Block ) 状态。
进程因发生某事件 ( 如请求I/O,申请缓冲空间等而暂停执行时的状态,亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态,有时也称为 “等待” 或 “睡眠” 状态。
新状态和终止状态
- 新 (New ) 状态。 是一个进程建立 ,但还未将它送入就绪队列时的状态。
- 终止 (TerminateD) 状态。
当一个进程已经正常结束或异常结束,操作系统己将它从就绪队列中移出,但尚未将它撤消时的状态。
状态转换图
进程控制块
作用
- 进程实体的一部分,是操作系统中最重要的记录型数据结构 PCB 中记 录了操作系统所需要的、用于描述进程情况及控制进程运行所需要的全部信息。
- 操作系统是根据 PCB 来对并发执行的进程进行控制和管理
内容
- 进程标识符信息。
进程标识符用于唯一地标识一个进程。一个进程,通常有两个标识符:外部标识符,内部标识符。
- 处理机状态信息。
处理机状态信息主要是由处理机各种寄存器中的内容所组成。
- 进程调度信息。
在 PCB 中还存放了一些与进程调度和进程对换有关的信息,包括:进程状态、进程优先级、进程调度所需要的其他信息、事件。
- 进程控制信息
进程控制信息包括:程序和数据的地址、进程同步和通信机制、 资源清单、链接指针。
进程队列
进程的创建和撤消
常见的组织方式有两种,链接方式和索引方式。
- 进程队列:把处于相同状态的进程链接在一起,称为 “进程队列”
- 就绪队列:由若干就绪进程按一定次序链接起来的队列;
- 等待队列:把等待资源或等待某些事件的进程排成的队列。
进程调度
进程调度的任务和功能
进程调度的任务–从就绪队列中按照一定的算法,选择一个进程并将处理机分配给它。
- 进程调度的功能–进程调度负责动态地把处理机分配给进程
- 记住进程的状态–这个信息一般记录在进程的PCB中;
- 决定某个进程什么时候获得处理机,以及占有多长时间;
- 把处理机分配给进程–把选中进程的PCB 内所保留的现场信息,如程序状态字通用寄存器等内容,送入处理机相应寄存器中,交换程序计数器,从而让其占有处理机运行;
- 收回处理机–将占有处理机的进程的有关寄存器等现场信息送到该进程的PCB内的相应单元,重置程序计数器的内容,从而让出处理机。
进程调度算法
进程调度算法的衡量
- CPU利用率–CPU的利用率是实际运行作业的时间,即CPU处于忙状态的时间与开机运行的总时间之比。
- 吞吐量–CPU运行表示系统正处于工作状态,工作量大小是用单位时间内所完成的作业数目来描述的,这就叫吞吐量。
- 轮转时间–从作业提交直至完成所经历的时间叫轮转时间,轮转时间是从作业等待进入内存,在就绪队列中排队,在CPU上运行,以及等待I/O操作所花时间的总和。
- 等待时间–CPU调度算法实际上并不影响作业执行I/O操作的时间,该算法只影响作业在就绪队列中等待所花的时间。
- 响应时间–作业提交到首次产生回答信息之间的时间,这种度量称为响应时间。
响应时间是指系统开始对用户做出反映所用的时间 ,而不完全指系统输出回答信息所用的时间。
常见的进程调度算法
- 先来先服务调度算法FCFS–该算法按进程进入就绪队列的先后次序选择占用处理器的进程。 短作业优先算法SJF–最短作业最优先
- 高响应比优先调度算法HRRN–考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点 响应比 =(等待时间+要求服务时间)/ 要求服务时间
- 优先数调度算法–每一个进程给出一个数值,该数值代表进程的优先程度,称为优先数。处理器每次总是选择就绪队列中的优先数最大者来运行。
- 时间片轮转调度算法 时间片是指进程一次使用处理器的最长时间该算法是指让就绪进程按就绪的先后次序排成队列每次总选择该队列中第一个进程占用处理器,但规定只能使用一个时间片。(时间片的设置长度对算法有影响)
最常用的轮转法是基本轮转法该算法要求每个进程轮流地运行相同的时间片 。在分时系统中,这是一种既简单又有效的调度策略。
-
分级调度算法–该算法又称反馈循环队列或多队列策略。
主要思想是将就绪进程分为两个或多个级别,系统相应建立两个或多个就绪进程队列,每个就绪队列中的进程按时间片轮转法占用处理器
进程的切换
- 进程调度将从就绪队列中另选一个进程占用处理器。使一个进程让出处理器,由另一个进程占用处理器的过程称为 “进程切换”。
- 一个进程从运行状态变成等待状态,或完成工作后就撤销,则必定会发生进程切换,如果一个进程从运行状态或等待状态变成就绪状态,则不一定发生进程切换。
可载入程序
- 可载入程序是指一个能被多个用户同时调用的程序
- 可再入程序必须是纯代码,在执行时自身不改变;
- 一个可载入程序要求调用者提供工作区,以保证程序以同样方式为各用户服务
中断
中断及中断响应
概念:
是指 CPU 对系统中发生的异步事件的响应或处理,异步事件是指无一定时序关系而随机发生的事件。
中断在操作系统中的作用
- 能充分发挥处理机的使用效率;
- 提高系统的实时处理能力
功能
- 发现中断源,提出中断请求;
- 保护现场;
- 启动并运行处理中断事件的程序。
过程
- 保护被中断进程的现场信息,把中断时的通用寄存器、控制寄存器内容以及旧程序状态字 (PSW ) 保存到被中断进程的进程控制块中。
- 分析中断原因。根据旧程序状态字 PSW 的中断可知发生该中断的具体原因。
- 处理发生的中断事件。一般只做一些简单处理,在多数情况下把具体的处理交给其他程序模块去做。
中断优先级和中断屏蔽
中断优先级
从高到低:硬件故障中断、自愿中断、程序性中断、外部中断和输入/输出中断
中断屏蔽技术
-
用程序状态字中的中断屏蔽位设置标志封锁相应事件的响应。
-
为了防止低优先级的中断事件处理打断优先级高的中断事件的处理,以及防止中断多重嵌套处理
-
中断处理程序只能屏蔽比自己级别低的事件,并且不能屏蔽自愿中断