软件设计师笔记--02操作系统

历年软件设计师软考中级全部考试资料,获取方式见:

【7分!】

5. 操作系统基本原理

5.1 概述

• 前趋图(precedence diagram)是一种用于表达任务或活动之间关系的图形工具,通常应用于项目管理中。前趋图中每个节点代表一个任务或活动,节点之间的箭头表示它们之间的先后关系;
• 位示图(bitmap)是一种存储位图数据的数据结构,通常用于计算机图形学和操作系统中。它将图像分成一个个小块,每个小块对应一个二进制位,表示该位置是否有颜色或像素点;

【作业管理和设备管理考的特别少!】
线程共享的内容包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录、进程用户ID与进程组ID 。
线程独有的内容包括:线程ID、寄存器组的值、线程的堆栈、错误返回码、线程的信号屏蔽码。

5.2 进程管理 - 进程状态

• 只有就绪状态才能进入运行状态

【进程资源图!!】

5.3 进程管理 - 前趋图

【常考!和PV操作结合】

5.4 进程管理-同步、互斥

【PV操作的前提】
• 同步是指协调多个程序或线程之间的执行顺序和时序,以保证它们能够正确地协同工作; 【有速度匹配问题】
• 互斥是为了防止多个进程或线程同时访问某个共享资源而引入的一种机制,只有获得了互斥锁(Mutex)才能访问该资源,从而避免竞态条件(Race Condition)等问题; 【千军万马过独木桥】

【分析清楚同步和互斥分别在哪里?】

5.6 进程管理-PV操作

【最难!!应用灵活】

P操作,信号量减s-1,若s<0,则阻塞该进程,放到队列中;
若s>=0,则继续执行该进程。
V操作,信号量减s+1,若s<=0,则从队列中唤醒一个进程,继续执行;
若s>0,则继续执行该进程。

• 临界区是代码段;
• 信号量是PV操作中的变量;
• 缓存溢出是需要PV操作解决;
存在的问题:
1、生产者首先生产第一个产品顺利放入缓冲区,生产第二个产品,无法放入单缓冲区 【互斥】
2、消费者首先消费产品,但是缓冲区中没有产品
【生产者放两个产品】
【s1是缓冲区的剩余空间大小,s2是缓冲区中存在的产品个数】

• 前提生产了一个产品,S1初始值 为 1 ,S2 初始值0;
• 通过P(S1)将 S1 - 1 得到 S1为 0;
• 再通过V(S2) 将 S2 + 1 得到 S2 为1;
【消费者首先消费产品】

• P 操作进行阻塞(小于0),V 不能进行阻塞(大于0);
• P操作会先检查信号量是否可用(小于 0 就阻塞),如果可用就使用它,否则就等待;
• V操作(也称为signal操作)会增加一个信号量的值,同时唤醒可能正在该信号量等待队列中等待的进程;

【PV操作成对存在!】
S1表示收银员是否在给人结账,s2表示剩余缓冲区的个数。
a1 进行 V(S1)操作请求付款操作,b1进行P(S1)操作阻塞付款流程,a2进行P(S2)操作等待收营员收费等操作,在b2进行 V(S2)操作收营员消磁等操作;
信号量初值等于资源数量,即为2,由于同时最多有2个进程访问打印机,其余进程必须处理等待状态,故S的最小值为-(n-2)。

进程管理-PV操作与前趋图
【一定要掌握!】

【无缓冲区】

【标序号找规律,方法高效!!】
• 箭头 结束位置为 P操作,箭头开始位置为 V 操作;
• a和b 分别为 V(S1)和V(S2)进行操作,c 和 d 分别进行 (P(S1), P(S2))和 (V(S3),V(S4)) ,e和f 进行 P(S3)和P(S4)

5.7进程管理-死锁问题

1、最少多少个资源,不会发生死锁?
k 表示进程个数,比如 3个;n表示每个进程需要多少个系统资源;得出的公式可以不造成死锁如下:

= k x (n - 1) + 1;
就是每个进程都缺一个资源,再加入一个资源,就不会造成死锁;
2、如何避免死锁?
• 死锁必要条件【缺一个不会发生死锁】: 互斥、保持和等待、不剥夺、环路等待;

  1. 互斥:某个资源在一段时间内只能由一个进程占有。
  2. 占有且申请:一个进程至少占有一个资源,并在等待另一个被其它进程占用的资源;
  3. 不可抢占:已经分配给一个进程的资源不能被强制性抢占,只能由进程完成任务之后自愿释放;
  4. 循环等待:若干进程之间形成一种头尾相接的环形等待资源关系,该环路中的每个进程都在等待下一个进程所占有的资源。

