【系统分析师之路】第十四章 操作系统(视频笔记)

【系统分析师之路】第十四章 操作系统(视频笔记)

进程管理
进程的状态(★★)
前趋图(★★★★)
信号量与PV操作(★★★★★)
死锁与银行家算法(★★★)
存储管理 
段页式存储(★★★★) 
页面置换算法(★) 
文件管理 
相对路径和绝对路径(★★) 
索引文件(★★) 
位示图(★★★) 
作业管理 
设备管理

数据传输控制方式(★★)
虚设备与SPOOLing技术(★)
微内核操作系统(★★)
嵌入式操作系统 

  •  操作系统概述

   管理系统的硬件软件 
   控制程序运行 
   人机之间的接口 
   应用软件与硬件之间的接口 
   位于裸机之上语言处理程序之下的位置。

  • 进程管理--进程的状态
进程的状态:三态图
From/To 运行 就绪 阻塞
运行 ------ 时间片到 等待某事件
就绪 调度 ------ ×
阻塞 × 等待某事件 ------
进程的状态:五态图
From/To 运行 活跃就绪 静止就绪 活跃阻塞 静止阻塞
运行 ------ 时间片到 挂起 等待某事件 ×
活跃就绪 调度 ------ 挂起 × ×
静止就绪 × 恢复或激活 ------ × ×
活跃阻塞 × 等待事件发生 × ------ 挂起
静止阻塞 × × 等待某事件 恢复或激活 ------

进程的五态模型包括运行状态,活跃就绪状态,静止就绪状态,活跃阻塞状态和静止阻塞状态。
五态图多了静止阻塞,静止就绪两个状态。对应相应的人为挂起的情况。
就绪态:各类资源充足,只是缺CPU时间片
阻塞态:缺资源。

  • 进程管理—前趋图(★★★★) 

英文为:Precedence Graph。前趋图类似于进度管理上面的进度网络图。 在前趋图中,箭头指向的方向是P操作,因为它要负责阻塞进程来模拟先后执行。而V操作是释放资源去唤醒别人的操作。
在前驱图的例子中,进程D先执行三个P操作,P(Sa),P(Sb),P(Sc)三个操作来模拟只有执行完成ABC之后才开始D,也就是说需要绞肉,切姜末切蒜末好了之后才可以搅拌和包饺子;而进程ABC则执行三次V操作。

进程P1,P2,P3,P4,P5的前趋图如下图所示。若用PV操作控制进程并发执行的过程,则需要设置4个信号量S1,S2,S3,S4。且信号量初始值都等于零。图中a和b分别填写(V(S1)和V(S2)),c和d应分别填写(P(S1)P(S2)和V(S3)V(S4)),e和f应分别填写(P(S3)P(S4))。 

解答:在P1执行后,应该执行V操作也就是V(S1);在P2执行后,应该执行V操作也就是V(S2) ;在P3执行前需要P(S1)和P(S2)来阻塞P3;P3执行后,V(S3)和V(S4)让之后的两个Task变成可执行状态。那么P4执行前P(S3),P5执行前也需要先阻塞也就是P(S4)。以上就是此题的答题思路。

  • 进程管理—PV操作(★★★★★)
临界资源 进程之间需要互斥方式对其进行共享的资源,如打印机磁带机等。
临界区 每个进程中访问临界资源的那段代码被称为临界区。
信号量 是一种特殊的变量。
P操作 S=S-1;当S小于0时把当前进程放入阻塞队列。
V操作 S=S+1;S小于等于零时,从阻塞队列唤醒一个进程。 

PV操作的一个典型应用就是生产者-消费者模式。PV操作解决了进程之间同步与互斥的问题。 

假设某系统采用非抢占式优先级调度算法,若该系统有两个优先级相同的进程P1和P2,各进程的程序段如下所示,若信号量S1和S2的初始值都为0。进程P1和P2并发执行后a,b和c的结果分别为()。

//P1程序段
Begin{
  a=1
  a=a+1
  V(S1)
 c=a+5
  P(S2)
  a=a+c
}
End

//P2程序段
Begin{
  b=2
  b=b+1
  P(S1)
 b=a+b
  V(S2)
  c=b+c
}
End

