第二章:操作系统基本原理(软件设计师备考)


第一节:操作系统概述

操作系统所具备的功能

在这里插入图片描述

操作系统具备的管理职能以及细化知识点:

在这里插入图片描述

第二节:进程管理

1. 进程的状态

<1> 三态模型

在多道程序系统中,进程在CPU上交替运行,状态也在不断地发生变化,因此进程一般具有三种基本状态:运行、就绪和阻塞。

在这里插入图片描述

  1. 运行:当一个进程在CPU上运行时,则称该进程处于运行状态。
  2. 就绪:一个进程获得了除CPU外的一切所需资源,一旦得到CPU资源即可运行,则称此进程处于就绪状态。
  3. 阻塞:阻塞也称等待或睡眠状态,一个进程因正在等待某一事件发生而暂时停止运行,这时即使把CPU资源分给该进程也无法运行,故称该进程处于阻塞状态。

<2> 五态模型

事实上,对于一个实际的系统,进程的状态及其转换更复杂。例如五态模型。

在这里插入图片描述

  1. 活跃就绪:活跃就绪是指进程处于,在主存内并且可被调度的状态。
  2. 静止就绪:静止就绪是指就绪进程被对换到辅存时的状态,它是不能被直接调度的状态。
  3. 活跃阻塞:活跃阻塞是指进程在主存,一旦等待的事件产生便进入活跃就绪状态。
  4. 静止阻塞:静止阻塞是指阻塞进程对换到辅存时的状态,一旦等待的事件产生便进入静止就绪状态。
  5. 挂起状态:由于进程的不断创建,系统资源特别是主存资源已经不能满足进程运行的要求。这时,就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以平衡系统负载。或者是系统出现故障,或者是用户调试程序,也可能需要将进程挂起检查问题。

2. 前趋图

前趋图是为了描述一个程序的各部分间的依赖关系,或者是一个大的计算的各个子任务间的因果关系的图示。

在这里插入图片描述

3. 进程的同步与互斥

<1> 互斥

进程的互斥是指系统中多个进程因争用临界资源(一次只能供一个进程使用的资源)而互斥执行。

在这里插入图片描述

<2> 同步

在计算机系统中,多个进程可以并发执行,每个进程都以各自独立的、不可预知的速度向前推进,但是需要在某些确定点上协调相互合作进程间的工作。

在这里插入图片描述

4. PV操作

<1> 相关概念

  1. 临界资源:有些资源一次只能供一个进程使用,称为临界资源。如,打印机、磁带机等。

  2. 临界区:是进程中对临界资源实施操作的那段程序。

  3. 信号量:信号量是一种特殊的整型变量,根据控制对象的不同被赋予不同的值。

  4. P操作与V操作:

在这里插入图片描述

<2> 例题

例题一:

在这里插入图片描述

例题二:

在这里插入图片描述

答:A、C

5. PV操作与前趋图

在这里插入图片描述

解题技巧:

遇到上述这种图,根据箭头走向得出答案。箭头起点是V操作,终点是P操作。

例:

在这里插入图片描述

(1)C、(2)A、(3)A

6. 死锁问题

进程管理是操作系统的核心,但如果设计不当,就会出现死锁问题。

死锁:

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

<1> 例题

例题:

在这里插入图片描述

解题技巧:

有k个进程,每个进程需要n个资源。如果不可能发生死锁,则系统至少有K * (n-1)+1个资源。

<2> 死锁的预防和避免

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

  1. 互斥:可以同时使用资源,则不存在死锁问题
  2. 保持和等待:指这个进程会保持自己的资源,等待其他进程释放更多的资源给自己
  3. 不剥夺:系统不会将某个进程的资源剥夺掉,然后分给其他进程
  4. 环路等待:A等待B释放资源,B等待C释放资源,C又等待A释放资源

解决死锁问题有两种方法:死锁的预防、死锁的避免。

死锁的预防:

通过打破死锁产生的四个必要条件进行预防。

死锁的避免:

  1. 有序的资源分配(银行家算法)

<3> 银行家算法

银行家算法(实质为分配资源的原则):

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

例题:

在这里插入图片描述

在这里插入图片描述

解题技巧:通过选项验证。

第三节:存储管理

1. 分区存储

在这里插入图片描述

2. 页式存储

做法:

