软件设计师-操作系统

返回目录

五种管理

进程管理,存储管理,文件管理,作业管理,设备管理
在这里插入图片描述

五状态

运行态:需要的所有资源都已经准备就绪,且分配到cpu资源
就绪态:需要的所有资源都已经准备就绪
挂起就绪
等待态:除cpu资源外还需要其它资源,例:与外设交互等
挂起等待
在这里插入图片描述

进程的同步与互斥

互斥(对应共享)

资源同一个时间只能有一个人使用

同步(对应异步)

速度快的要等速度慢的,相当于是两者必须同时完成工作

生产者消费者

在这里插入图片描述
单缓冲区:
互斥:市场只有一个位置,当生产者在生产东西时,就不允许消费去拿东西,当消费者进行消费时,生产者就不能胜场东西。
同步:当生产者生产了一个物品后必须等到消费者消费之后才能继续生产商品。
多缓冲区:
与单缓冲区的原理类似,不过就是在单缓冲区时,生产者生产一个商品后就不能继续生产商品了,而多缓冲区的生产者可以一次性生产多个商品。

PV操作

在这里插入图片描述
信号量:主要用于PV操作的变量,这里为了方便就称为S。
P操作:也称为down()、wait()操作,使S–,若S<0,进程暂停执行,放入信号量的等待队列。
V操作:也称为up()、signal()操作,使S=S++,若S≤0唤醒等待队列中的一个进程

在这里插入图片描述

PV操作

互斥控制
一次只允许一个进程访问这些资源的代码段,这个代码段称为临界区(也称为管程),这种的资源称为临界资源。代码显示如下:
S:信号量
P(S–)
临界区
V(S++)
由于只允许一个进程进入,因此信号量中整型值的初始应该为1。当该值<0时,其绝对值就是等待队列中的进程数。而当一个进程从临界区出来时,执行V操作,,如果等待队列中还有进程,则调入一个新的进程进入(唤醒)。
完成同步控制
最简单的同步形式是:进程A在另一个进程B到达L2以前,不应前进到超过点L1,这样就可以使用程序,如下所示:
程A进程B
… …
L1:P(信号量)L2:V(信号量)
… …
因此要确保进程B执行V操作之前,不让进程A的运行超过L1,因此信号量的初值就应该为0。这样,如果进程A先执行到L1,那么执行P操作后,信号量的整型值就会小于1,也就停止执行。直到进程B执行到L2时,将信号量的整型值加1,并唤醒它以继续执行。

例题

在这里插入图片描述
在这里插入图片描述
假设:b1与b2的pv操作不存在,收营员就会处于一直收费的状态,但是没有消费者提出收费的请求时,收营员的收费操作是无效的。所以首先应该由消费者提出收费请求。

在这里插入图片描述
因此:a1与b1应为一对PV操作,先由a1进行V操作唤醒b1,再由b1进行P操作,由此可知a1与b1中的信号量应该是相同的
在这里插入图片描述
在收营员进行收费结束后,需要对书进行消磁等操作,消费者才能够离开书店,因此要做如下操作
在这里插入图片描述
由收营员进程首先进行V操作去唤醒消费者进程,进而消费者进行P操作
因此答案为:A,C

前驱图

与pv操作结合考察
前驱图要表达的是要完成的一系列活动的先后约束关系。
在这里插入图片描述

将前驱图转为PV操作

将前驱图的每一个活动都转成相应的进程,然后在并发执行时,依然按照前驱图的约束关系先后执行
前驱图主要表达进行的这些活动的依赖关系
在这里插入图片描述
在这里插入图片描述
每一个箭头都表示一个PV操作所以都对应一个信号量,对应的规则是:从左到右,从上到下
在这里插入图片描述
每个箭头起点位置的V操作对应箭头末尾的P操作
在这里插入图片描述
答案:C,A,A

死锁问题

概念

各个进程之间一直等待对方资源,造成各并发进程不能继续向前推进的状态。

必要条件

产生死锁的四个必要条件(缺少任何一个都能破外死锁):
(1)互斥:该资源同一时刻,只能被一个进程使用。
(2)保持和等待:对已获得的资源保持不放并持续等待其它进行释放资源。
(3)不可剥夺:不能够强制系进程释放资源,只能等待其自己释放资源。
(4)环路等待:进程之间相互等待对方释放资源,形成一个闭环。
在这里插入图片描述