1、死锁预防:打破四大条件【考的不多!】
2、死锁避免
有序资源分配法:资源利用率
银行家算法:灵活有效 【常考】
银行家算法

• 分别计算出剩余多少个资源:2 、1 、 0;
• 优先执行可以继续执行,并执行完成后会释放资源;
• 所以 根据 剩余资源,P2 优先执行后会释放,之后就是P4进行执行并释放,类似这样推导结果对比出;
• B

5.8 存储管理-分区存储组织

【分区管理!】
• 首次适应算法:第一次遇到的空间,能访问的并能容纳的空间切出;
• 最佳适应算法:最小的空间能用的,以通过链接方式从小到大,取空闲最小的空间; 【内存碎块比较多!】
• 最差适应法: 从小到大排列,取最大的空间能用的;
• 循环首次适应法:按顺序链接,循环遍历存放; 【均匀】

【了解即可!】

5.9 存储管理 - 页式存储

【1、页式存储中逻辑地址和物理地址的转化;2、页式存储、段式存储、段页式存储的特点和运作机制?】
• 将用户程序等分,比如4K一页,内存也分成多块,页表记录内存块映射关系;
• 逻辑地址和物理地址的页内地址是一致;页号和块号不定相同;
• 逻辑地址的页号 通过页表查到对应页号的块号;

逻辑地址:页号 页内地址
物理地址:块号 页内地址
练习题

• 页面大小为 4K = 2^12,说明一个页的页内地址是12位;高于12位是页号;
• 二进制转为 十六进制,是每4位按权展开计算得到,所以页面内地址是A29;页号就是 5,对应表中的物理号(页帧号)的6;(1)答案:6A29H;

• 淘汰页号就要淘汰在内存中的页,因为3和4 都不在内存中,访问位为1 是需要访问的,所以页号为1 的访问位为0,淘汰页就是 1号页;
• 系统应该首先淘汰未被访问的页面,因为根据程序的局部性原理,最近未被访问的页面下次被访问的概率更小;如果页面最近都被访问过,应该先淘汰未修改过的页面,因为未修改过的页面内存和辅存一致,故淘汰时无需写回辅存,使系统页面置换代价小。

5.10 存储管理-段式存储组织

• 把程序和数据划分成若干个逻辑段,每个段拥有独立的地址空间,相互之间可以保持隔离; 【段的长度不同!】
• 按逻辑结构划分段,段可长可短(不像页那样固定),便于共享;
• 段表存:段号、段长、基址;

5.11存储管理-段页式存储组织

• 是页式和段式的综合;先分段再分页。
段页式系统的基本原理是先将整个主存划分成大小相等的存储块(页框),将用户程序按程序的逻辑关系分为若干个段,并为每个段赋予一个段名,再将每个段划分成若干页,以页框为单位离散分配。在段页式系统中,其地址结构由段号、段内页号和页内地址三部分组成。页的大小是固定的,而段的大小是不固定的。

5.12 存储管理-快表

• 小容量相联存储器、高速缓存器、速度快、存放当前访问最频繁的少数活动页面页号;
• 快表是一种常见的缓存机制,可以将常用的数据放在快表中,以加速对这些数据的访问;
• 如果系统中没有使用快表,则每次访问数据时都需要从主存(或磁盘)中读取数据,这会导致访问速度变慢。
【慢表在内存中,块表在高速缓存中!】

5.13 存储管理 - 页面置换算法

广泛应用在分层存储管理体系中。

• 抖动:加入资源页后,缺页数量反而增加。
• 如果内存页满了,淘汰就会淘汰最先进入的页号;
• 当把内存页数从3达到4的时候,如下列表计算出缺页数是10 大于之前的内存页数3,就是为抖动;
试题一

• 总共只能容纳内存空间为3个页,访问页号2的时候发现空间不足,需要淘汰,FIFO 就会淘汰最先进入,LRU会淘汰不是最近使用的5号页;
试题二

• 当需要访问一个新的内存地址时,首先需要将该地址所在的页加载到主存中,这个过程通常称为“缺页”。当页面被加载到主存中后,如果该页的数据也在主存中,则可以直接从主存中读取数据,访问次数为1次;否则需要再次从磁盘中读取数据,并将其放入主存中,此时访问次数为2次;
• 没有使用快表,说明每次读内存的块,都需要在内存上查表然后再读取相应的内存块,所以每次都需要2次内存的访问,总共有6个块,需要访问 12 次内存。
• swap指令是需要存两个块,指令只会产生1次缺页中断;而数据A和B是都占用2次缺页,所以总共位 5次缺页中断。【指令产生1次中断,数据产生2次中断!】

