操作系统知识概要——第二章 处理机管理

第二章 处理机管理

1.特权指令

引入操作系统后,从资源管理和控制程序执行的角度出发,必须把指令系统中的指令分作两部分:特权指令非特权指令

特权指令是指只能提供给操作系统的核心程序使用的指令,如启动I/O设备、设置时钟、控制中断屏蔽位、清内存、建立存储键,加载PSW(程序状态字)等。

只有操作系统才能执行指令系统中的全部指令(特权指令和非特权指令),用户程序只能执行指令系统中的非特权指令。

2.处理器状态

2.1处理器状态分类

处理器状态又称为处理器的运行模式,大多数系统把处理器状态简单划分为核心态(特权状态、系统模式、特态或管态)和用户态(目标状态、用户模式、常态或目态)。

2.2处理器状态与资源和机器指令使用权限的关系

当处理器处于核心态时,程序可以执行全部指令,访问所有资源,并具有改变处理器状态的能力;当处理器处于用户状态时,程序只能执行非特权指令。

2.3处理器模式转换

  1. 用户态向核心态的转换
    (1)程序请求操作系统服务,执行一条系统调用。
    (2)程序运行时,产生了一个中断事件,运行程序被中断,让中断处理程序工作。
    以上两种情况都是通过终端机构发生的。中断是用户态到核心态转换的唯一途径
  2. 核心态向用户态的转换
    每台计算机通常会提供一条特权指令称作加载程序状态字LPSW(Load PSW),用来实现操作系统向用户程序的转换。

3.中断

3.1定义

中断是指程序执行过程中,当发生某个事件时,中止CPU上现行程序的运行,引出处理该事件的程序执行的过程。

中断是现代操作系统实现并发性的基础之一。

3.2中断与异常的区别

中断是由与现行指令无关的中断信号触发的(异步的),且中断的发生与CPU处在用户模式或内核模式无关,通常在两条机器指令之间才可响应中断,一般来说,中断处理程序提供的服务不是为当前进程所需的,如时钟中断、硬盘读写服务请求中断;

异常是由现行程序执行指令过程中检测到例外,异常与CPU是同步的,一条指令执行期间允许响应异常,异常处理程序提供的服务是为当前进程所用的。异常包括很多方面,有出错(fault),也有陷入(trap)。

4.进程

进程是操作系统中最基本、重要的概念,是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

从理论角度看,进程是对正在运行的程序过程的抽象;从实现角度看,进程是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。

4.1为什么引入进程

  1. 刻画系统的动态性,发挥系统的并发性,提高资源利用率。
  2. 解决系统共享性,正确描述程序的执行状态。

4.2可再入与可再用程序

  1. 可再入程序:是指能被多个程序同时调用的程序。
  2. 可再用程序:被调用过程中自身会被修改,在调用它的程序退出之前不允许其他程序来调用它。

4.3进程的定义

进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。

4.4进程的属性

  1. 结构性:进程包含了数据集合和运行于其上的程序。每个进程至少包含三个组成要素:程序块、数据块和进程控制块。
  2. 共享性:同一程序运行于不同数据集合上时,构成不同的进程。多个不同的进程可以共享相同的程序,所以进程和程序不是一一对应的。
  3. 动态性:进程由创建而产生,由调度而执行,由撤销而消亡。程序是一组有序指令序列,作为一种系统资源是永久存在的。
  4. 独立性:进程是系统中资源分配和保护的基本单位,也是系统调度的独立单位(单线程进程)。
  5. 制约性:并发进程之间存在着制约关系,进程在进行的关键点上需要相互等待或互通消息,以保证程序执行的可再现性和计算结果的唯一性。
  6. 并发性:在一个单处理器系统环境下,各个进程轮流占用处理器 。

4.5进程的三态模型

三种基本状态:

  1. 运行态(running):进程占有处理器正在运行。
  2. 就绪态(ready):进程具备运行条件,等待系统分配处理器以便运行。
  3. 等待态(wait):又称为阻塞(blocked)态或睡眠(sleep)态,进程不具备运行条件,正在等待某个事件的完成。
    操作系统知识概要——第二章 处理机管理_第1张图片

