操作系统原理3——多道程序

 

 

本章考核知识点:

1.多道程序设计

2.进程

3.进程状态

4.进程控制块

5.进程队列

6.可再入程序

7.中断及中断响应

8.中断优先级

9.进程调度 


  自学要求:通过本章学习应该掌握多道程序设计是如何提高计算机系统效率的;进程与程序有什么区别;进程的基本状态以及状态变化;进程队列及进程调度策略;中断的作用。

  重点是:多道程序设计;进程的定义和属性;进程调度策略。

  一、 多道程序设计( 领会 )

  1、什么是多道程序设计。

  让多个计算问题  同时装入  一个计算机系统的主存储器并行执行,这种设计技术称“ 多道程序设计 ”,这种计算机系统称“多道程序设计系统” 或简称“多道系统”。

  存储保护 :在多道程序设计的系统中,主存储器中同时存放了  多个作业的程序。

为避免相互干扰,必须提供必要的手段使得在主存储器中的各道程序  只能访问   自己的区域。

这样,每道程序执行时,都不会破坏其他各道的程序和数据。

特别是当某道程序发生错误的时,也不至于影响其它的程序。

  程序浮动 :在多道程序设计系统中,对程序有一些特殊要求,

也就是说,程序可以随机地从主存的一个区域移动到另一个区域,程序被移动后仍丝毫不影响它的执行,这种技术称为“程序浮动”。

  在多道程序设计的系统中,有三点基本要求:

  a.  用“存储保护”的方法     保证各道程序互不侵犯;

   b. 用“程序浮动”技术       让程序能灵活地改变存放区域  且    能正确执行;

  c. 必须对资源按一定的策略   分配和调度。

  2、 多道程序设计 利用了系统与外围设备的并行工作能力,从而提高工作效率

具体表现为:

 (1) 提高了处理器的利用率;

 (2)充分利用外围设备资源:计算机系统配置多种外围设备,采用多道程序设计并行工作时,可以将使用不同设备的程序搭配在一起同时装入主存储器,

                     使得系统中各外围设备经常处于忙碌状态,系统资源被充分利用;

 (3)发挥了处理器与外围设备以及外围设备之间的并行工作能力;

 (4)从总体上说,采用多道程序设计技术后,可以有效地提高系统中资源的利用率,增加单位时间内的算题量,从而提高了吞吐率。

  3、 多道程序设计 对算题量和算题时间的影响。

采用多道程序设计能改变系统资源的使用情况,提高系统效率。

但是应注意以下两个问题:

  a.. 可能延长程序的执行时间;

  b.. 并行工作道数与系统效率不成正比。

从表面上看,增加并行工作道数就可提高系统效率,但实际上并行工作道数与系统效率是不成正比,因为并行的道数要根据系统配置的资源和用户对资源的要求而定:

  (1)主存储器的大小限制了可同时装入的程序数量;

  (2)外围设备的数量也是一个制约条件;

  (3)多个程序同时要求使用同一资源的情况也会经常发生。

  总之,多道程序设计能提高系统资源的使用效率,增加单位时间的算题量;

但是对每个计算问题来说,从算题开始到全部完成所需要的时间可能延长,

另外在确定并行工作道数时应综合系统的资源配置和用户对资源的要求。

  二、 进程( 领会 )

  1、 进程 的定义:把一个程序在一个数据集上的一次执行称为一个“进程”。

  2、 进程是由 程序数据集进程控制块 三部分组成。

  我们举一个例子,比如在有一个用户程序notepad.exe(记事本),当它存放在磁盘上时,就是一个程序,在windows操作系统下运行它时,就会在内存中建立一个记事本程序的进程,

而我们在记事本中编辑的当前文字就是这个进程的数据集,操作系统会为当前的进程设置一个    进程控制块。

如果我们再打开一个记事本程序的窗口,就会建立      另一个进程,此时运行的是同一个程序,但存在两个进程,第二个窗口中的编辑内容就是第二个进程的数据集。

  3、 进程 与 程序 的区别及关系。

(1) 程序是静止的,进程是动态的。

(2) 进程      包括程序  和 程序处理的对象(数据集),   进程能得到程序处理的结果

(3)  进程和程序并非一一对应的,一个程序运行在不同的  数据集上  就构成了不同的    进程。

(4)  通常把进程分为“系统进程”和“用户进程”两大类,把完成操作系统功能的进程称为 系统进程,   而完成用户功能的进程则称为  用户进程

  三、 进程状态( 领会 )

  1、 进程的 三种基本状态 .

