操作系统之作业管理_2019-11-19
作业管理之进程调度
作业:
指用户在一次计算过程中或者事务处理过程中,要求计算机所作工作的集合。
作业由程序、数据和作业说明书组成。在批处理系统中,作业是占据内存的基本单位。
作业管理既是通过管理让这些作业按照自己所想要的方式来进行工作。
联机方式作业:
用户的作业可以通过直接的方式,由用户自己按照作业步顺序操作。
脱机方式作业:
也可以通过间接的方式,由用户率先编写的作业步依次执行的说明,
一次交给操作系统,由系统按照说明依次处理。
程序与进程之间的区别:
(1)进程更能真实地描述并发,而程序不能。
(2)进程由程序和数据两部分组成,进程是竞争计算机系统有限资源的基本单位,也是进程处理机调度的基本单位。
(3)程序是静态的概念;进程是程序在处理机上一次执行的过程,是动态的概念。
(4)进程有生存周期,有诞生有消亡。是短暂的;而程序是相对长久的。
(5)一个程序可以作为多个进程的运行程序;一个进程也可以运行多个程序。
(6)进程具有创建其他进程的功能;而程序没有。
作业与进程的区别:
一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。
一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。而进程是对已提交完毕的程序所执行过程的描述,是资源分配的基本单位。其主要区别如下。
(1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行。
而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。
(2)一个作业可由多个进程组成,且必须至少由一个进程组成,反过来则不成立。
(3)作业的概念主要用在批处理系统中,像UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中。
作业、进程和程序之间的联系:
一个作业通常包括程序、数据和操作说明书3部分。每一个进程由PCB、程序和数据集合组成。这说明程序是进程的一部分,是进程的实体。
因此,一个作业可划分为若干个进程来完成,而每一个进程有其实体————程序和数据集合。
事务:
就是用户某一步或几步操作的集合。不过,我们要保证它有一个完整意义。比如用户对某一个页
面的一次请求,用户对某系统的一次登录,淘宝用户对商品的一次确认支付过程。这些我们都可
以看作一个事务。
作业调度:
指按照某种原则,从后备作业队列中选取作业进入内存,并为作业做好
运行前的准备工作以及作业完成后的善后处理工作。
进程调度:
指计算机通过决策决定哪个就绪进程可以获得CPU使用权,前提是使用多道程序设计
进程调度有两个步骤,分别是保留旧进程的运行信息,请出旧进程(收拾包袱),
选择新进程,准备运行环境并分配CPU(新进驻),让新进程得以运行。
为了实现收拾包袱和新进驻,需要了解的三种机制:
(1)就绪队列的排队机制:将就绪进程按照一定的方式排成队列,以便调度程序可以最快找到就绪进程
(2)选择运行进程的委派机制:调度程序以一定的策略选择就绪进程,将CPU资源分配给它
(3)新老进程的上下文切换机制:保存当前进程的上下文信息(备份环境),装入被委派执行进程的运行上下文
进程调度算法
先来先服务调度算法:
优先取出最先被加入队列中的来执行
短进程优先调度算法:
调度程序优先选择就绪队列中估计运行时间最短的进程,短进程优先调度算法不利于长作业进程的执行
高优先权优先调度算法:
进程附带优先权,调度程序优先选择权重高的进程,高优先权优先调度算法使得紧迫的任务可以优先处理
时间片轮转调度算法:
按先来先服务的原则排列就绪进程,每次从队列头部取出待执行进程,分配一个时间片执行
是相对公平的调度算法,但不能保证及时响应用户
死锁
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成
的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态
或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
死锁的四个必要条件和如何破坏条件来避免死锁
(1)互斥条件:
排他性的使用
(2)请求保持条件:
进程至少保持一个资源,又提出新的资源请求
新资源被占用,请求被阻塞
被阻塞的进程不释放自己保持的资源
避免:
系统规定进程运行之前,一次性申请所有需要的资源
进程在运行期间不会提出资源请求,从而摒弃请求保持条件
(3)不可剥夺条件:
进程获得的资源在未完成使用前不能被剥夺
获得的资源只能由进程自身释放
避免:
当一个进程请求新的资源得不到满足时,必须释放占有的资源
进程运行时占有的资源可以被释放,意味着可以被剥夺
(4)环路等待条件:
是指进程发生死锁后,必然存在一个进程--资源之间的环形链
指在链中,对于所有的进程节点,前一个进程需要后一个进程所持有的资源。
避免:
可用资源线性排序,申请必须按照需要递增申请,先从1开始申请,拿不到就进入阻塞,
直到拿到了为止,线性申请不再形成环路,从而摒弃了环路等待条件。
银行家算法
一个可操作的著名的避免死锁的算法,以银行借贷系统分配策略为基础的算法。
原理:
客户申请的贷款是有限的,每次申请需声明最大资金量(客户需要多少钱)
银行家在能够满足贷款时,都应该给用户贷款(如果银行的钱足够,就要给客户贷款)
客户在使用贷款后,能够及时归还贷款(客户在获得后,能够做到还款)
实现:
A、B、C、D 为可申请的共享资源;
P1、P2、P3、P4 为需要申请资源的进程;
已分配资源表为每个进程以拥有的资源数量;
所需资源表为每个进程需要的所有资源数量;
可分配资源表为当前系统所还剩下能够进行分配的资源数量;

① 所需资源表 - 已分配资源表 = 还需分配资源表

② 把可分配资源表与还需分配资源表进行对比后,把资源分配能被剩余资源满足的进程

浙公网安备 33010602011771号