软件设计师考试-操作系统考点归纳和笔记总结

1. 概述

在这里插入图片描述

操作系统的功能:

  • 进程管理
  • 存储管理
  • 文件管理
  • 作业管理
  • 设备管理

2. 进程管理

在这里插入图片描述

2.1 进程的状态

进程的三大状态:运行、就绪、等待
在这里插入图片描述

进程的五态模型:静止就绪、静止阻塞、活跃就绪、活跃阻塞、运行。

在这里插入图片描述

2.2 前趋图

前趋图的定义:
前趋图是为了描述一个程序的各部分间的依赖关系,或者是一个大的计算的各个子任务间的因果关系的图示。前趋图中必须不存在循环。

在这里插入图片描述

2.3 进程的同步和互斥

在这里插入图片描述
在这里插入图片描述

2.4 PV操作

  • 临界资源:各个进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等。
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一个特殊的变量

P是荷兰语的Passeren,V是荷兰语的Verhoog。P操作为申请资源,V操作为释放资源操作。

在这里插入图片描述

PV操作的示意图:
在这里插入图片描述
P操作,如果S<0,则进入到阻塞进程队列;V操作如果S<=0,表示阻塞进程队列仍然有进程阻塞,则唤醒阻塞进程。

如使用PV操作生产者、消费者问题
在这里插入图片描述
PV操作练习题:

在这里插入图片描述
答案:AC

2.5 PV操作与前趋图

在这里插入图片描述
v是释放资源开始执行,p是锁死资源挂起等待,前驱图箭头指向是v–>p的关系?

在这里插入图片描述
标信号量从上到下,从左到右
答案:A,C,A

2.6 死锁问题

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。
在这里插入图片描述
答案:k*(n-1)+1,k=进程数,n为系统资源数。(至少让一个进程执行完)

死锁产生条件

在这里插入图片描述

  1. 互斥条件:该资源任意⼀个时刻只由⼀个线程占⽤。
  2. 请求与保持条件:⼀个进程因请求资源⽽阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:线程已获得的资源在末使⽤完之前不能被其他线程强⾏剥夺,只有⾃⼰使⽤完毕
    后才释放资源。
  4. 循环等待条件:若⼲进程之间形成⼀种头尾相接的循环等待资源关系。

死锁的预防

为了避免死锁,我们只要破坏产⽣死锁的四个条件中的其中⼀个就可以了。现在我们来挨个分析⼀下:

  1. 破坏互斥条件 :这个条件我们没有办法破坏,因为我们⽤锁本来就是想让他们互斥的(临界
    资源需要互斥访问)。
  2. 破坏请求与保持条件 :⼀次性申请所有的资源。
  3. 破坏不剥夺条件 :占⽤部分资源的线程进⼀步申请其他资源时,如果申请不到,可以主动释
    放它占有的资源。
  4. 破坏循环等待条件 :靠按序申请资源来预防。按某⼀顺序申请资源,释放资源则反序释放。
    破坏循环等待条件。

死锁的避免

避免死锁主要有两个方法:有序资源分配法和银行家算法
(1)有序资源分配法

有序资源分配法是指对系统中所有资源顺序编号,规定任何一个进程申请两个以上资源时,按资源编号顺序申请,只有在得到编号小的资源之后,才能再申请编号大的资源。资源有序分配法破坏了死锁的四个必要条件之一的循环等待条件,达到预防死锁的目的。

(2) 银行家算法
分配资源的原则,银行家算法的定义:

  1. 当一个进程对资源的最大需求量不超过系统中的资源数 时可以接纳该进程
  2. 进程可以分期请求资源,但请求的总数不能超过最大需求量
  3. 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配。但总能使进程在有限的时间里得到资源。

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

在这里插入图片描述
答案:B

2.7 进程控制块PCB

进程控制块PCB的组织方式有:

  1. 线性表方式:不论进程的状态如何,将所有的PCB来连续地存放在内存的系统区,这种方式适用于系统中进程数目不多的情况。
  2. 索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等。
  3. 链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等。

3. 存储管理

3.1 分区存储组织

在这里插入图片描述

3.2 页式存储

页式存储:将程序与内存划分为同样大小的块,以页为单位将程序调入内存。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.3 段式存储

段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
在这里插入图片描述

3.4 段页式存储

段页式存储:段式与页式的综合体。先分段,再分页。1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段的大小不同。
在这里插入图片描述

3.5 快表

快表是一种特殊的高速缓冲存储器(Cache),内容是页表中的一部分或全部内容。 在操作系统中引入快表是为了加快地址映射速度。

在虚拟页式存储管理中设置了快表,作为当前进程页表的Cache。通常快表处于MMU中。
在这里插入图片描述
地址转换流程

  1. 按照逻辑地址中的页号查快表
  2. 若该页已存在快表中,则由页架号和单元号形成绝对地址
  3. 若该页不在快表中,则再查主存页表,与单元号形成绝对地址,同时将该页登记到快表中
  4. 当快表填满后,又要登记新页时,则需要按照一定替换策略淘汰一个旧的登记项 [2]

3.6 页面淘汰(置换)算法

更详细的图文解释:https://blog.csdn.net/m0_60001307/article/details/118554410

最优(Optimal,OPT)算法

每次选择淘汰的页面将是以后永不使用或者最长时间内不在被访问的页面。这样可以保证最低的缺页率。

先进先出(FIFO)算法