预防与避免

在这里插入图片描述
(1)死锁的预防。不让任一产生死锁的必要条件发生就可以预防死锁。
(2)死锁的避免。这种策略不对用户进程的推进顺序加以限制,在进程申请资源时先判断这次分配安全否,只有安全才实施分配,典型的算法是银行家算法。
(3)死锁的检测。这种策略采用资源请求分配图的化简方法来判断是否发生了不安全状态。资源请求分配图是一种有向图,表示进程与资源之间的关系。
资源请求分配图有以下三种情况:
无环路(没有环路就不会造成死锁),有环路无死锁(找出非阻塞节点将其化简),有环路且有死锁。
(4)死锁的解除。解除死锁的基本方法是剥夺。一种方法是把资源从一些进程处剥夺分给别的进程,被剥夺资源的进程则需回退到请求资源处重新等待执行;另一种方法是终止一个进程,剥夺其全部资源,以后再重新运行被终止的进程。

例题

至少有多少系统资源不会发生死锁的题目:
在这里插入图片描述
假设有k个进程,每个进程需要x个资源
至少需要的系统资源个数=k(x-1)+1
即:先给所有的进程都分配他们所需的资源数-1个资源,再多加上一个系统资源,那么此时该系统资源给任何一个进程都能够使任意一个进程完成任务释放资源,继而不会造成死锁。

银行家算法

当某个进程提出申请时,必须判断将资源分配给该进程后,会不会引起死锁。若不会,则进行分配;否则就不分配。这样做能保证在任何时刻至少有一个进程可以得到所需的全部资源而执行结束,并将归还资源加入到系统的剩余资源中,这些资源又至少可以满足一个进程的最大需求,于是保证所有进程都能在有限的时间内得到需求的全部资源。

步骤

一:计算出每个进程都分别还需要多少的资源数
二:计算出目前系统还剩余的资源数
三:检查剩余的资源数足够分配给哪个进程
四:每次一个进程执行结束后剩余的资源数=剩余的资源数+已分配的资源数量(因为进程执行结束后就会返回所有的资源)
在这里插入图片描述
在这里插入图片描述

存储管理

存储是分层次的体系结构。层次从高到低包括:寄存器(CPU中)、Cache、内存、外存(硬盘,U盘,光盘等)。

分区存储组织-分配算法

在这里插入图片描述

首次适应算法(FF)

实现:将所有空闲分区按照地址递增的次序链接,在申请内存分配时,从链首开始查找,将满足需求的第一个空闲分区分配给作业。
特点:该算法倾向于使用内存中低地址部分的空闲区,在高地址部分的空闲区很少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件。
不足:低地址部分不断被划分,留下许多难以利用、很小的空闲区,而每次查找又都从低地址部分开始,会增加查找的开销。

最佳适应算法(BF):

实现:将所有空闲分区按照从小到大的顺序形成空闲分区链,在申请内存分配时,总是把满足需求的、最小的空闲分区分配给作业。
特点:综合性能最好,算法开销小,回收分区后一般不需要对空闲分区队列重新排序,会有更多的大分区被保留下来,更能满足大进程需求。
不足:算法开销大,回收分区后可能需要对空闲分区队列重新排序。会产生很多太小的,难以利用的碎片。

最差适应算法(WF)

实现:将所有的空闲分区按照从大到小的顺序形成空闲分区链,在申请内存分配时,总是把满足需求的、最大的空闲分区分配给作业。
特点:减少难以利用的小碎片。
不足:大分区容易被用完,不利于大进程,算法开销大,原因同上。

循环首次适应算法(NF)

实现:将所有空闲分区按照地址递增的次序链接,在申请内存分配时,总是从上次找到的空闲分区的下一个空闲分区开始查找,将满足需求的第一个空闲分区分配给作业。
特点:不用每次都从低地址开始检索,算法开销小,原因同首次适应算法。
不足:高地址的大分区也被用完。

段页式存储

页式存储

在这里插入图片描述
将用户程序等分成大小相等的页。
将内存等分成与页相等大小的存储区。
当程序到内存中运行时,只将程序要运行的页面调入,将程序调入内存时会产生一个页面用于存储用户程序块的存储位置。

页式存储逻辑地址与物理地址

逻辑地址物理地址
根据题目所给的页面大小与逻辑地址计算相对应的块号/页帧号
根据题目所给的页面大小与逻辑地址计算逻辑地址的页内号

