操作系统复习_存储管理
1、分页存储管理方式原理及地址映射过程
分页存储管理方式原理:
把进程空间和内存空间划分为等大小的小片,进程的小片叫做页,内存的小片叫做页框,页和页框大小相等。
进程以页为单位装入内存,进程以页框为单位分配使用。
地址映射过程:使用页面映射表记录页和页框的对应关系,也叫页表,
页式地址映射:虚拟地址->物理地址
就是说,物理地址和虚拟地址的页偏移是一样的,只需要找到页号和页框号对应关系即可。
如下所示:
2.虚拟存储技术(覆盖、交换):
内存覆盖技术指的是在较小的内存运行较大的程序;把内存分区划分为了常驻区和覆盖区两种。
内存交换技术:内存不够时把程序写到磁盘上,当进程要运行时重新写入内存;
优点是:增加进程并发数,不考虑程序结构;
缺点是:换入换出增加CPU开销,交换单位太大(整个进程)
3.物理内存管理方式(位图、空闲链表);
在内存动态分配过程中,操作系统必须对其进行管理。有两种方式跟踪内存使用情况:位图和空闲链表。
位图:内存被划分成一定大小的分配单元,每个单元对应位图中的一位;
特点:
(1)位图占用内存空间;
(2)分配单元的大小与位图的大小权衡困难;
(3)位图的搜索耗时;
另一种方式是链表(单链表或双链表):
转载:链接
其中内存分配算法有:
首次适配算法:每次从表首开始搜索,直到找到一个足够大的空闲区,除非空闲区的大小和进程需求一样,否则将空闲区分成两部分,一部分供进程使用,另一部分形成新的空闲分区。
下次适配算法:对首次适配算法进行调整,记录上一次搜索停止位置,下一次搜索从这里开始。
最佳适配算法:搜索整个链表,找出能容纳进程的最小空闲区;
最差适配算法:找出能容纳进程的最大空闲区
4.页表的组成、TLB、页的大小
其中,页最基本的组成是页号和页框号的对应关系,还可以添加一些其他特性,页表的关键是映射页和页框的对应关系;
页表的作用是给出虚拟地址和物理地址之间的映射关系,内存管理单元MMU是完成映射
TLB:TLB就是我们所说的快表
快表是放在cache中的页表,慢表是放在内存中的页表;
关于具体可看我的这篇博客:操作系统_虚拟内存管理
页的大小:(合理调整页面大小)
6.常用页面置换算法及缺页率的计算(FIFO,LRU,时钟页面置换算法)
页面置换策略:
(1)固定分配局部置换
固定指的是进程生命周期中分配的物理块数不变,局部置换指的是他只能置换自己的页框,不能管理不属于自己的页框;
(2)可变分配局部置换
(3)可变分配全局置换(4)固定分配全局置换
因为固定分配后声明周期中分配的物理块数不变,全局置换后管理别的物理块没有任何意义;
页面置换算法:(以固定分配局部置换为例子)
OPT:理论最佳,实践中无法实现
FIFO:淘汰在内存中停留时间最长的页面;
LRU:淘汰最长时间未被使用的页面;
LFU:选择到当前时间为止访问次数最少的页面
仅以FIFO为例,如下所示
7.段式存储与页式存储的主要区别
进程分段:把进程按逻辑意义划分为多个段,每段有段名,长度不定,进程由多段组成;
特点:
以段位单位装入,每段分配连续的内存;
但是段和段不要求相邻;
段表:记录每段在内存中映射的位置
就是说即使分段,每段仍有可能还是很大。
段与页的区别:
段长可变;页面大小固定;(逻辑划分,大小不限制)
段的划分有意义;页面无意义;(逻辑划分)
段方便共享;页面不方便共享;(就是关键在于段只用把整个段共享即可,而页是把几个页框划分为共享的,比段麻烦)
段用户可见;页面用户不可见(理解为段是逻辑分段,自己可以根据是什么逻辑判断是哪段???不确定)
段偏移有溢出;页面偏移无溢出;(段的偏移就段的大小,因为没有限制,可能会很大而溢出)