解答:可以从两个角度分析这个问题。

如果P2先执行,那么遇到P(S1)之后,S=S-1也就是S=-1,这个时候P2这个进程就被阻塞了。程序不得不执行P1程序段。此时b=3,a=1不变,而P1程序段开始执行,a由1变为2后,V操作了S1此时c=7;再回到P2的片段:b=a+b得到b=5;c=b+c=5+7=12;最后回到P1,a=a+c=2+12=14。最终结果:a=14,b=5;c=12。

如果P1先执行,那么遇到P(S2)之前,a=2,c=7,然后转到P2程序段。b=a+b=3+2=5,c=b+c=5+7=12,S2执行了V操作之后回到P1程序段,a=a+c=2+12=14;最终结果也是:a=14,b=5;c=12。

  • 进程管理—同步与互斥 (★★★★★)
互斥 如千军万马过独木桥,同类资源的竞争关系。
同步 速度有差异,在一定情况停下等待,进程间的协作关系。 是同一层面的问题。

 互斥主要讲的是同类资源的竞争关系。也可以理解为独占。 一个进程在执行过程中,可能要停下来等等其他的进程,这就是同步。 从宏观的角度来讲,同步是共享使用资源,但从微观上它是互斥地使用资源。 

单缓冲区:生产者和消费者都要去使用市场,市场在某一时刻只允许一个生产者或一个消费者来使用,这就是互斥的关系。 
同步关系:消费者消费商品后生产者生产商品才可以投入市场。 信号量的值代表的是资源的个数。 V操作小于等于零改成小于零之后,系统中将一直有一个进程无法释放出来。 

  假设系统有m个同类的互斥资源,当n个进程共享这m个互斥资源时,每个进程的最大需求数是w。在这种情况下,系统可能产生死锁的是:B。 
  A:m=4,n=3,w=2
  B:m=4,n=2,w=3
  C:m=5,n=2,w=3
  D:m=5,n=3,w=2

  • 进程管理--死锁与银行家算法:

死锁问题是进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了,而如果一个或多个进程产生死锁,就会造成系统死锁。
例如有ABC三个进程,这三个进程都需要五个系统资源,如果系统至少有13个资源,才不可能发生死锁。
如何预防死锁:顺序资源分配,银行家算法。 有序资源分配法的缺点就是低效。因为他让很多事情顺序而不是并行的在执行。
银行家算法分配资源的原则 :
  1.当一个进程对资源的最大需求量不超过系统中的资源数时,可以接纳该进程 
  2.进程可以分期请求资源,但请求的总数不能超过最大需求量。 
  3.当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。

假设系统中有三类互斥资源R1,R2,R3,可用资源分别是9,8,5。在T0时刻系统中有P1,P2,P3,P4,P5五个进程,这些进程对资源的最大需求量和已经分别的资源数如下所示,如果进程按()序列执行,那么系统状态是安全的。

进程/资源 最大需求量 已分配资源数 还需资源数
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 6 5 2 1 2 1 5 3 1
P2 2 2 1 2 1 1 0 1 0
P3 8 1 1 2 1 0 6 0 1
P4 1 2 1 1 2 0 0 0 1
P5 3 4 4 1 1 3 2 3 1

解答:首先求剩下的资源数:R1=9-(1+2+2+1+1)=2;R2=8-(2+1+1+2+1)=1;R3=5-(1+1+3)=0;P2对于资源的需求是最少的也就是最容易满足,所以我们首先满足P2,满足P2后,资源得到释放,此时R1=4;R2=2;R3=1。接下来最容易满足的就是P4,执行完P4之后,资源数R1=5;R2=4;R3=1;然后P5和P1都可以实现,根据资源最少原则,先调P5,执行完P5之后,资源数R1=6;R2=5;R3=4;然后P1,最后P3。P2-》P4-》P5-》P1-》P3

  • 存储管理--段页式管理:

设进程的段表如下图所示,逻辑地址(B)可以转换为对应的物理地址。
A (0,1597),(1,30)和(3,1390)
B(0,128),(1,30)和(3,1390)
C (0,1597),(1,98)和(3,1390)
D (0,128),(1,98)和(3,1066)