将逻辑地址转为物理地址时,首先要将逻辑地址中的页号与页内号分开,页号的物理地址就是对应的内存块号,而逻辑的页内地址就是物理的页内地址。物理地址:块号+页内地址
在这里插入图片描述
(1)物理地址应为十六进制:
已知可得:
页面大小为4k=212→页内地址12位
逻辑地址:5A29H→低位的12位为页内地址A29为业内地址,5为页号
页号5对应的页帧号为6,将求得的页帧号与页内地址连接起来即为物理地址:6A29H,因此选D
(2)应该淘汰的页号()页面
状态位值为1的页面在内粗一年中
由图中的可看出0,1,2,5页在内存中
由访问位值为1可以看出,0,2,5刚被访问过
因此应该首先淘汰没有被访问过的页面,所以要淘汰的页号:1,因此选B

段式存储

在这里插入图片描述
段式是按照逻辑结构来划分的,段的大小可能不一样
将一个作业分为若干个具有逻辑意义的段。
作业占据内存中若干分离的分区。
段系统中的虚地址是一个有序对(段号,段内位移)。
系统为每一个作业建立一个段表,其内容包括段号与内存起始地址的对应关系、段长和状态等。
状态指出这个段是否已调入内存,若已调入内存,则指出这个段的起始地址位置,状态同时也指出这个段的访问权限。
如果该段尚未调入内存,则产生缺段中断,以便装入所需要的段。

段页式存储

在这里插入图片描述程序按逻辑单位分成基本独立的段,再把每段分成固定大小的页。
内存则等分成与上述页大小相等的页。
程序对内存的调入或调出是按页进行的。

段页式存储逻辑地址与物理地址

在多道程序环境中,每道程序都有一张段表和一个作为用户标志的基号。
一个逻辑地址中,除了基号x、段号s和页号p外,还有一个页内地址d。
每个逻辑地址变换成实地址的过程如下:
根据基号找到相应的基址寄存器。
由该基址寄存器内容找到该程序对应的段表始地址。
再由段号找到该段表中相应行地址,该行地址中的内容为页表起始地址。
再由页号找到物理页号的地址(已是内存中的某页)它与页内地址拼接后即得物理地址。可见段页式管理中需要多次查表才能最终获得物理地址。该过程可简单地用一个式子来示意,即
在这里插入图片描述
其中,(x)表示基寄存器中地址为x的单元的内容,n为页内地址的位数。

快表

在这里插入图片描述
快表是放在cache存储器当中的,相对于页表和段表,它们是放在内存当中的,称之为慢表

页面置换算法

由于实际主存是小于虚存的,因此可能会发生内存中已满,但需要使用的页不在主存中这一情况。这时就需要进行置换,即将一些主存中的页淘汰到外存,腾出空间给要使用的页,这个过程也称为Swapping。淘汰哪个页面就由页面置换算法决定。
在这里插入图片描述

最优算法(OPT-optimal)

淘汰不用的或最远的将来才用的页。这是一种理想算法,不可能实现,只是用来作为衡量算法效率的参照物。

随机算法(RAND-random)

随机淘汰。这种算法开销小,但性能不稳定。

先进先出置换算法(FIFO-First Input First Output)

淘汰最早调入(也是驻留时间最长)的页。
在这里插入图片描述
从第二个置换的结果中我们发现,当内存的页面增多时,缺页的次数反倒增多了,因此可以判断它发生了抖动现象。
抖动(颠簸):进程频繁地从外存请求页面,处理页面调度的时间超过了程序的执行时间。

最近最少使用(LRU-least recently used )

淘汰离当前时刻最近的一段时间内使用得最少的页。
在这里插入图片描述

例题

在这里插入图片描述
题目已知:
没有使用快表,说明每次读取程序的块需要先在内存中查询表,查询表之后才能继续读取内存块,因此一个块需要进行两次内存的访问
共有6个块,因此会产生12次对内存的访问,因此选B
缺页中断次数:默认无论程序被分为几个块,都默认一次性调入
考试中指令会产生2次缺页中断,而指令只会产生一次缺页中断
有题目已知:swapA,B是16位的指令,A和B是两个16位操作数,而计算机是按字节编址的8位计算机系统,因此指令和两个操作数都跨两个页面。
而指令只会产生一次中断,而操作数跨几页就产生几次
因此可以看出共会产生5次缺页中断,因此选C

