1.5操作系统总结(三)

第七章 死锁
1、死锁:多个进程因循环等待资源而造成无法执行的现象,造成系统资源极大浪费,资源无法释放
2、产生死锁原因:多个进程因等待资源(进程在完成其任务过程所需要的所有对象,如CPU、内存、磁盘块、信号量等),资源互斥访问是死锁的必要条件
3、资源分配图:进程圆圈,资源方框,里面的实心点代表此类资源的数目

4、死锁的4个必要条件(缺一不可):互斥使用、不可抢占(资源只能自动放弃)、请求和保持(进程占有资源再去申请)、循环等待(资源分配图中存在一个环路)
5、死锁处理方法
(1)死锁预防:破坏死锁的必要条件(互斥使用:资源的固有特性,通常无法破除,如:打印机。不可抢占:持有不用即可抢占。请求和保持:一次性申请所有需要的资源,问题:难以预知未来,编程困难;资源申请后不会马上使用,资源利用率低。循环等待:资源申请必须按序进行)此方法容易引入不合理因素,实际很少使用
(2)死锁避免:判断次此请求是否造成死锁,若会造成死锁,则拒绝该请求
安全状态:系统中所有进程存在一个可完成的执行序列,则系统处于安全状态
安全序列:上述执行序列即安全序列,用Banker找安全序列
银行家算法:安全序列不唯一。此算法对应用程序员要求高,过于复杂,每次资源请求都要调用次算法,耗时大、系统效率降低。存在情况:当有资源可用,尽管可能很快就释放,由于会是整体进程处于不安全状态而被拒绝请求,导致资源利用率大大降低。

(3)死锁检测+恢复:定时检测或资源利用率低时检测,只要可用资源足够则分配,发现问题再处理。调用Banker算法找出所有死锁进程。仍要执行Banker算法,且恢复不容易
(4)死锁忽略:对死锁不做任何处理,鸵鸟算法(用的最多)

第八章 内存管理
1、执行程序:计算机的基本任务,步骤:编译—从C到汇编、链接—从汇编到可执行程序
2、重定位:为执行程序而对其中出现的地址所做的修改。
3、重定位时机:编译链接时(产生绝对代码,例如.com文件,只能放在事先确定的位置上)、载入时(一旦载入不能移动)、运行时定位(内存中的代码可重定位,可在内存中任何地方,可保护进程,最常见)
4、地址翻译(地址映射/重计算):从逻辑地址算出物理地址,每条指令都要执行,进程切换时修改基址寄存器内容
5、虚拟地址:用户编程时每条代码或每个数据的地址由段内地址+段内相对地址构成
6、逻辑地址:虚拟地址中的段内相对地址
7、物理地址:实际物理内存中的存储地址,以Byte为单位的存储单元的编号
8、逻辑地址空间:虚拟地址与逻辑地址统称为逻辑地址,其集合为逻辑地址空间
9、线性地址空间:CPU地址总线可以访问的所有地址集合
10、物理地址空间:实际存在的可访问的物理内存地址集合
11、MMU:内存管理单元,将用户程序的虚拟地址(逻辑地址)映射称物理地址的CPU中的硬件电路
12、基地址:地址映射时以段或页为单位并以其最小地址(即起始地址)为基值来计算
13、偏移量:地址映射时相对于基地址的地址值
14、内存分配方案:
(1)固定分区–等长分区:找出空闲分区并返回其基址
(2)固定分区–变长分区:找出空闲分区并且最小的分区的基址
(3)可变分区:根据reqSize进行动态分割,返回分区基址后要修改分区数据结构(随着进程的进出会产生很多碎片)
(4)分区分配算法–找到合适的空闲分区(首次适配:首次找到满足要求的空闲分区,快速、最佳适配:查找最小的满足要求的空闲分区,要搜索整个空闲分区,慢!会产生许多小的空闲分区、最差适配:查找最大的满足要求的空闲分区,要搜索整个空闲分区,慢!新产生的空闲分区大一些)
(5)碎片:内存中剩余的无法使用的存储空间(外部碎片:随着进程的装入和移出,对分区不断地分割,内存里产生许多特别小的分区,并不连续可用。内部碎片:针对固定分区,某分区分配给某进程使用,其中并未占用的空间不能分给其他进程)
(6)外部碎片处理–内存紧缩:将空闲分区合并,且reqSize=code+data+stack+heap,后两者动态增长,无法预测,要区别对待各个段,分别分配
15、分段:内存通过可变分区管理,载入段时(创建进程)建立进程段表,调用分配算法,通过段表算出物理地址,到达内存,进程切换时,进程段表也跟着切换
优点:区别对待不同的段,每个段独立编址,容易(分治)
缺点:空间预留(内部碎片);空闲空间很大却不能分配(外部碎片);内存紧缩;浪费空间,空间低效不灵活
16、分页:分页是固定大小,一般为4K,分页最多浪费4K-1个字节,没有外部碎片,内部碎片有上界,在用户逻辑地址空间与物理地址空间之间建立(进程)页表(两列:页号、帧号),页号是用户逻辑地址空间从第0页到第n页,帧(页框)号是物理地址空间,二者大小相等(注意:页是用来解决碎片问题的,每条指令都要查几次页表,查表效率很重要,页号需要连续,可以删掉页号)
优点:靠近硬件,结构严格,高效实用内存,更适合于自动化(硬件实现)
缺点:不符合程序员思考方式
17、页基本数据结构:PTE
18、多级页表:顶层页表常驻内存,不需要映射的逻辑地址不需要建立页表项,多级页表的地址翻译,但地址翻译效率低

19、为提高多级页表的地址翻译效率,用TLB(关联快速内存)支持,关联查找同时进行,若TLB未命中再查页表,TLB条目数[64,1024](条目数小,能起作用的原因:程序地址访问存在局部性+空间局部性),TLB有效访问时间

20、TLB动态变化:进程切换后,所有TLB表项都变为无效;TLB未命中,将查到的页表项载入TLB;TLB已满,选择一个条目替换
21、段、页结合(段面向用户、页面向硬件):逻辑地址:CS(段号):IP(偏移)段号查段表得到基址base,base+IP得到页号,页号和偏移组成线性地址,页号查页表得到页框号即物理页号,再加上偏移得到物理地址。程序的段划分线性地址空间,线性地址空间和内存被分割成相同大小的页和页框,逻辑地址通过段表加页表算出物理地址,到达内存,进程切换时,两个表都要一起切换
优点:符合程序员习惯,并可高效利用内存
缺点:复杂,访问一次地址需要查表很多次
22、GDTR:全局段表,LDTR:局部段表,都是32位段表基址(线性地址)+16为段表长度
23、CR3:页目录基址,CR3指向页目录,页目录指向页表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值