软件设计师4--OS处理机管理

版权声明:文章编写不易,转载请注明原链接 https://blog.csdn.net/u012184539/article/details/84137346

处理机管理

处理机管理也称进程管理。在多道批处理操作系统和分时操作系统中有多个并发执行的进程。进程是资源分配和独立运行的基本单位。处理机管理研究的是进程之间的并发性,以及进程之间的相互合作与资源竞争产生的问题。

1. 进程的状态

  1. 进程的组成:程序、数据、进程控制块

    • 进程控制块是进程存在的唯一标志。其内容有进程标识符(PID),状态、位置信息(程序和数据在主存或外存的物理位置)、控制信息(参数、信号量等)、队列指针、优先级、现场保护区、其他。
      在这里插入图片描述
  2. 进程的状态

    • 三态模型:运行、就绪、阻塞。就绪状态获得了除处理机的所有资源,得到处理机后可立即执行。阻塞状态也称睡眠状态,进程在等待某事件而暂停运行,即使获得处理机也无法立即运行。
    • 五态模型:引入新建状态和终止状态,构成五态模型。
      在这里插入图片描述
  3. 具有挂起状态的进程转换。由于进程的不断创建,系统资源特别是主存资源不能满足要求,这时必须把某些进程挂起,放到磁盘对换区(辅存),暂时不参加调度,以平衡系统负载。在这里插入图片描述

2. 进程控制

  1. 进程控制:操作系统对进程的创建到消亡全过程做有效的控制。进程控制是由操作系统内核中的原语实现的。
  2. 原语:由若干条程序组成,用来完成特定功能的程序段,执行时不能被分割,即原子操作。

3. 进程间通信

在多道程序环境的系统中存在多个进程并发执行的情况,进程间必然存在资源共享和相互合作的问题。进程间通信时指各个进程间交换信息的过程。

  1. 进程的同步。进程间完成某一项任务时直接发生相互作用的关系
  2. 进程的互斥。各进程互斥使用临界资源(某些资源一次只能被一个进程使用,如打印机、共享变量和表格)
  3. 临界区的管理规则。临界区时系统对临界资源实施操作的那段程序。对互斥临界区的管理4条原则如下:
    • 有空则进。当无进程处于临界区时,允许进程进入临界区,并且只能在临界区允许有限的时间。
    • 无空则等。当有进程处于临界区时,其他进程必须等待,以保证进程互斥访问临界资源。
    • 有限等待。对于要求进入临界区的进程,保证进程能够在有限的时间内进入临界区,以免进入“饥饿”状态。
    • 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程进入忙等状态。

3.1 信号量机制

信号量机制是一种有效的进程同步和互斥工具。主要有整型信号量、记录型信号量和信号量集机制。

  1. 整型号量与PV操作
    信号量是一种整型变量,根据控制对象的不同赋予不同的值。信号量分为如下两类:
    (1)公用信号量。实现进程间的互斥,初值为1或资源的数目
    (2)私用信号量。实现进程间的同步,初值为0或某个正整数

信号量S的物理意义:S >= 0 表示某资源的可用数,若S < 0 ,则绝对值表示阻塞队列中等待该资源的进程数。

PV操作是实现进程间同步和互斥的常用方法。P操作和V操作是低级通信原语,在执行期间不可分割。P操作表示申请一个资源,V操作表示释放一个资源。

  1. 使用PV操作实现进程间的互斥
    令信号量mutex的初值为1,当进入临界区时执行P操作,推出临界区时执行V操作
    在这里插入图片描述

在这里插入图片描述

3.2 高级通信原语

进程间通信指进程间的信息交换,少则一个状态,多则成千上万个信息。根据交换信息量的多少和效率的高级,进程间通信分为低级的方式和高级的方式。PV操作属于低级的通信方式。使用PV操作有两个问题:1.编程难度大,通信对用户不透明,而且容易产生死锁。2.效率低,生产者每次只能向缓冲区方一个消息,消费者每次只能从缓冲区读取一个消息。
高级通信方式有三种:

  1. 共享存储模式。相互通信的进程之间共享某些数据结构(或存储区)实现进程间的通信。
  2. 消息传递模式。进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信,如send(A)和receive(A)。
  3. 管道通信。所谓管道,时连接一个读进程和一个写进程,以字符流的形式将大量的数据送入管道,而接收进程可从管道接收大量的数据。