解答:主要看段长和偏移量的对比结果。在(段号,偏移量)中,偏移量不能超过段长。

段号 基地址 段长
0 1598 600
1 486 50
2 90 100
3 1327 2988
4 1952 960
存储管理--段页式管理
页号 是逻辑地址,在高级程序语言中使用
页帧号 是物理地址,在内存中使用
状态位 1在内存中,0表示不在内存中。
访问位 1最近访问过,0表示最近未被访问
修改位 1内容被修改过,0表示内容没有被修改过

 进程P有六个页面,页号分别为0-5,页面大小为4K,页面变换表如下所示。表中状态位等于1和0分别表示页面在内存和不再内存。假设系统给进程P分配了4个存储块,进程P要访问的逻辑地址为16进制5A29H,那么该地址经过变换后,其物理地址应为16进制(6A29H);如果进程P要访问的页面4不在内存,那么应该淘汰页号为(1)的页面。

页号 页帧号 状态位 访问位 修改位
0 2 1 1 0
1 3 1 0 1
2 5 1 1 0
3 --- 0 0 0
4 --- 0 0 0
5 6 1 1 1
  • 存储管理--页面置换算法
时间局部性 刚被访问的内容,立即又被访问
空间局部性 刚被访问的内容,临近的空间很快被访问
最优算法OPT 从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。
随机算法 RAND
先进先出(FIFO) 有可能产生抖动,例如432143543215序列,用3个页面,比4个缺页要少。
当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。
最近最少使用(LRU) 不会抖动,利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。
它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。
最不经常使用页置换(LFU) 根据数据历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也很高"
它的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按时间排序
时钟(CLOCK)置换算法 简单的CLOCK算法是给每一帧关联一个附加位,称为使用位。当某一页首次装入主存时,该帧的使用位设置为1;当该页随后再被访问到时,它的使用位也被置为1。

LRU(Least Recently Used ):淘汰最后被访问时间最久的元素。
LFU(Least Frequently Used):淘汰最近访问频率最小的元素。
以上两个算法很容易搞混。 

某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间,其中一个页面用来存放程序,现有某作业的程序如下:

Var A:Array[1.100,1.100] Of integer

    i,j integer;

    For i=1 to 100 DO

        For j=1 to 100 DO

            A[i,j]=0

设每个页面可存放200个整数变量,变量ij存放在程序页中。初始时,程序及i和j均在内存,其余3页为空。若矩阵A按行序存放,那么当程序执行完后共产生(50)次缺页中断;若矩阵A按列序存放,那么当程序执行完后共产生(5000)次缺页中断。

解答:除去用来存放程序的页,剩下的三个页就是可以用来存变量数据。首先说说按行序存放的情况。A1.1-》A6.100装入页后是不用替换的。从数据A7.1开始就不再页里面了,所以就产生缺页中断。置换出A1.1-》A2.100后载入A7.1-》A8.100。同理A9.1,A11.1,A99.1都会产生缺页中断。

再说说按列序存放的情况。

按行序存放
A1.1 A1.2 A1.3 A1.4 ... ... A1.99 A1.100
A2.1 A2.2 ... ...        
A3.1 A3.2 ... ...        
A4.1 A4.2 ... ...        
... ...            
... ...            
A99.1 A99.2            
A100.1 A100.2            
按列序存放
A1.1 A2.1 A3.1 A4.1 ... ...

A99

.1

A100.1
A1.2 A2.2 ... ...        
A1.3 A3.2 ... ...        
A1.4 A4.2 ... ...        
... ...            
... ...            
A1.99              
A1.100              
  •   存储管理—页式存储 

段页式存储管理方式即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。(先分段再分页)
页式存储相当于集装箱一样,每个页面都是一样的大小。段式则不同,它大的大小的小。页式存储:强调化整为零的使用存储。

页式存储 定义 将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。
优点 利用率高,碎片小,分配及管理简单
缺点 增加了系统开销,可能产生抖动的现象。
段式存储 定义 按用户作用中的自然段来划分逻辑空间,然后调入内存,段的而长度可以不一样。
优点 多道程序共享内存,各段程序修改互不影响。
缺点 内存利用率低,内存碎片浪费大。
段页式存储 定义 段式与页式的综合体,先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同
优点 空间浪费小,存储共享信息,存储保护容易,能动态连接
缺点 由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降