磁盘格式化容量=面数x每面磁道数x每道扇区数x每扇字节数
非格式化容量=面数x每面磁道数x内圆周长x位密度

当访问的页面不在内存时,系统应该首先淘汰未被访问的页面,因为根据程序的局部性原理最近未被访问的页面下次被访问的概率更小;
如果页面最近都被访问过,应该先淘汰未修改过的页面。因为未修改过的页面内存与辅存一致,故淘汰时无须写回辅存,使系统页面置换代价小。

5.14 文件管理 - 索引结构

【一般是13个节点!】

• 索引文件结构- 直接索引,比如每个块4K,总共13个块 4x13 = 52K。
• 10号盘块一级间接索引,每个物理盘块是4K,而10号中每个地址为4个字节,总共可以存4K/4 = 1024个地址;每个地址指向一个物理盘块,这个物理地址才存索引文件的内容;
• 一级间接索引可以存的大小为 4K x 1024 容量;
• 11号盘块二级间接索引,节点地址对应的盘块存地址,地址对应下一级盘块还存地址,最后才指向物理盘块,间接的级别越多访问效率越低;
• 二级间接索引可以存的大小为 4K x 1024 x 1024容量。
试题一

• 逻辑块号一般是从0 开始;
• 逻辑块5号为一级间接地址索引,5号块指向的物理盘块号就是58;
• 一个物理盘块是1K大小,一个地址是4字节,每个盘块可以存 1K / 4 = 256个地址;而逻辑号5到261号大小就是 261 - 5 = 256 个地址,所以只能是下一个盘块的第一个187;
• 101号物理块是iaddr[7]其采用的是二级间接地址索引;
【难!!】

5.15 文件和树型目录结构

【绝对路径和相对路径的概念,注意写法!!】

5.16 空闲存储空间的管理

• 四种方法都是操作系统中管理空闲内存块的方式;

  1. 空闲区表法:将内存分为多个大小相等的区域(通常称为内存块),并将每个内存块标记为“已使用”或“未使用”。空闲区表则记录所有未使用的内存块,包括每块内存的起始地址和长度等信息。
  2. 空闲链表法:类似于空闲区表法,但将所有未使用的内存块用链表连接起来,链表中每个节点表示一个未使用的内存块,其中包括该内存块的起始地址和长度等信息。
  3. 位示图法【常考,应用广泛】:将整个内存分为多个大小相等的块(通常为字节或位),并为每个块分配一个二进制位。如果一个内存块未被使用,则对应的二进制位为0,否则为1。通过检查位示图即可确定哪些内存块未被占用。1 是占用 0 未用。
  4. 成组链接法:将内存块按照一定的大小分为多个组,并将同一组内的所有块用链表连接起来。每个内存块的前几个字节用于记录所属的组号、下一块地址等信息。
    这些方法各有优缺点例如,空闲区表法需要维护一个表格,占用了一定的内存,但查找未使用内存块的速度相对较快;空闲链表法需要指针操作,可能会造成额外开销,但更加灵活。位示图法可以减少内存开销,但需要进行位运算等操作。成组链接法则将内存分组,能够高效地利用碎片化的空闲内存;
    试题一

【考试试题遵循这样的规则!!!】
• 一个字为32位,因为物理块号是从0 开始的,而4195号物理块是从0开始的结束物理块号,所以 (4195 + 1)/ 32 = 131.125;因为超过131号就是要到132号;第几个字中描述,表示从1 开始,所以答案是 132 (D);
• 第几位是从0 位置开始,因为 131 * 32 = 4192 表示 0 - 4191,而4192为0 位置,4193为 1位置,4194为2 位置 ,4195为3位置;
• 所以系统应该将该字的第3位置“1” 答案:B;

5.17 设备管理 -数据传输控制方式

【主要指内存和外设之间的数据传输!!】