4.6进程上下文

进程上下文:进程物理实体和支持进程运行的环境合称为进程上下文。

进程上下文的三个组成部分:

  • 用户级上下文(user-level-context):由用户进程的程序块、用户数据块(含共享数据块)和用户栈组成的进程地址空间。
  • 系统级上下文(system-level-context):包括进程控制块、内存管理信息、进程环境块,及核心栈等组成的进程地址空间。
  • 寄存器上下文(register-level-context):由程序状态字(PSW)寄存器和各类控制寄存器、地址寄存器、通用寄存器、用户栈指针等组成。

4.7进程映像

  • 进程程序块:即被执行的程序,规定了进程一次运行应完成的功能。
  • 进程数据块:即程序运行时加工处理的对象,包括全局变量、局部变量和常量等的存放区以及开辟的工作区,常常为一个进程专用。
  • 核心/用户栈:每一个进程都有一个核心/用户栈,用来解决过程调用或系统调用时的信息存储和参数传递。
  • 进程控制块:每一个进程都有一个进程控制块,用来存储进程的标志信息、现场信息和控制信息。进程创建时建立进程控制块,进程撤销时回收进程控制块,进程控制块与进程一一对应。

4.8进程控制块

每个进程都有一个进程控制块PCB,进程控制块PCB是操作系统用于记录和刻画进程状态及有关信息的数据结构,是操作系统控制和管理进程的主要依据。PCB是进程存在的唯一标志。

进程控制块包含三类信息:标识信息,现场信息,控制信息。

  • 标识信息:用于唯一地标识一个进程,分为由用户使用的外部标识符和被系统使用的内部标识号。
  • 现场信息:用于保留进程运行时存放在处理器现场中的各种信息,进程让出处理器时必须把处理器现场信息保存到PCB中

4.9进程切换与模式切换

  1. 进程切换(上下文切换):保存运行进程的上下文,恢复选中的进程的上下文。
  2. 模式切换:当中断发生的时候,暂时中断正在执行的用户进程,把进程从用户状态切换到内核状态,去执行操作系统例行程序以获得服务,这就是一次模式切换。进程仍在自己的上下文中执行,仅仅模式改变。

5.线程

5.1(单线程)进程给并发程序设计效率带来新问题

  • 进程切换开销大
  • 进程通信代价大,每次通信均要涉及通信进程之间或通信进程与操作系统之间的信息传递。
  • 进程之间的并发性粒度较粗,并发度不高,过多的进程切换和通信延迟使得细粒度的并发得不偿失。
  • 不适合并行计算和分布并行计算的要求
  • 不适合客户/服务器计算的要求。

5.2多线程(结构)进程

  1. 引入进程的目的:使多个程序并发执行,以改善资源使用率和提高系统效率,。
  2. 引入线程的目的:减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。

把进程的两项功能------“独立分配资源”与“被调度分派执行”分离开来:

  • 进程作为系统资源分配和保护的独立单位;
  • 线程作为系统调度和分派的基本单位,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。
  • 操作系统知识概要——第二章 处理机管理_第2张图片

5.3并发多线程程序设计的优点

  • 快速线程切换。
  • 减少管理开销。
  • 通信易于实现。自动共享同一地址空间,所有全局数据均可自由访问,实现数据共享。而进程通信则相当复杂,必须借助诸如通信机制、消息缓冲、管道机制等设施,而且还要调用内核功能才能实现。
  • 并行程度提高。线程的个数可达上千个。
  • 节省内存空间。

5.4线程的实现

操作系统知识概要——第二章 处理机管理_第3张图片

5.4.1内核级线程

原理:线程管理的所有工作由操作系统内核做。

优点:多处理器上,内核能同时调度同一进程中多个线程并行执行。进程中的一个线程被阻塞了,内核能调度同一进程的其它线程或其他进程中的线程占有处理器运行。

缺点:应用程序线程在用户态运行,而线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户态的模式切换,系统开销较大。

5.4.2用户级线程

