您的当前位置:首页正文

面试复习操作系统三

2024-11-27 来源:个人技术集锦

一、死锁

1.必要条件:

互斥
请求和保持
不可抢占
循环等待

2.处理死锁的办法

不管
预防:防止四个条件中的一个出现
避免:优化资源分配,让系统除于安全
检测:不预防,及时检测出死锁
解除:出现死锁,想办法解除
检测和解除是一体的
防范程度逐渐下降,但是资源利用率逐渐提高

3.避免死锁的办法 (破坏三个死锁必要条件)

1.互斥条件一般不可破坏
2.破坏请求和保持
a.要申请必须申请全部资源
b.申请一部分,释放后,再申请其他资源
3.破坏循环等待
给资源编号,进程按照编号顺序来请求资源
4.破坏不可抢占
如果申请其他资源失败了,就释放原有资源

4.避免死锁的办法

原理:系统处于安全状态,就不会发生死锁
操作:系统每次分配资源之前,都检测分配是否会让系统进入不安全状态,如果不会就分配资源,否则,进入等待
经典算法:银行家算法

5.死锁的检测和解除

原理:简化资源分配图,如果不能简化为孤立节点,说明有死锁。
死锁解除算法:
1.终止进程
2.抢占资源
3.回滚

二、内存

1.存储器的层次

分为CPU寄存器,主存,辅存三层。
CPU寄存器包括寄存器,主存包括高速缓存、主存、磁盘缓存(逻辑上的,实际属于主存的一部分),辅存包括固定磁盘和可移动存储介质。
其中,寄存器速度和CPU差不多,主存和CPU速度差很多,CPU寄存器和主存都属于操作系统管理,断电后信息失效,称可执行存储。
高速缓存用于备份重要数据,位于主存和CPU之间,用于缓解主存和CPU之间的速度关系。

2.程序的装入和链接

1.编译:编译器对源代码进行编译,成多个目标模块
2.链接:将目标模块和库函数链接成装入模块
3.装入:装入程序将装入模块装入内存

3.装入的方式

(1)绝对装入

(2)动态可重定位装入

(3)动态运行时装入

4.链接方式

(1)静态链接

将目标模块和库函数链接成装入模块,此后不再拆开

(2)装入时动态链接

边链接边装入,装入时若发生外部模块调用事件,先将外部目标模块装入内存。

(3)运行时动态链接

运行时需要某个模块再去链接装入,没用到的不链接装入

5.内存分配方式–连续

程序必须被分配在连续的内存空间,不能分开。

(1)单一连续分配:

只有一个程序,除了操作系统以外都是程序

(2)固定分区分配

多程序,将内存分为多个固定的分区,分区有相同和不同;有分区表之类的存储分区信息。

(3)动态分区分配

可以按照程序大小进行分配。

i.数据结构

1.空闲分区表:

2.空闲分区链:

ii.动态分区分配算法:
iii.动态可重定位分区分配:

iiii.操作:

1.分配内存

2.回收内存

6.对换

系统将暂时不运行的进程和不需要的数据和程序调入外存,将外存上具备运行条件的进程和需要的数据和程序调入内存。
linux中有个/swap专区供对换使用。
对换有关知识连接:

7.内存分配方式-离散

(1)分页存储管理

分页存储管理将进程的逻辑空间分为若干页,也将内存的物理空间分为若干块,都加以编号;在为进程分配内存时,以块为单位,将进程的若干页装入多个可以不相邻接的物理块中。
页面大小过大,碎片过多;太小,页表占内存多,进程占用过多页,换进换出效率低。
页表存储了页号和物理块号的映射关系。

(2)分段存储管理

根据程序员需求而诞生,每个段都有自己的逻辑含义,页是没有的。

分段意义:
分段的基本原理

段的信息共享

允许多个进程共享一个或多个分段

(3)段页存储管理

8.访问内存的时间

有快表:需要考虑命中率的问题

a是命中率(在快表中成功找到所需页面表项的比率),接近1时,整体只需要访问一次内存+快表。londa表示访问快表需要的时间。

9.两级页表和多级页表

(1)两级页表

(2)多级页表

10.反置页表

显示全文