高级程序语言使用逻辑地址,而运行状态,内存中使用物理地址。
逻辑地址=页号+页内地址 物理地址=页帧号+页内地址  
例如页式存储中每个页的大小为4KB,逻辑地址:10 1100 1101 1110,对应的物理地址为110 1100 1101 1110 必须要有一个页表来记录逻辑地址和物理地址之间的映射关系。 
比方说30K的程序要调入一个40K的空间,那么会浪费10K的碎片,而如果采用页式存储之后,每个页记录4K,那么只需要8页就可以了,而且这样只有2K的碎片空间。只是这样会增加系统开销,且出现小块。 
快表是把页表存放在Cache中;慢表是把页表放在内存中。 
快表是一块小容量的相联存储器(AssociativeMemory),由高速缓存器组成,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。

  • 微内核操作系统(★★)
  实质 优点 缺点

单体内核

将图形,设备驱动及文件系统等功能全部在内核中实现,运行在内核状态和同一地址空间 减少进程间通信和状态切换的系统开销,获得较高的运行效率 内核庞大,占用资源较多且不能裁剪。系统的稳定性和安全性不好。
微内核

只实现基本功能,将图形系统,文件系统,设备驱动及通信功能放在内核之外。

内核精炼,便于裁剪和移植。系统服务程序运行在用户地址空间,系统的可靠性稳定性和安全性较高。可用于分布式系统 用户状态和内核状态需要频繁切换,从而导致系统效率不如单体内核

微内核(Micro kernel)是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口。微内核:尽可能把内核做的小一点。 

  • 文件管理--相对路径和绝对路径(★★) 
绝对路径 是从盘符开始的路径
相对路径 是从当前路径开始的路径

文件属性:只读文件属性,存档属性,系统文件,隐藏文件
文件名的组成:驱动器号,路径,主文件名,扩展名
打本地电话不用加区号,打外地电话需要加区号,这便是绝对路径和相对路径的一个应用。 相对路径一般比绝对路径短,所以方便,但在使用相对路径的时候同时也要考虑到当你当前路径变化了,相对路径就失效了。 

  • 文件管理--位示图(★★★)