将用户程序分成等分大小的页。例如将下图中的用户程序等分为4k一块的用户区域,每一个4k程序称为一个页,把内存当中的存储区也分成4k一块。如果要调入用户程序到内存中运行,不再是将整个程序一次性调入内存,而是需要运行哪些程序块,就将哪些页调入内存。

这样的做法需要一张页表,用来记录用户程序的页和内存中的块的对应关系。

在这里插入图片描述

优点:

内存利用率很高,内存碎片少,分配及管理简单。

缺点:

增加了系统开销(需要查找页表),可能产生抖动现象。

逻辑地址和物理地址之间的转换:

高级程序语言使用逻辑地址;运行状态、内存中使用物理地址。

逻辑地址=页号+页内地址 物理地址=页帧号(块号)+页内地址

例题:

在这里插入图片描述

解题过程:

  1. 要求物理地址,先要把逻辑地址中的页号和页内地址分开

    因为4K=212,故一个页的页内地址为12位,高于12位的部分为页号。故5A29H中,A29H为页内地址,5为页号。

  2. 物理地址=页帧号(块号)+页内地址

    物理地址为6A29H。

  3. 淘汰页号,只能淘汰在内存中的页面,故从页号为0、1、2、5中淘汰页面。被访问过的页面不能被淘汰,只能淘汰未访问的页面,故淘汰1号页面。

答案:D、B

3. 段式存储

段式存储,是指把一个程序分成若干个段进行存储(例如每个函数分为一段),每个段都是一个逻辑实体,它的产生是与程序的模块化直接有关的。

段表:

在这里插入图片描述

基址:该段在内存的起始地址。

优点:

多道内存共享内存,各段程序修改互不影响。

缺点:

内存利用率低,内存碎片浪费大。

4. 段页式存储

结合了段式和页式存储,先分段再分页。

优点:

空间浪费小、存储共享容易、存储保护容易、能动态链接

缺点:

由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。

快表:

快表是一块小容量的相联存储器,由高速缓存器组成。速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。

5. 页面置换算法

<1> 最优算法:

在整个事情发生之后(已经知道访问的页面顺序),根据页面序列,算出什么时间淘汰哪个页面就可以取得最高的效率性能。在不同的应用场景中,最优算法各不相同。在实际应用中,往往不能事先知道页面序列。最优算法往往需要跟其他的算法方案对比。

<2> 随机算法:

随机淘汰一个页面,性能不稳定。

<3> 先进先出算法(FIFO):

淘汰最先进入内存的页面。有可能产生“抖动”。

抖动:分配了更多资源给一个进程,却使得进程的效率更低(造成缺页次数更多)。指如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。

在这里插入图片描述

<4> 最近最少使用算法(LRU):

刚刚被访问的页面不会被淘汰,即在保证最近使用的页面不被中断的情况下,将最少使用的页面淘汰。不会产生抖动,给进程分配的资源越多,进程表现的性能更好。

在这里插入图片描述

6. 例题

在这里插入图片描述

解题思路:

没有使用快表说明,每读一次内存块,需要现在内存中查表,然后再读取内存块。所以每访问一次内存块需要访问两次内存,一共6个内存块,故需要访问12次内存。

默认swap指令,无论占用多少内存块,都会一次性调入内存,故指令只会产生一次缺页。操作数一半在前一页,一半在后一页,则会产生两次缺页。故一共产生5次缺页中断。

答案:B、C

第四节:文件管理

1. 索引文件结构

在这里插入图片描述

一般的索引文件结构有13个索引结点(0~12)。

提出索引文件结构是为了扩展文件的存储量。

索引文件结构规定:

  1. 结点0~9对应直接索引,即索引结点的地址直接指向物理盘块,物理盘块存着索引文件的内容。

    假设一个物理盘块可以存储4K内容的文件,则前十个索引结点指向的物理盘块一共可以存储40K文件。

  2. 结点10指向的物理盘块不再直接存储索引文件的内容,而是存储指向不同物理盘块的地址(一级间接索引)。

    假设每个地址占4B,则结点10指向的物理盘块可以存储1024个地址,每个地址又对应一个物理盘块,故一级间接索引可以存储的容量为1024*4K的索引文件。

  3. 结点11为二级间接索引。

  4. 结点12为三级间接索引。

注意:间接次数越多,访问的效率越低。