原理:线程管理工作由应用程序做,在用户空间实现,内核不知道线程的存在。

优点:线程切换不需要内核特权方式,因所有线程管理数据结构均在单个进程的用户空间中,管理线程切换的线程库也在用户地址空间中运行,因而不需要切换到内核方式来做线程管理。

缺点:线程执行系统调用时,不仅该线程被阻塞,且进程内的所有线程会被阻塞。

6.处理机调度

处理器调度分为三个级别:高级调度、中级调度和低级调度

三个调度之间的关系:
操作系统知识概要——第二章 处理机管理_第4张图片

  1. 高级调度:发生在新进程的创建中,它决定一个进程能否被创建,或者创建后能否被置成就绪状态;(作业调度)
  2. 中级调度:反映到进程状态上就是挂起和解除挂起,它根据系统的当前负荷情况决定停留在主存中进程数;(从内存中换入/换出)
  3. 低级调度:决定哪一个就绪进程占有CPU。 (进程切换)

6.1高级调度(作业调度、长程调度)

在多道批处理操作系统中,作业首先进入系统辅存上的后备队列,高级调度将按照系统预定的调度策略把后备队列作业中的部分满足其资源要求的作业调入内存,为它们创建进程,分配所需资源。当作业完成后还要为它做好善后工作(功能)。

6.2中级调度(平衡负载调度、中程调度)

  • 决定主存储器中所能容纳的进程数,这些进程将允许参与竞争处理器和有关资源。
  • 中级调度根据存储资源量和进程的当前状态来决定辅存和主存中进程的对换。
  • 中级调度决定那些进程被允许参与竞争处理器资源,使用的方法是通过把一些进程换出主存,使之进入“挂起”状态,不参与进程调度,起到平滑和调整系统负荷的作用。

6.3低级调度

主要功能是按照某种原则决定就绪队列中的哪个进程或内核级线程能获得处理器, 并将处理机出让给它进行工作。

调度方式:

  • 剥夺方式:当一个进程正在处理器上执行时,系统可以根据规定的原则剥夺分配给它的处理器,而把处理器分配给其他进程使用。
  • 非剥夺方式:一旦某个进程或线程开始执行后便不再出让处理器,除非该进程或线程运行结束或发生了某个事件不能继续执行。

7.调度算法

7.1设计调度算法考虑的原则

  1. 资源利用率:
    CPU利用率 = CPU有效工作时间/CPU总的运行时间
    CPU总的运行时间 = CPU有效工作时间+CPU空闲等待时间
  2. 响应时间:交互式进程从提交一个请求(命令)到接收到响应之间的时间间隔称响应时间。
  3. 周转时间:从作业提交给系统开始,到作业完成为止的时间间隔称作业周转时间。
  4. 吞吐率:单位时间内处理的作业数。
  5. 公平性:确保每个用户每个进程获得合理的CPU份额或其他资源份额,不会出现饥饿情况。

7.2作业与进程的关系

作业是用户提交给操作系统计算的一个独立任务。一般每个作业必须经过若干个相对独立又相互关联的顺序加工步骤才能得到结果,其中,每个加工步骤称一个作业步。例如,一个作业可分成“编译”、“连接装配”和“运行”三个作业步,往往上一个作业步的输出是下一个作业步的输入。

进程是对系统中已提交完毕并选中运行的程序的执行过程,也是为完成作业任务向系统申请和分配资源的基本单位。用户进程在执行过程中可创建作业步子进程。

7.3多道批处理的处理机调度层次

作业调度选中一个作业且把它装入主存储器时就为该作业创建一个用户进程。这些进程将在进程调度的控制下占有处理器运行。为了充分利用处理器,可以把多个作业同时装入主存储器,这样就会同时有多个用户进程,这些进程都要竞争处理器。

进入计算机系统的作业只有经过两级调度后才能占用处理器。第一级是作业调度,使作业进入主存储器;第二级是处理器调度,使作业进程占用处理器。作业调度与处理器调度的配合能实现多道作业的同时执行。

7.4作业调度算法

7.4.1先来先服务算法FCFS

