章节概述

操作系统概述

本章主要介绍 进程管理,存储管理,文件管理 三个维度

B,跟计算机硬件最近的肯定是操作系统,最远的肯定是应用软件
进程管理
基本概念




C
进程的状态
进程的三态模型和五态模型是操作系统中用于描述进程状态及其转换的重要概念。
进程的三态模型
进程的三态模型描述了进程在计算机系统中的三种基本状态:运行态、就绪态和阻塞态。
- 运行态(Running):当一个进程正在CPU上执行时,称该进程处于运行状态。在多道程序系统中,处于运行状态的进程数目小于等于处理器的数目。对于单处理机系统,任一时刻只有一个进程处于运行状态。
- 就绪态(Ready):当一个进程获得了除CPU以外的一切所需资源,一旦获得CPU即可运行,则称此进程处于就绪状态。就绪进程可以按多个优先级来划分队列,等待CPU的调度。
- 阻塞态(Blocked/Waiting):也称为等待或睡眠状态,一个进程正在等待某一事件发生(如等待I/O操作完成)而暂时停止运行,这时即使把CPU分配给该进程也无法运行。
这三种状态之间的转换关系如下:
- 就绪态 → 运行态:当系统根据调度算法选中某个就绪态进程时,该进程进入运行态。
- 运行态 → 就绪态:当进程的时间片用完或更高优先级的进程就绪时,当前运行态进程让出CPU,进入就绪态。
- 运行态 → 阻塞态:当进程请求某种资源(如I/O操作)而得不到满足时,进程进入阻塞态。
- 阻塞态 → 就绪态:当进程等待的事件发生时(如I/O操作完成),进程从阻塞态进入就绪态。
进程的五态模型
进程的五态模型在三态模型的基础上增加了两种状态:新建态和终止态,以更全面地描述进程的生命周期。
- 新建态(New):对应于进程刚刚被创建但尚未被提交到就绪队列的状态。在此状态下,操作系统为进程分配必要的资源(如PCB、内存空间等),并设置初始状态。
- 终止态(Terminated):进程已结束运行,操作系统回收除PCB之外的其他资源,并让其他进程从PCB中收集相关信息(如退出代码)。
五态模型中的其他三种状态(运行态、就绪态、阻塞态)与三态模型中的定义相同。新增的两种状态使得进程的生命周期更加完整,从创建到终止的整个过程都得到了描述。
总结
进程的三态模型和五态模型是操作系统中描述进程状态及其转换的重要工具。三态模型简洁地描述了进程的基本状态及其转换关系;而五态模型则在此基础上增加了对进程创建和终止过程的描述,使得对进程生命周期的理解更加全面。这两种模型都是操作系统设计和实现中的重要基础概念。

三态模型和五态模型
三态模型中 就绪是核心,类似与病人看医生,如果医生没有就绪就需要一直等待,如果医生开好了诊断方案就可以治疗了。
五态模型中,增加了每个都增加了静止和活跃两个状态,类似与急诊科医生,就诊时可能有其他重点病人需要插队就诊。

PCB 保存在不同的索引表中,因此是通过索引方式组织。(Hash方式是对内容进行存放,通过对内容产生其hash进行索引保存,这里没有体现这个产生hash的过程),因此选C
由题干图示可直接看出是2个运行进程,3个就绪进程,4个阻塞进程(PCB是进程存在的唯一标识),选C
信号量与PV操作
信号量与PV操作是操作系统中用于进程同步与互斥的重要机制。以下是对信号量与PV操作的详细解释:
信号量
信号量(Semaphore)是一种取值为整数的变量,用于表示可用的临界资源数目或等待资源的进程数。信号量的概念由荷兰计算机科学家Edsger Dijkstra在1965年提出,是处理进程同步的一种有效手段。信号量的数据结构通常包含一个整数值(表示资源的可用数量或等待资源的进程数)和一个指针(指向等待该信号量的下一个进程)。
信号量的值与相应资源的使用情况有关:
- 当信号量的值大于0时,表示当前可用资源的数量。
- 当信号量的值小于0时,其绝对值表示等待使用该资源的进程个数。
信号量的值仅能通过PV操作来改变。信号量按其用途可分为公用信号量和私有信号量两种。公用信号量用于实现进程互斥,通常初值为1;私有信号量用于实现进程同步,初值根据具体需求设定。
PV操作
PV操作由P操作原语(Proberen,测试)和V操作原语(Verhogen,增加)组成,是不可中断的过程,即原语。这两个操作针对信号量进行相应的加减操作,以实现进程的同步与互斥。
P操作(Proberen,测试)
- 将信号量S的值减1(S=S-1)。
- 如果S<0,则该进程进入阻塞队列,等待资源变得可用。
- 如果S>=0,则该进程继续执行。
执行一次P操作意味着请求分配一个单位资源。如果资源可用(信号量值大于0),则进程继续执行;如果资源不可用(信号量值小于0),则进程被阻塞,直到其他进程释放资源并使得信号量值变为非负数。
V操作(Verhogen,增加)
- 将信号量S的值加1(S=S+1)。
- 如果S>0,则该进程继续执行(通常表示V操作是由释放资源的进程执行的,因此它本身不会因资源不足而被阻塞)。
- 如果S<=0,则释放阻塞队列中的第一个等待信号量的进程,使其继续执行。
执行一次V操作意味着释放一个单位资源。如果有进程因为等待该资源而被阻塞,则唤醒阻塞队列中的一个进程,使其能够继续执行。
应用场景
信号量与PV操作广泛应用于操作系统的并发控制中,特别是用于解决进程间的同步与互斥问题。例如,在生产者-消费者问题、读者-写者问题以及多进程访问共享资源等场景中,信号量与PV操作都发挥着重要作用。
总结
信号量与PV操作是操作系统中用于实现进程同步与互斥的重要机制。通过合理地使用信号量和PV操作,可以有效地管理共享资源,避免竞态条件和数据不一致的问题,从而确保系统的稳定性和可靠性。