局部性原理

部性分为时间局部性和空间局部性。
时间局部性是指最近访问存储位置,很可能在不久的将来还要访问。
空间局部性是指存储访问有聚集的倾向,当访问了某个位置后,很可能也要访问其附近的位置。
根据空间局部性原理与时间局部性原理很有可能产生抖动现象。

控制抖动的方式

工作集理论

工作集是进程频繁访问的页面的集合。
工作集的大小依赖于工作集窗口(进程在定长时间间隔中涉及到的页面的集合)的大小,工作集理论指出,它的页面工作集应驻留内存中。

控制缺页率

操作系统规定缺页率的上下限。
当一个进程的缺页率高于上限时,表明该进程需要更大的内存空间,则分配较多的内存页面给它。
当进程的缺页率低于下限时,表明该进程占用的内存空间过大,可以适当地收回若干内存页面。

磁盘

磁盘是最常见的一种外部存储器,它是由1至多个圆形磁盘组成的。

术语概念

磁道:磁道是一组记录密度不同的同心圆。在一个磁盘中,从外到内,磁盘记录密度不断增加。同时,值得注意的是,0磁道是磁盘最外圈的磁道。
扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区。
柱面:一个磁盘中,多个记录面相同磁道组成柱面。如磁盘有9个记录面,则这9个记录面的0磁道可组成一个柱面。
注意:
硬盘就是磁盘的一种。
硬盘工作时,无论是否在进行数据的读取,其盘片都是不断旋转的状态。

常用公式

平均数据传输速率=每道扇区数×扇区容量×盘片转数。
存取时间=寻道时间×等待时间。
寻道时间:指磁头移动到磁道所需的时间。
等待时间:等待读写的扇区转到磁头下方所用的时间。

数据存储过程

在向磁盘记录一个文件时,应将文件尽可能记录在同一柱面上。
当一个文件超出一个磁道容量时,剩下的部分应存于其他盘面的同一编号的磁道上,即同一柱面的其他磁道上。
当一个柱面记录不下时,再记录到相邻柱面上。

记录磁盘的物理记录

参数:柱面号,磁头号(盘面号),扇区号。
磁盘机根据柱面号控制移动臂作径向运动,带动读写头到达所需的柱面。
从磁头号可确定哪一个磁头来读写数据,然后便等待访问的信息块旋转到读写头下时进行存取。
磁盘机实现这些功能的操作是:查找(将读写头定位到指定柱面并选择指定磁头)、搜索(指定磁头寻找访问的记录块)、读、写和控制等。
平均存取时间(Average Access Time)是反映磁盘数据操作速度的指标,单位是毫秒
(ms)。
包含以下三个时间段:
平均寻道时间(Seek Time):查找时间,为磁头移动到目标磁道所需的时间。对于固定磁头磁盘而言,无需移动磁头,只需选择目标磁道对应的磁头即可。
平均定位时间(Setting Time)
转动延迟(Rotational Latency)
其中后两个又统称为等待时间
等待时间:等待时间为等待读写的扇区旋转到磁头下方所用的时间。
一般选用磁道旋转一周所用时间的一半作为平均等待时间。
目前主流硬盘典型的平均寻道时间(Average Seek Time,AST)一般在4ms左右,而转速则有5400rpm、7200rpm、15000rpm等。

磁盘调度算法

先来先服务(FCFS):该算法根据进程请求访问磁盘的先后次序进行调度。
优点:简单且每个进程的请求都能依次得到处理。
缺点:算法由于未对寻道进行优化,致使平均寻道时间可能较长。
最短寻道时间优先(SSTF):其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。
扫描算法(SCAN):SCAN算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,SCAN算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。
循环扫描(CSCAN)算法:该算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

设备管理

数据传输控制方式