通常,根据进程执行过程中不同时刻的状态,可归纳为三种基本状态:

  。 等待态 :等待某个事件的完成;

  。 就绪态 :等待系统分配处理器以便运行;

  。 运行态 :占有处理器正在运行。

  2、进程的状态变化

  进程在执行中状态会不断地改变,每个进程在任何时刻总是处于上述三种基本状态的某一种基本状态,进程状态之间转换关系如下图所示:

  运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。

  等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。

  运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。

  就绪态→运行态 系统按某种策略选中    就绪队列  中的一个进程占用处理器,此时就变成了运行态。

  进程 有 四个基本属性 :

  。多态性 从诞生、运行,直至消灭。

  。多个不同的进程可以包括相同的程序

  。三种基本状态 它们之间可进行转换

  。并发性 并发执行的进程轮流占用处理器

  四、进程控制块( 领会 )

  1、 进程控制块 的基本内容。

通常进程控制块包含四类信息:

  。标志信息  含唯一的进程名

  。说明信息  有进程状态、等待原因、进程程序存放位置和进程数据存放位置

  。现场信息   包括通用、控制和程序状态字寄存器的内容

  。管理信息   存放程序优先数和队列指针

  2、 进程控制块 的作用

  进程控制块(Process Control Block,简称PCB),是操作系统为进程分配的用于标志进程,记录各进程执行情况的。进程控制块是进程存在的标志,它记录了进程从创建到消亡动态变化的状况,进程队列实际也是进程控制块的链接。操作系统利用进程控制块对进程进行控制和管理。

  进程控制块的作用有:

  (1)记录进程的有关信息,以便操作系统的进程调度程序对进程进行调度。这些信息包括标志信息、说明信息、现场信息和管理信息等;

  (2)标志进程的存在,进程控制块是进程存在的唯一标志

  五、进程队列( 领会 )

  1、 进程队列 的链接。

  在多道程序设计的系统中往往会同时创建多个 进程 .在单处理器的情况下,每次只能让一个进程运行,其他的进程处于就绪状态或等待状态。

为了便于管理,经常把处于相同状态的进程链接在一起,称“进程队列”,由于 进程控制块 能标志进程的存在 和 动态刻画进程的特性,

因此, 进程队列 可以用 进程控制块 的连接来形成。

链接的方式有两种:单向链接  和   双向链接

  2、 进程基本队列

  就绪队列 :由若干就绪进程按一定次序链接起来的队列。

  等待队列 :把等待资源或等待某些事件的进程排列的队列

  3、进程的入队和出队。

  出队和入队 :当发生的某个事件使一个进程的状态发生变化时,这个进程就要退出所在的某个队列而排入到另一个队列中去。

  出队 :一个进程从所在的队列退出的操作称为出队

  入队 :一个进程排入到一个指定的队列的操作称为入队。

  系统中负责进程入队和出队的工作称为  队列管理

  无论单向链接还是双向链接,解决入,出队问题,都是首先找到该队列的 队首指针,沿链找出要入队的进程以及它要插入的位置,或找出要出队的进程,