FIFO算法是最简单的页面置换算法。顾名思义,FIFO每次淘汰的页面是最早进入内存的页面。FIFO的实现方法是把调入内存的页面按先后顺序放入队列中,当需要置换页面时,选择队头的页面即可。
第二个图出现了抖动现象:
在这里插入图片描述

最近最少使用(LRU)算法

最近最少使用(LRU)算法不会“抖动”,LRU的理论依据是“局部性原理”
练习题:
在这里插入图片描述
练习题:
在这里插入图片描述

3.7 磁盘

在这里插入图片描述

磁盘调度分为移臂调度和旋转调度,并且一般是先进行移臂调度,然后再进行旋转调度。

磁盘调度算法

例:假定某磁盘共有200个柱面,编号为0-199,如果在为访问143号柱面的请求者服务后,当前正在为访问125号柱面的请求服务,同时有若干请求者在等待服务,它们每次要访问的柱面号为 86,147,91,177,94,150,102,175,130

(1)先来先服务算法

这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。

先来先服务 (125)86.147.91.177.94.150.102.175.130
(2)最短寻道时间优先

该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

最短寻道时间优先(125)130.147.150.175.177.102.94.91.86

(3)扫描算法

扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

电梯调度(125)102.94.91.86.130.147.150.175.177
(4)循环扫描算法

循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

循环扫描 (125)130.147.150.175.177.86.91.94.102

最短移臂调度算法

读取磁盘数据时间计算

在这里插入图片描述

4. 作业管理

4.1 作业状态

在这里插入图片描述

4.2 作业调度算法

作业调度算法常见的有以下几种:

  • 先来先服务法
  • 时间片轮转法
  • 短作业优先法
  • 最高优先权优先法
  • 高响应比优先法

详见:https://blog.csdn.net/jianbai_/article/details/91344424

响应比=作业等待时间/执行时间

5. 文件管理

5.1 索引文件结构

索引分为直接地址索引、一级间接索引、二级间接索引、三级间接索引。

在这里插入图片描述

练习题:
1024/4=256

在这里插入图片描述
答案:C,D

5.2 文件和树形目录结构

文件采用树形的目录结构

文件属性:只读文件属性、存档属性、系统文件、隐藏文件

文件名的组成:驱动器号、路径、主文件号、拓展名

绝对路径:是从盘符开始的路径

全文件名:应该包括盘符及从根目录开始的路径名

相对路径:是从当前路径开始的路径
在这里插入图片描述

5.3 空闲存储空间的管理

空闲区表法(空闲文件目录)

空闲表法属于连续分配方式。它与内存管理中的动态分区分配方式雷同。
  将外存空间上一个连续未分配区域称为“空闲区”。操作系统为磁盘外存上所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表包含“序号,第一空闲盘块号,空闲盘块数”等信息。它适用于连续文件结构。

它为每个文件分配一个连续的存储空间。系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项

空闲链表法

是将所有的空闲盘区拉成一条空闲链。根据构成链的基本元素的不同,可有两种链表方式:空闲盘块链、空闲盘区链。
  空闲盘块链
  它是将磁盘上的所有空闲存储空间,以盘块为基本元素拉成一条链。优点是用于分配和回收一个盘块的过程非常简单;缺点是空闲盘块链可能很长。
  空闲盘区链
  这是将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在每个盘区上除了含有用于指示下一个空闲盘区的指针外,还应标有指明本盘区大小(盘块数)的信息。这方法分配和回收过程较复杂,但空闲盘区链较短。

位示图法

本方法利用二进制的一位来表示磁盘中一个盘块的使用情况,磁盘上所有的盘块都有与之对应的一个二进制位。当其值为0时,表示对应的盘块空闲,当其值为1时,表示对应的盘块已经分配。

练习题:
在这里插入图片描述
在这里插入图片描述

成组链接法

闲表法和空闲链表由于空闲表太长而不适合大型文件系统的使用。成组链接法是两种方法相结合的一种管理方法,兼备了两种方法的优点而克服了两种方法的缺点。其大致的思想是:把空闲的n个空闲扇区的地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一顺序空闲扇区的地址,以此类推,直至所有空闲扇区都予以链接

详见:https://blog.csdn.net/tongyuehong137/article/details/44598893

6. 设备管理

6.1 I/O管理软件

I/O管理软件具体层次从上往下分别为用户级I/O层、设备无关I/O层、设备驱动程序、中断处理程序、硬件。

用户级I/O:发出I/O调用
设备无关I/O层:设备名解析、阻塞进程、分配缓冲区
设备驱动程序:设置寄存器,检查设备状态。
中断处理程序:I/O完成后唤醒设备驱动程序
硬件:完成具体的I/O操作。

6.2 数据传输控制方式

在这里插入图片描述
重点DMA方式:

在这里插入图片描述

6.3 虚设备与SPOOLING技术

在操作系统中,虚拟设备通常采用Spooling技术,利用磁盘设备来提供虚拟设备。Spooling技术实际上是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的一种技术,也是一种速度匹配技术。Spooling系统是由“预输入程序”、“缓输出程序”和“并管理程序”以及输入和输出并组成的。

在这里插入图片描述

7. 微内核操作系统

在这里插入图片描述

特殊的操作系统

实时操作系统是保证在一定时间限制内完成特定功能的操作系统。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

猜你喜欢

转载自blog.csdn.net/huangjhai/article/details/115877033