策略:按照作业进入系统的先后次序来挑选作业,先进入系统的作业优先被挑选。

性能:算法容易实现,效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短,不利于短作业而优待了长作业。有利于CPU繁忙型作业而不利于I/O繁忙型作业。

7.4.2最短作业优先算法SJF

策略:以进入系统的作业所要求的CPU时间为标准,总选取估计计算时间最短的作业投入运行。这是一种非剥夺式调度算法。

性能:算法易于实现,效率不高,弱点是需要预先知道作业所需的CPU时间,而这个时间只能靠估计,估计值很难精确,若估计过低,系统可能提前终止该作业;忽视了作业等待时间,会出现饥饿现象。

7.4.3最高相应比算法HRRF

FCFS只考虑作业等候时间而忽视了作业的计算时问,SJF只考虑用户估计的作业计算时间而忽视了作业等待时间。

相应比定义:作业进入系统后的等待时间与估计计算时间之和称作该作业的响应时间,作业的响应时间除以作业估计计算时间称作响应比,即:

响应比 = 1 + 等待时间/估计运行时间

策略:介于FCFS和SJF算法,既考虑作业等待时间,又考虑作业的运行时间,既照顾短作业又不使长作业的等待时间过长,改进了调度性能。

性能:

  1. 短作业容易得到较高响应比,
  2. 长作业等待时间足够长后,也将获得足够高的响应比,
  3. 饥饿现象不会发生。

缺点是每次计算各道作业的响应比会有一定的时间开销,需要估计期待的服务时间,性能比SJF略差。

7.4.4优先权算法

根据确定的优先数来选取作业,每次总是选择优先数高的作业。

7.4.5分类调度算法

预先按一定原则把作业划分成若干类,以达到均衡使用系统资源和兼顾大小作业的目的。

分类原则包括作业计算时间、对内存的需求、对外围设备的需求等。作业调度时还可为每类作业设置优先级,从而照顾到同类作业中的轻重缓急。

7.5低级调度算法

引起低级调度的原因:

  1. 当一个进程从运行切换成阻塞时;
  2. 当一个进程从运行切换成就绪时;
  3. 当一个进程从阻塞切换成就绪时;
  4. 当一个进程终止时。

当一个进程由运行状态变为非运行状态,或者一个进程变为就绪状态时,都会引起低级调度。

7.5.1先来先服务算法

按照进程进入就绪队列的先后次序分配处理器。先进入就绪队列的进程优先被挑选,运行进程一旦占有处理器将一直运行直到结束或阻塞。这是一种非剥夺式调度。

算法容易实现,效率不高,不利于I/O频繁的进程。

7.5.2最短CPU周期优先算法

每次从就绪队列中选择CPU周期最短者

若采用剥夺式调度,则算法变为最短剩余CPU周期优先

7.5.3时间片轮转调度算法

思想:轮转法调度也称为时间片调度,时间片调度做法是:调度程序每次把CPU分配给就绪队列首进程使用一个时间片,就绪队列中的每个进程轮流地运行一个时间片。当这个时间片结束时,强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮调度。

是一种剥夺式算法

7.5.4优先级调度

给每一个进程确定一个优先数,处理器调度每次选择就绪进程中优先数最大者,让它占用处理器运行称优先数调度。

基于优先数的低级调度算法有两种调度方式:剥夺式和非剥夺式优先数调度算法。对于剥夺式要考虑优先数的计算时机

7.5.5多级反馈队列调度(反馈循环队列或多队列策略)

思想:将就绪进程分为两级或多级,建立两个或多个就绪进程队列,较高优先级的队列一般分配给较短的时间片。调度时先从高级就绪进程队列中选取进程,只有在选不到时,才从较低级的就绪进程队列中选取。同一队列中的进程按先来先服务原则排队。开始工作时,每当一个新进程进入内存后,首先进入高优先级队列等候调度,若能在该级队列的一个时间片内执行完成,则撤离系统,否则进入低一级的队列等候调度,队列级别越低,时间片就越大,低优先级队列中的进程获得调度时运行的时间就长一些。

你可能感兴趣的:(计算机专业课知识点总结)