例题:

在这里插入图片描述

解题思路:逻辑块好按顺序排列,故5号对应物理块号为58;一块磁盘数据块1KB,每个地址项大小为4字节,故一个磁盘数据块可以存放256个地址,故261号对应物理块号为187。

答案:C、D

2. 文件和树型目录结构

在这里插入图片描述

3. 空闲存储空间的管理

在磁盘中会有大量的空间,我们需要把空闲的空间管理起来,以便在某一个文件申请相应的空间的时候,能够有依据地分配相应地空间。

  1. 空闲区表法

    我们可以用一个表来记录哪些地方是空闲的,以便把空闲空间管理起来。

  2. 空闲链表法

    将空闲区链接起来,生成链表。在需要分配内存时,在链表中划出相应的空间。

  3. 位示图法

    将存储空间分成很多的物理块,用位示图法可以直观表达空闲物理块和非空闲物理块。

在这里插入图片描述

例题:

在这里插入图片描述

解题思路:

字长为32bit,4195号物理块为第132(4196/32=131.125)个字。

131*32=4192,故4191号物理块是第131个字的最后一位,4192号是第132个字中的第0位置,4195是第3位置。占用物理块,应将状态置为1。

答案:D、B

  1. 成组链接法

第五节:设备管理

1. 数据传输控制方式

数据传输控制方式是指内存和外设之间的数据传输控制问题,解决方式包括:程序控制方式;程序中断方式;DMA方式;通道;输入输出处理机。

  1. 程序控制方式

    程序控制方式又被称为程序查询方式,这种方式是最低级的也是CPU使用介入的一种方式。CPU通过执行程序查询外设的状态,判断外设是否准备好接收数据或准备好了向CPU输入的数据。根据这种状态,CPU有针对性地为外设的输入输出服务。

  2. 程序中断方式

    大部分与程序控制方式相同,但相较于程序控制方式,由于增加了中断方式,主动性更强,即:如果外设完成了数据的传输等操作,外设会发出中断指令,效率比程序控制方式更高。

  3. DMA方式

    DMA方式也称直接存储器存取方式。这种方式,会有专门的DMA控制器,只要是外设和内存之间的数据交换过程,就由这个控制器进行管控了,CPU只需要在开头的时候做一些介入,如初始化等操作等,但整个过程只有DMA监视器来监管。数据交换完成之后再由CPU接管,做后续的工作。

2. 虚设备与SPOOLING技术

SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,他的核心思想是以联机的方式得到脱机的效果。低速设备经通道和外设在主机内存的缓冲存储器与高速设备相联,该高速设备通常是辅存。为了存放从低速设备上输入的信息,或者存放将要输出到低速设备上的信息(来自内存),在辅存分别开辟一固定区域,叫“输出井”(对输出),或者“输入井”(对输入)。简单来说就是在内存中形成缓冲区,在高级设备形成输出井和输入井,传递的时候,从低速设备传入缓冲区,再传到高速设备的输入井,再从高速设备的输出井,传到缓冲区,再传到低速设备。

举例:

四个人远程连接一台打印机,而这台打印机在同一段时间内只能让一个用户使用,若一个用户正在使用该打印机,另一名用户试图使用该打印机时就会提示该打印机被占用。为了消除用户的“联机”等待时间,采用了SPOOLING技术:给打印机创建一个缓存区,每一个用户在打印时都会进入缓存区,而从缓存区到真正打印则需要挨个排队,即打印机在打印时不再排斥其他用户的打印操作,而是将其缓存起来,在将当前操作完成后立即进行第二个操作,这样做不仅使得用户的操作界面变得更为友好,也极大的提高了打印机的打印效率。

第六节:微内核操作系统

微内核操作系统,顾名思义就是把内核尽可能做到最小的操作系统。

微内核系统更加可靠、安全和稳定。操作系统作为核心的系统软件,如果操作系统出现故障,就会影响到整个系统的运行。如果把操作系统的内核做得小一些,就会降低核心系统出现故障的概率。只有微内核出现问题,才会影响到整个系统,而微内核以外的系统出现故障,只需要重启微内核以外的系统,而不用重启整个系统。

在这里插入图片描述

在这里插入图片描述


参考视频:https://www.bilibili.com/video/BV1rW411j7e7?p=23

参考文章:百度百科相关文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值