然后修改本进程指针(入队情况)和 相邻进程的有关指针值即可。

  六、可再入程序( 识记 )

  (1) 什么是 可再入程序 . 一个能被 多个用户同时调用 的程序称做“ 可再入 ”的程序。

  (2) 可再入程序的性质。

                              可再入程序必须是纯代码,在执行时自身不改变;

  一个可再入程序要求调用者提供工作区,以保证程序以同样方式为各用户服务。

  编译程序操作系统程序 通常都是“可再入”程序,能同时  被不同用户调用而构成不同的进程。

  七、中断及中断响应( 领会 )

  1、 中断 的定义。

  一个进程占有处理器运行时,由于自身或者外界的原因(出现了事件)使运行被打断,让操作系统处理所出现的事件,到适当的时候再让被打断的进程继续运行,这个过程称为“中断”。

  2、 中断 的类型。

  从中断事件的性质出发,中断可以分为两大类:

  。 强迫性中断事件 包括硬件故障中断,程序性中断,外部中断和输入输出中断等

  。 自愿性中断事件 是由正在运行的进程执行一条访管指令用以请求系统调用而引起的中断,这种中断也称为“访管中断”。

  自愿中断 的断点是确定的,而 强迫性中断 的断点可能发生在任何位置。

  3、中断的响应和处理。

  中断响应 (硬件即中断装置操作)

  处理器每执行一条指令后,硬件的中断位置立即检查有无中断事件发生,若有中断事件发生,则暂停现行进程的执行,而让操作系统中断处理程序占用 处理器,这一过程称为“中断响应”。

  中断响应过程中,中断装置要做以下三项工作:

  (1 是否有中断事件发生

  (2 判别自愿性中断,只要检查操作码是否为访管指令。

  (3  判别强迫性中断,则要检查中断寄存器内容。若为0,则无中断;若非0,则表示有中断事件发生。

  若有中断发生,保护断点信息

  每个程序都有一个程序状态字(PSW)来反映本状态的执行状态,如基本状态、中断码和中断屏蔽位等内容。

处理器设有一个“程序状态字寄存器”用来存放当前运行程序的PSW.

程序状态字可分为当前PSW、旧PSW和新PSW.

  当出现中断事件后,把被中断进程的PSW保存为   旧PSW,即完成  断点信息保护。

  启动操作系统的中断处理程序工作

  中断装置通过“交换PSW”过程完成此项任务,即把出现的中断事件存放到当前PSW中断码位置,然后把该当前PSW保存为旧PSW,再把操作系统中断处理程序的新PSW送到程序状态字寄存器中,成为当前的PSW.

  中断处理 ( 软件即操作系统操作 )

  操作系统的中断处理程序对中断事件进行处理时,大致要做三方面的工作:

  保护被中断进程的现场信息

  把中断时的通用寄存器,控制寄存器内容及旧PSW保存到被中断进程的进程控制块中。

  分析中断原因

  根据旧PSW的中断码可知发生该中断的具体原因。

  处理发生的中断事件

  一般只做一些简单处理,在多数情况下把具体的处理交给其他程序模块去做。

  八、 中断优先级和中断屏蔽( 识记 )

  1、 中断优先级 是硬件设计时确定的。

中断装置按预定的顺序来响应同时出现的中断事件,这个预定的顺序称为“中断优先级”。

中断优先级是按中断事件的重要性和紧迫程度来确定的 ,是由硬件设计时固定下来的。

一般情况下,优先级的高低顺序依次为:

硬件故障中断 、 自愿中断 、 程序性中断 , 外部中断和输入输出中断 .

  2、中断的嵌套处理

  3、中断屏蔽的作用。

中断优先级只是规定了中断装置响应同时出现的中断的次序,当中断装置响应了某个中断后中断处理程序在进行处理时,中断装置也可能去响应另一个中断事件。

因此会出现优先级低的中断事件的处理打断优先级高的中断事件的处理,使得中断事件的处理顺序与响应顺序不一致,而且会形成多重嵌套处理,使多现场保护、程序返回等工作变的复杂。

  中断屏蔽技术就是为了解决上述问题而提出的在一个中断处理没有结束之前   不响应其他中断事件,或者只响应比当前级别高的中断事件。

于是,当中断装置检查到有中断事件后,便去查看PSW中中断屏蔽标志,如果没有屏蔽就响应该中断;否则,暂时不响应该中断,待屏蔽标志消除后再响应。

自愿中断是不能屏蔽的。

  九、 进程调度( 领会 )

  1、进程调度的职责。    按选定的进程调度算法从  就绪队列  中选择一个进程,让它占用  处理器

  2、选择进程调度算法的几个准则:

  。提高处理器利用率

  。增大吞吐量

  。减少等待时间

  。缩短响应时间

  3、进程调度的常用算法:

先来先服务 、 优先数法 、 轮转法 、 分级调度 .

  (1.)先来先服务调度算法 该算法按进程进入就绪队列的先后次序选择可以占用处理器的进程。

  (2.)优先数调度算法 对每个进程确定一个优先数,该算法总是  让 优先数最高的进程   先使用处理器。

对具有相同优先数的进程,再采用先来先服务的次序分配处理器。

系统常以任务的紧迫性 系统效率等因素确定进程的优先数。进程的优先数可以固定的,也可随进程执行过程动态变化。

一个高优先数的进程占用处理器后,系统处理该进程时有两种方法,一是“非抢占式”,另一种是“可抢占式”。

前者是此进程占用处理器后一直运行到结束,除非本身主动让出处理器,

后者则是严格保证任何时刻总是让优先数最高的进程在处理器上运行。

 (3.)时间片轮转调度法   把规定进程一次使用处理器的最长时间称为“时间片”。

时间片轮转调度算法让就绪进程按就绪的先后次序排成队列,每次总选择该队列中第一个进程占用处理器,

但规定只能使用一个时间片,如该进程尚未完成,则排入队尾,等待下一个供它使用的时间片。

各个进程就这样轮转运行。

时间片轮转算法经常用于分时操作系统中。

 (4) 分级调度算法    由系统设置多个就绪队列,每个就绪队列中的进程按  时间片 轮转法 占用处理器,这就是分级调度算法。

  4、 进程的切换

进程调度将从就绪队列中  另选一个进程占用处理器,使一个进程让出处理器,由另一个进程  占用处理器的过程称“进程切换”。

  若有一个进程从运行态变成等待态,或完成工作后就撤消,     则必定会发生进程切换。

     若一个进程从运行态或等待态         变成  就绪态,          则不一定发生进程切换。

原文地址:https://www.cnblogs.com/java2016/p/5396344.html