4. 管程

todo 使用资源集中管理的方法,将系统的某种资源用数据结构抽象的表示出来。由于临界区是访问共享资源的代码段,建立一个管程管理进程提出的访问请求。

5. 进程调度

进程调度是指当有更高优先级的进程到来时,如何分配CPU。调度方式分为可剥夺和不可剥夺两种。可剥夺式是指当有更高优先级的进程到来,强行将正在运行进程的CPU分配高优先级的进程。不可剥夺式则时等待进程释放CPU后,将CPU分配给高优先级进程。

5.1 三级调度

在具有三级调度的操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
(一)高级调度。又称长调度、作业调度和接纳调度,它决定处于输入池中的哪个后被作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。一个作业只需经过一次高级调度。
(二)中级调度。又称中程调度和对换调度。它决定处于交换区的哪个就绪进程可以调入内存,以便直接参与对CPU的竞争。在资源紧张时,会将内存中处于阻塞状态的进程对换到对换区。
(三)低级调度。又称短程调度或进程调度,它决定处于内存中的哪个就绪进程可以占有CPU。低级调度时系统中最活跃、最重要的调度程序,对系统的影响很大。
在具有三级调度的操作系统中,参考上面说的进程的5态模型,进程的就绪状态和阻塞状态都有两种存储形式,一种时处于内存,一种是处于对换区(外存)。

5.2 调度算法

常用的进程调度算法有:先来先服务(宏观调度)、时间片轮转(微观调度,提高资源利用率) 、优先级调度和多级反馈调度。

5.3 优先级调度

分为静态优先级和动态优先级。

  1. 静态优先级进程在整个生命周期优先级不会变,通常通过三个因素确定优先级:进程类型(如系统进程优先级高)、对资源的需求(如对CPU和内存需求少的进程优先级高)、用户要求(如紧迫程度)。
  2. 动态优先级进程在运行过程中可以实时改变优先级,以便可以获得更好的进程调度性能。例如,在就绪队列中,随着等待时间变长,进程的优先级会提高,进程每执行了一个时间片其优先级降低。

5.4 多级反馈调度

多级反馈调度算法时时间片轮转和和优先级算法的综合和拓展。其有点是既照顾了短进程以提高系统的吞吐量、缩短了平均周转周期;照顾IO型进程以获得较好的IO设备利用率和缩短响应时间;不必估算进程的执行时间,动态的调节优先级。
在这里插入图片描述

5.5 进程优先级的确定

优先级的确定要考虑如下情况:
(1)对于IO型进程,让其进入最高优先级队列。通常执行一个小的时间片,处理完成一次IO请求,然后转入阻塞队列。
(2)基于计算型进程,每次处理完后进入更低优先级的队列,最终使用最大时间片来执行,以减少调度次数。
(3)对于IO次数少,主要是CPU处理的进程,在IO完成后返回该进程的队列,以免每次都回到最高优先级的队列执行。
(4)为适应一个进程在不同时间段的运行特点,IO完成时,提高优先级;时间片用完时,降低优先级。

5.6 死锁

死锁是两个以上的进程互相要求对方已经占用的资源,导致大家都无法继续运行下去的现象。
【例1】有进程P1和进程P2,互斥资源A和B,两个进程并发执行,以下如果按照P1(a) P2(a) P1(b) P2(b)的次序执行系统会发生死锁。
在这里插入图片描述
【例2】PV操作不当产生死锁,如图,当信号量S1=S2=0是发生死锁。
在这里插入图片描述

6. 线程

传统的进程有两个基本属性:

  1. 可拥有资源的独立单位
  2. 可独立调度和分配的基本单位

由于在进程的创建、撤销和切换的过程中,系统必须为之付出较大的时空开销,因此系统 中设置进程数目不宜过多,进程切换频率不宜过高,这限制了系统的并发程度。引入线程后,将传统进程的两个属性分开。线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户通过创建线程来完成任务,以减少程序并发执行的系统开销。

猜你喜欢

转载自blog.csdn.net/u012184539/article/details/84137346