输入输出系统主要有五种方式与主机交换数据:程序控制方式、程序中断方式、DMA方式、通道方式、I/O处理机。
(1)程序控制方式:CPU直接利用I/O指令编程,实现数据的I/O。CPU不停地(定期地)查询I/O系统以确定该操作是否完成。由程序主动查询外设,完成主机与外设间的数据传送,方法简单,硬件开销小。
(2)程序中断方式:CPU利用中断方式完成数据的I/O,当I/O系统与外设交换数据时,CPU无需等待也不必去查询I/O的状态,当I/O系统完成了数据传输后则以中断信号通知CPU。与程序控制方式相比,中断方式因为CPU无需等待而提高了效率。
(3)DMA方式:使用DMA控制器(DMAC)来控制和管理数据传输。DMAC和CPU共享系统总线,并且具有独立访问存储器的能力。在进行DMA时,CPU放弃对系统总线的控制而由DMAC控制总线,实现外设与存储器之间进行数据交换。
(4)通道:通道是一种通过执行通道程序管理I/O操作的控制器,它使主机与I/O操作之间达到更高的并行程度。
(5)输入输出处理机(IOP):也称为外围处理机(PPU),它是一个专用处理机,也可以是一个通用的处理机,具有丰富的指令系统和完善的中断系统。与通道相比,IOP具有比较丰富的指令系统,结构接近于一般的处理机,有自己的局部存储器。

虚设备与SPOOLING技术

SPOOLING(Simultaneous Peripheral Operation On Line)又称为排队转储技术,意思是外部设备同时联机操作,又称为假脱机输入输出操作,采用一组程序或进程模拟一台I/O处理器
在这里插入图片描述

POOLING系统必须有高速、大容量并且可随机存取的外存(如磁盘或磁鼓)支持。

文件管理

树型目录结构

在计算机的文件系统中,一般采用树型目录结构。
在树型目录结构中,树的根结点为根目录,数据文件作为树叶,其他所有目录均作为树的结点。

概念

目录树:根目录隐含于一个硬盘的一个分区中,根目录在最顶层。它包含的子目录是一级子目录。每一个一级子目录又可以包含若干二级子目录,…。
路径:从树根开始,把全部目录文件名与数据文件名“\”(Windows系统)连接起来。在树型目录结构中,从根目录到任何数据文件之间,只有一条惟一的通路,可以解决文件重名的问题。
绝对路径:树根开始的路径到所要访问的数据文件,通常第一个字符是“/”(UNIX/Linux系统)或者是盘符(Windows系统)。
相对路径:当前目录开始到所要访问的数据文件。
目录是指当前路径的上一层目录。每个目录下都有代表当前目录的“.”文件和代表当前目录父目录的“…”文件,相对路径名一般就是从“…”开始的。
从当前目录返回上一级目录:…/

位示图

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。
该方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位仅对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。假如系统中字长为32位,有4096个物理块,那么在位示图中的第1个字对应文件存储器上的0、1、2…31号物理块;第2个字对应文件存储器上的32、33、34、…、63号物理块;第32字对应文件存储器上的4064、4065、…、 4095号物理块。这样位示图的大小为32字。
在这里插入图片描述

索引文件结构

在这里插入图片描述
索引节点一般为13个,编号由0~12
若索引节点中都是直接索引,假设每个索引节点可以存储4k的字节,那么13个所有节点最多只能存放4k×13=52k的数据
一级间接索引:该索引节点存放的是下一级索引的地址,假设每个地址占4个字节
4k÷4=1024,该索引节点对应的物理盘块存储1024个物理盘块的地址,对应的那些物理盘块才存索引内容
一级间接索引存储的容量空间:4k×1024。

优点缺点
适用于顺序存取随机存取索引表增加了存储空间的开销
在存取文件时需要访问两次磁盘,一次是访问索引表,一次是根据索引表提供的物理块号访问文件信息。

为了提高效率,一种改进的方法是,在对某个文件进行操作之前,预先把索引表调入内存。这样,文件的存取就能直接从在内存的索引表中确定相应的物理块号,从而只需要访问一次磁盘。
在这里插入图片描述

文件和树型目录结构

在这里插入图片描述
绝对路径最前面有一个’/'符号

空闲存储空间的管理

在这里插入图片描述
位示图:
1表示的区域已被占用
0表示的区域还是空闲

例题

在这里插入图片描述
(1)
由于物理号是从0开始计算的,因此:(4195+1)÷32=131.125
4195+1:这是因为它是从0开始编号的,因此编号为4195的物理块,实际上是第4196个物理块。
由于字是从1开始计算的,取整为:132
因此答案为132,选择D
(2)
位置是从第0个位置开始计算在这里插入图片描述
因此选择B
细节:第几个字的下标是从1开始计算的,多少位的下标是从0开始计算的。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值