是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把"0"作为盘块已分配的标记,把“1”作为空闲标志。(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。位示图是一种非常常用的结构,在索引数据压缩等方面有广泛应用。
位示图可以展现哪些物理盘块可以访问哪些物理盘块已经被占用。 还有我们作高铁选座位也是使用了位示图。

某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况,若磁盘上的物理块依次编号为:0,1,2。。。系统中字长为32位,每一位对应文件存储器身上的一个物理块,取值0和1分别表示空闲和占用,如下图所示,

字长0~31
0 1 ... 1 0 0 0 1

假如将4195号物理块分配给某文件,那么该物理块的使用情况在位示图中的第(132)个字中描述;系统应该将(该字的第3位位置1)。

解答:物理块号一般是从零开始,bit位也是从零开始,在考试中”字“一般才从1开始。4192可以被32整除,整除后的值为131。也就是说,4195是放在132个字中的第三个位置,分配给某文件后,必定是要把0变成1,于是就有了上面的答案。

除了位示图之外,空闲区表法(空闲文件目录),空闲链表法,成组链接法都可以用来管理空闲存储空间。 

  • 文件管理—索引文件结构(★★)

文件主结点只有13个结点,如果13个结点都采用直接寻址的方式的话,它的寻址空间会非常的小。
所以我们默认0-9是直接索引。10号盘块存一级索引,11号盘块作二级间接索引,12号盘块作三级间接索引。

  • 虚设备与SPOOLing技术(★)

打印机是外设,是独占设备。如果不用SPOOLing技术,那么打印机在有任务的情况下,就会显示正在打印中的情况。
它其实就是把该输入输出的数据先放到缓冲区的一种技术。 利用了缓存设备去缓解独占设备被抢占的情况。而这个缓存放在磁盘上面。
SPOOLing技术将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLing技术的典型实例。它通常也被称为"假脱机技术"。

  • 嵌入式操作系统

特点:微型化,代码质量高,专业化,实时性强,可裁剪,可配置。嵌入式操作系统一般软硬件相互结合。
常见的嵌入式RTOS:VxWorks,RT-Linux,QNX,pSOS。
实时嵌入式操作系统的内核服务有:异常和中断,计时器,I/O管理。

比较类型 VxWorks RT-Linux
工作方式 操作系统与应用程序处于同一存储空间 操作系统与应用程序处于不同的存储空间
多任务支持 支持多任务(线程)操作 支持多进程多线程操作
实时性 实时系统 实时系统
安全性 任务之间没有隔离保护 支持进程间的隔离保护
标准API 支持 支持
  • 数据传输控制方式
程序控制查询方式 分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但IO能力不高,严重影响CPU的利用率。
程序中断方式 与程序控制相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
适用于小数据量,比如键盘等要求实时性要求较高的场景。 
DMA方式 为了在主存于外存之间实现高速,批量数据交换而设置,DMA方式比程序中断和程序控制查询方式都高效。
硬盘就采用了这个方式,它使用专用好的控制器来进行传输的管控。 
通道方式 也称作外围设备处理器,相对于CPU而言的。是一个处理器。
也能执行指令和由指令的程序,只不过通道执行的指令是与外部设备相关的指令。
IO处理机 ---

操作系统 以下关于在IO设备与主机间交换数据的叙述中,错误的是(C) 
A.中断方式下,CPU需要执行程序来实现数据传输 
B.中断方式和DMA方式下,CPU与IO设备都可同步工作
C.中断方式和DMA方式相比,快速IO设备更适合采用中断方式传递数据
D.若同时接到DMA请求和中断请求,CPU优先响应DMA请求

解答:快速IO设备更加适合采用DMA方式,因为DMA方式比程序中断程序控制更加的高效。

在一个单CPU的计算机系统中,采用了可剥夺式(抢占式)优先级的进程调度方案,且所有任务可以并行使用IO设备,下表列出了三个任务T1,T2,T3的优先级,独立运行时占用CPU和IO设备的时间。
如果操作系统的开销忽略不计,这三个任务从同时启动到全部结束的总时间为(87)ms。CPU的空闲时间共有(18)ms。 

任务 优先级 每个任务独立运行时所需的时间
T1 对每个任务占用CPU15ms,I/O18ms,再占有CPU 8ms
T2
T3

解答:首先要明确的是,可以并行使用IO设备的前提下,需要抢占的资源就只有单核的CPU了。
0~15ms:T1在使用CPU
15~30ms:T2在使用CPU
31~33ms:T3在使用CPU,因为此时T1需要再占用,而T1优先度高于T3,这个时候发生抢占T3->T1
34ms~41ms:T1使用CPU,在此时T1已经可以执行完了了。
42ms~48ms:切换回T3,执行7ms后,T2的IO做完了,这个时候又要抢占T3->T2
49ms~56ms:T2运行中,运行8ms后,T2就已经做完了。这个时候又要T2->T3
57ms~61ms:T3前半部分的15ms运行完了,这个时候需要等待IO操作运行完了,于是CPU空闲18ms
61ms~78ms:CPU空闲
79ms~87ms:运行完后半部分的T3。到此为止所有都完成了。全部结束的总时间为87ms

假设文件系统采用索引节点管理,且索引节点有8个地址项,addr[0]~addr[7],每个地址项的大小为4字节,addr[0]~addr[4]采用直接地址索引,addr[5]~addr[6]采用一级地址索引,addr[7]采用二级间接地址索引,假设磁盘索引块和磁盘数据块的大小均为1KB字节,文件File1中逻辑块号为5和261的信息,则对应的物理块号分别是(58和187),101号物理块存放的是(二级地址索引表


解答:每个地址项是4字节,而磁盘数据块大小为1KB,那么一个磁盘数据块可存放256个数据,加上直接地址索引的5个逻辑地址,第261块号就在第二个数据块第一个位置。 

发布了514 篇原创文章 · 获赞 299 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/Last_Impression/article/details/103659742