操作系统章节

内容分类详情
软考所有资料汇总入口
软考大纲软件设计师考试大纲
考点导图知识点思维导图持续更新
笔记计算机组成结构章节
操作系统章节
真题解析

操作系统概述

  • 操作系统的作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境。

  • 操作系统的特征:并发性、共享性、虚拟性、不确定性。

  • 操作系统的功能:进程管理、存储管理、文件管理、设备管理、作业管理(作业管理没有考过)。

  • 操作系统的分类:批处理操作系统、分时操作系统(轮流使用CPU工作片)、实时操作系统(快速响应)、网络操作系统、分布式操作系统(物理分散的计算机互联系统)、微机操作系统(Windows) 、嵌入式操作 系统。

  • 计算机启动的基本流程为: BIOS->主引导记录->操作系统。

进程的组成和状态

  • 进程的组成:进程控制块PCB (唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。

  • 进程基础的状态是下左图中的三态图,这是系统自动控制时只有三种状态,而下右图中的五态,是多了两种状态:静止就绪和静止阻塞,需要人为的操作才会进入对应状态,活跃就绪即就绪,活跃阻塞即等待。

在这里插入图片描述

  • 可知,当人为干预后,进程将被挂起,进入静止状态,此时,需要人为激活,才能恢复到活跃状态,之后的本质还是三态图。

前趋图(重要考点)

前趋图:用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如下图:

在这里插入图片描述

ABC可以并行执行,而D需要ABC执行完才能执行,E需要等待D执行完才能执行。

可知,ABC可以并行执行,但是必须AB C都执行完后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序。

进程资源图

进程资源图:用来表示进程和资源之间的分配和请求关系,如下图所示:

在这里插入图片描述

  • P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在图中,R1指向P1, 表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。

R1指向P1:P1已经占有一个R1资源
P1指向R2:P1仍需要一个R2资源

  • 阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中P2。

P1和P3已经占用了R1的两个资源,因此P2获取R1的一个资源将会阻塞。

  • 非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3。

  • 当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态。

真题:
例:在如下所示的进程资源图中,(27) ;该进程资源图是(28)。

在这里插入图片描述

(27)

A. P1、P2、P3都是阻塞节点

B. P1是阻塞节点、P2、P3是非阻塞节点

C. P1、P2是阻塞节点、P3是非阻塞节点

D. P1、P2是非阻塞节点、P3是阻塞节点

(28)

A.可以化简的,其化简顺序为P1>P2 >P3

B.可以化简的,其化简顺序为P3->P1>P2

C.可以化简的,其化简顺序为P2>P1→P3

D.不可以化简的,因为P1、P2、P3申请的资源都不能得

27C
28B
化简:需要从非阻塞进程推演,这里P3是非阻塞节点,当P3都执行完成后,释放掉R1一个资源,R2一个资源,R3一个资源,P1这时就可以获取到R2一个资源进行执行,同时P2也可以获取一个R1的一个资源。
因此,化简顺序可以是:P3->P1->P2或者P3->P2->P1

  • 进程资源图化简的方法是:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞的,接着把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来,这样,系统剩余的空闲资源便多了起来,接着又去看看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。最后,所有的资源和进程都变成孤立的点。图中P3是不阻塞的,故P3为化简图的开始,把P3孤立,再回收分配给他的资源,可以看到P1也变为不阻塞节点了,故P3、P1、P2是可以的。

同步与互斥

  • 互斥:某资源(即临界资源)在同一时间内只能由一一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机。

  • 同步:多个任务可以并发执行,只不过有速度上的差异,在一一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。

  • 临界资源:各进程间需要以互斥方式对其进行访问的资源。

  • 临界区:指进程中对临界资源实施操作的那段程序。本质是一段程序代码

  • 互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。

  • 同步信号量:对共享资源的访问控制,初值一般 是共享资源的数量。

信号量操作

P操作:申请资源,S=S-1, 若S>=0,则执行P操作的进程继续执行;若S<0, 则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。

V操作:释放资源,S=S+1, 若S>0, 则执行V操作的进程继续执行;若S<=0, 则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行V操作的进程继续。

在这里插入图片描述

当S>=0时表示资源数
当S<0时表示信号量

  • 经典问题:生产者和消费者的问题

  • 三个信号量:互斥信号量SO (仓库独立使用权),同步信号量S1 (仓库空闲个数),同步信号量S2 (仓库商品个数)。

在这里插入图片描述

例题:

在这里插入图片描述

解析:
P1执行该完成会释放两个信号量,即S1和S2,右图中P2执行需要一个S1,所以,P1指向P2的箭头释放的是S1,P1指向P3的箭头释放的是S2;
分析右图c处,这里P3就需要一个S2了,需要申请获取P1释放的S2,所以c处是P(S2)
分析d处,这里是P3释放信号量,可以确定选择B,V(S4)
分析e处,P4执行需要S3,P4执行完了就需要释放一个信号量,V(S4+1) V(S5)
分析f处,P5执行需要申请S4和S5。

在这里插入图片描述

例题:

在这里插入图片描述

解析:
P1执行完了,假设释放信号量S1(P1->P2)和S2(P1->P3),
P2执行完了,释放S3和S4,假设S3(P2->P4),S4(P2->P3)
继续看P3,P3这里需要申请S2,因此P1—>P3释放的是S2,那么P1->P2释放的是S1,所以P2需要申请S1,所以序号2就是申请S1,即P(S1)。
所以:第一个空选择C
第三个序号:这里一定是P操作,然后再去执行,所以A和C选项错误,继续看P4这里需要申请S4,所以,P2刚刚释放的是S4,那么P3执行完了一定释放V(S5)和V(S6)
选择B
序号6就是P(S7)和P(S8)。

C B D

例题:
在这里插入图片描述

解析:
P1释放S1,S1初值是0,释放S1就需要加1,S1=0+1>0,所以P1可以继续执行。那么c=4,申请S2,S2=0-1<0了,因此P1在这里就阻塞了。
CPU执行P2,申请S1,S1=1-1=0,所以可以继续执行,b=6,
V(S2):释放资源S2=-1+1=0,则会唤醒P1,但是P2仍然要继续执行完后,才能执行P1,

答案:D B C

死锁

  • 当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。

  • 死锁产生的四个必要条件:

  1. 资源互斥
  2. 每个进程占有资源并等待其他资源
  3. 系统不能剥夺进程资源
  4. 进程资源图是一个环路。
  • 死锁产生后,解决措施是打破四大条件,有下列方法:

死锁预防:采用某种策咯限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,便系统任何时刻都不满足死锁的条件。

死锁避免:一 般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。

死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。

死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。

死锁计算问题:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n*(R-1)。其不发生死锁的最小资源数为n*(R-1)+1。

例题:
某系统中有3个并发进程竞争资源R,每个进程都需要5个R,那么至少有()个R,才能保证系统不会发生死锁。
A.12

B.13

C.14

D.15

在这里插入图片描述

例题:
银行家算法真题:假设系统中有三类互斥资源R1、R2和R3,可用资源数分别为10、5和3。在TO时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求和已分配资源数如下表所示,此时系统剩余的可用资源数分别为(27)。如果进程按(28)序列执行,那么系统状态是安全的。
(27)

A.1、1和10

B. 1、1和1

C. 2、1和0

D. 2、0和1

(28)

A. P1->P2->P4->P5->P3

B. P5->P2->P4->P3->P1

C. P4->P2->P1->P5->P3

D. P5->P1->P4->P2->P3

答案: D B

解析:
剩余可用资源数=可用资源数-已使用资源数
R1已使用资源数=1+2+3+1+1=8,那么R1的剩余可用资源数=10-8=2,以此计算R2和R3,答案是D
系统状态安全:按照最大需求量进程不阻塞可执行
先看A答案,首先执行P1,P1最大需要资源
R1需要资源数=最大需求量-已分配资源数=5-1=4,但目前R1的剩余可用资源数是2,因此P1不能执行
再看B选项:
P5最大需求量
R1需要资源数=2-1=1,R1可用资源数是2,所以满足,R2需要资源数=1-1=0,满足,R3需要资源数=1-0=1,R3剩余可用资源数是1,所以也满足,因此首先执行P5是可以的。
P5执行完成后,需要释放资源数,剩余可用资源数=当前剩余资源数+已分配资源数,
R1=2+1=3,R2=0+1=1,R3=1+0=1
然后执行P2进程,推演过程和P5类似,经过推演也是满足最大需求量的,
以此类推,选择B

线程

  • 传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位。

  • 引入线程后,线程是独立调度的最小单位,进程是拥有资源的最小单位,线程可以共享进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据。


版权声明:本文为u010106375原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。