这里的独木桥可以看成是一个临界资源

S: 信号量,用于表示可用的临界资源数目或等待资源的进程数(临界资源就涉及到死锁了,见“死锁”一节)
P: 申请并占用资源的进程操作(因此是信号量小于0的时候阻塞进程,不能再占用资源了)
V:释放资源的进程操作(因此是信号量小于等于0的时候去唤醒阻塞的进程让其进入就绪态,等待运行,即申请并占用资源)

使用打印机 P(S),后续代码 V(S),互斥信号量 S 的初值为1


缓冲区有1个空间,S1初值为1,如果缓冲区有m个空间,那么S1的初值为m
因为缓冲区一开始是没有产品的,所以S2初值为0


BA,这里是典型的互斥模型,要让一个资源只有一个人可以用,就要先加锁再解锁,因此信号量初始值应该为1,a空时加锁,b和c是解锁
前趋图与PV操作

箭头起始位置就是一次 V 操作,终止位置是一次 P 操作,分别代表 资源已准备 和 检查资源是否可用


根据 ->={(Pi, Pj)|Pi} 标记,Pi是Pj的前驱。结合图示,P1是P2的前驱,因此应该是 (P1,P2),排除 AD。
又由于图示中 P3是P5的前驱,而B选项没有该标记,排除,故选C

第一个空用排除法好理解些,C1S1在箭头的两端,分别代表前驱后继,明显不可能同步,排除BC。S1S2S3同理排除。故选A
第二个空,根据直接制约的定义在这里应该是不同因素受顺序的影响而产生的先后关系制约,排除AB(都是相同程序段)。根据前驱图的前后关系,应该是后面的受到前面的制约,因此选C
第三个空,根据间接制约的定义在这里应该是共享同一临界资源而引起的进程交叉现象,排除CD(不都是相同程序段)。根据前驱图的前后关系,应该是后面的受到前面的制约,因此选B
PS:间接制约是指由共享某一共有资源而引起的在临界区内不允许并发进程交叉执行的现象。在并发系统中,某些资源(如输入机、打印机、磁带机等硬件资源,以及公用变量、数据、表格、队列等软件资源)一次仅允许一个进程使用,这类资源被称为临界资源。当多个进程需要访问同一临界资源时,它们之间就形成了间接制约关系。
直接制约是指一个因素或条件对另一个因素或过程产生的直接限制或约束作用。这种制约关系通常表现为一种直接的因果关系,其中一方的变化会直接影响到另一方的状态或行为。直接制约可以在多个领域中找到实例,包括但不限于生物学、物理学、社会学、经济学等。

重点:对PV操作和前驱图的结合考察(该题没有信号量的具体位置,较为简单)
根据前驱图箭头开始是V操作,结束是P操作可知,P1执行后是2次V操作,排除BD。P2处于2个箭头终止位置因此是2次P操作(P2执行后是一次V操作),排除A,选C。
P3开始前是一次P操作,结束后是2次V操作,因此排除BCD,选A。
死锁


左边是死锁的四大条件