【通道和输入输出处理机是专用计算机解决传输问题!!了解即可】
• 程序控制方式【程序查询方式,最低级,CPU介入最多】是指计算机处理器(CPU)执行程序时按照程序指令的顺序依次执行,即由当前指令所指向的下一条指令来控制程序的执行过程。在程序控制方式下,处理器需要不断地获取并解析下一条指令,然后执行其定义的操作。这种方式下的程序实现相对简单,但效率较低,特别是对于一些需要进行复杂逻辑判断或大量数据运算的程序,会降低系统的响应速度;【外设处于被动,不会主动反馈信息,CPU主动发出查询指令】
• 程序中断控制方式,它允许CPU优先响应来自外部设备的信号(如键盘输入、网络数据等),并自动转入相应的程序执行中。这种方式可以提高计算机的响应速度和工作效率,常用于实时操作系统、多任务操作系统等场景; 【主动性强,效率高一些】
• DMA 全称为“Direct Memory Access”,它是一种计算机数据传输方式。DMA 可以让外设(如硬盘、网卡等)在与内存的数据传输过程中,直接控制内存而不需要 CPU 的干预,从而提高数据传输速度和 CPU 的处理能力。具体来说,DMA 控制器可以在系统总线空闲时暂时抢占总线,直接访问内存并传输数据,当传输完成后再将总线让给其他设备诸如 CPU 等。这样就可以避免数据传输时造成的 CPU 繁忙、总线过载等问题,并解放 CPU 资源,因此 DMA 在提高数据传输效率方面发挥了重要作用; DMA是指数据在主存与I/O设备间(即主存与外设之间)直接成块传送; 【专门的控制器,CPU在开头结尾做一些准备工作,效率更高!】。
直接查询控制:有无条件传送和程序查询方式,都需要通过CPU执行程序来查询外设的状态,判断外设是否准备好接收数据或准备好了向CPU输入的数据。在这种情况下CPU不做别的事情,只是不停地对外设的状态进行查询。
中断方式:当IO系统与外设交换数据时,CPU无须等待也不必查询IO的状态,而可以抽身来处理其他任务。当IO系统准备好以后,则发出中新请求信号通知CPU,CPU接到中新请求信号后,保存正在执行的程序的现场,转入IO中断服务程序的执行,完成于IO系统的数据交换,然后再返回被打断的程序继续执行。与程序控制方式相比,中断方式因为CPU无需等待而提高了效率。
DMA:直接寄存器存取方式,是指数据在内存与/O设备间的直接成块传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何干涉,只需要CPU正在过程开始启动与过程结束时的处理,实际操作由DMA硬件直接执行完成。
IO管理软件

5.18 设备管理-虚设备与SPOOLING技术

【Spooling技术应用非常广泛!】

【核心:磁盘上增加了缓冲区,缓解了外设和内部设备之间的速度不匹配问题!!】
• SPOOLING(Simultaneous Peripheral Operations On-line)技术是一种在计算机系统中用于缓存和管理输入/输出(I/O)数据的方式。通过使用SPOOLING技术,系统可以将I/O请求从高速设备(如硬盘、光盘等)转移到低速设备(如打印机),从而使高速设备可以快速地处理其他任务,而不必等待I/O操作完成;
• 由于所有的I/O请求都经过了缓存和调度,SPOOLING技术可以避免竞争和冲突。例如,在多个程序同时请求打印时,SPOOLING系统会自动将它们排队,并按照请求的顺序打印文件。这可以保持系统的稳定性并减少错误发生的可能性。
• 总体来说,SPOOLING技术已成为一种基本的I/O管理技术,广泛应用于许多领域,包括操作系统、数据库、网络通信等;

5.19 微内核 - 操作系统

【将最核心的东西放在微内核!】

【掌握优缺点!!】
【用户态出现故障不严重,核心态故障严重!!】
微内核是一种操作系统内核设计思想,它将操作系统中的基本功能进行细分,并将其封装成独立的进程或者服务。相比于传统的单内核设计,微内核的优点在于更好的灵活性、可移植性和安全性。但是,由于微内核在进程间切换时的开销较大,在实际应用中常常面临性能问题。

嵌入式操作系统
特点:
(1)微型化,从性能和成本角度考虑,希望占用的资源和系统代码量少;
(2)可定制,从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求;
(3)实时性,嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高;
(3)可靠性,系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施;
(5)易移植性,为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。

系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
片级初始化
完成嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。广级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
板级初始化
完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
系统初始化
初始化过程以软件初始化为主,主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。

ipconfig ( linux: ifconfig) :显示TCP/IP网络配置值,如:IP地址,MAC地址,网关地址等。
tracert(linux: traceroute):用于确定IP数据包访问目标所采取的路径,若网络不通,能定位到具体哪个结点不通。
netstat:用于显示网络连接、路由表和网络接口信息。
nslookup(查询DNS记录)。


速成版资料点击👉👉【闲鱼】https://m.tb.cn/h.5yHks14?tk=3iMKWpNBanT MF3543 「我在闲鱼发布了【自己一次性高分通过软考中级!】」
点击链接直接打开

历年软件设计师软考中级全部考试资料,获取方式见:


整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣
欢迎专注我的公众号AdaCoding 和 Github:AdaCoding123
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值