(5 - 1) * 3 + 1 = 13 个则不可能发生死锁。进程ABC各拿4个,任意进程拿到第5个进程即可完成任务而释放资源。
PS:这里如果资源数小于5一定发生死锁,如果资源数是5-12则可能发送死锁,大于12个则一定不会死锁。
存储管理
页式存储、段式存储和段页式存储是计算机系统中用于内存管理的三种主要方式,它们各有特点和应用场景。
页式存储
基本思想:
页式存储管理将主存空间划分为大小相等的若干页框(或称为块),每个页框可以装入一个进程的一页或若干页的一部分。同时,进程的逻辑地址空间也被划分为与页框大小相等的若干页。通过页表记录每个页在内存中的物理块号,以实现从逻辑地址到物理地址的转换。优点:
- 内存利用率高,碎片小。
- 分配及管理简单。
缺点:
- 增加了系统开销,如页表的维护。
- 可能产生抖动现象,即频繁地进行页面置换导致系统性能下降。
应用场景:
页式存储管理适用于需要高效利用内存资源,且对内存访问速度要求较高的场景。段式存储
基本思想:
段式存储管理将程序的地址空间划分为若干个段,每个段包含了一组逻辑上完整的程序或数据。段的长度可以不同,且每个段都有自己的段名和段号。通过段表记录每个段的基地址、段长等信息,以实现从逻辑地址到物理地址的转换。优点:
- 可以充分实现共享和保护,便于动态申请内存。
- 管理和使用统一化,便于动态链接。
缺点:
- 存在碎片问题,特别是当段的长度差异较大时。
应用场景:
段式存储管理适用于需要按程序逻辑结构进行内存分配,且对内存共享和保护有较高要求的场景。段页式存储
基本思想:
段页式存储管理结合了页式存储和段式存储的优点。它将程序的地址空间首先按逻辑结构划分为若干个段,每个段再划分为若干个大小相等的页。主存空间也相应地划分为若干页框。通过段表和页表两级映射,实现从逻辑地址到物理地址的转换。优点:
- 提高了内存的利用率。
- 便于按程序逻辑结构进行内存分配和管理。
- 实现了内存的共享和保护。
缺点:
- 系统开销较大,需要维护段表和页表两级映射关系。
应用场景:
段页式存储管理适用于需要高效利用内存资源,同时要求按程序逻辑结构进行内存分配和管理的复杂场景。综上所述,页式存储、段式存储和段页式存储各有其特点和适用场景。在实际应用中,可以根据具体需求和系统环境选择合适的存储管理方式。
页式存储

如上所示,如果逻辑地址是 10 1100 1101 1110,页号是 10 对应十进制的 2,其块号是 6(二进制是110),因此其对应的物理地址是 110+原逻辑地址

页帧号不存在时,依次根据状态位(1:在内存中)、访问位(0:最近未被访问)、修改位(0:内容未被修改过)的优先级从高到低淘汰
PS:最近未被访问是根据局部性原理,最近被访问过的后面被访问的概率更大。内容被修改过的话淘汰后面又要计算。

A: 访问逻辑地址是5148H,根据变换表页号为5的对应页帧号是3,因此对应物理地址的十六进制是 3148H
B: 根据表换表,只有页号为 1/2/5/7 不在内存中(状态位和页帧号都可以看出来),根据 最近未被访问过 和 内容未被修改过 的优先级顺序淘汰,应该先淘汰2号页面。
段式存储

合法段地址:(0, 25K)
非法段地址:(0, 35K)
因为段号为0的段长时30K,这里35K就超出了段长的范围。

DC
段页式存储

文件管理
索引文件结构

直接索引、一级间接索引、二级间接索引、三级间接索引
考点:
逻辑位置(字节或页号)对应的索引方式
不同索引方式指向的对象(数据块&索引表)
不同索引方式访问磁盘的次数
直接索引:1次,查看数据
一级间接索引:2次,访问1次索引盘,1次数据盘
二级间接索引:3次,访问2次索引盘,1次数据盘
能够表示的文件长度
假设数据块的大小为1KB,则
直接索引表示文件长度为:1KB * 10
一级间接索引表示文件长度为:1KB * 256 * 1
二级间接索引表示文件长度为:1KB * 256 * 256 * 1
上面相加就是可以表示的文件长度

CD

AD
位示图

字长为多少分为一组 ,上面是以16字节作为字长来分组

D 300GB/1MB/32 = (300 * 2^10) / (2^5) = 300 * 32 = 9600
树形目录结构

特殊的操作系统
嵌入式操作系统EOS



目标机和宿主机可以通过 以太网、仿真器、USB、串口信号 等方式连接
在宿主机上进行开发调试,目标机上运行

嵌入式不仅仅要考虑软件部分,还需要考虑硬件部分

A 必须要有物理线路的连接才能通信
B 还有以太网、USB等方式
D 调试器一部分是在宿主机
故选C

硬件抽象层是操作系统与硬件之间的层次,可对操作系统隐藏硬件的多样性。任务调度是操作系统的职能,不属于硬件抽象层的职能。故选D

B 需要支持多任务
实时操作系统RTOS


大多数实时操作系统调度算法都是抢占式的


A AB观点相互冲突,因此答案在AB之间。实时操作系统(RTOS)通常在设计时会针对特定的硬件平台进行优化,但这并不意味着它们完全不能针对硬件变化进行结构和功能上的配置与裁剪。许多现代RTOS提供了配置选项,允许开发者根据具体的应用需求和硬件环境来裁剪和重构内核的功能。 例如,开发者可以选择启用或禁用某些功能模块(如任务调度、内存管理、通信协议等),以适应不同的硬件平台和应用场景。这种灵活性使得RTOS能够在资源受限的环境中高效运行。 然而,值得注意的是,虽然RTOS可以进行一定程度的配置和裁剪,但它们通常不具备像一些通用操作系统那样的动态适应能力。大多数情况下,这种配置是在开发阶段完成的,而不是在运行时根据硬件变化进行动态调整。

B 不解释,上面教案PPT有说到
微内核操作系统


和微服务概念类似的感觉,通过解耦来实现高可用

A 与微服务概念类似,适用于分布式系统
本文链接: http://www.ionluo.cn/blog/posts/328c84fe.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!


