目录
一、页式存储管理方案
1.1基本思想
1.2地址转换与快表
1.2.1页表
1.2.2二级页表
1.2.3散列页表(哈希列表)
1.2.4页式存储管理的地址转换
1.2.5快表
二、段式与段页式存储管理方案
2.1段式存储管理
2.1.1基本思想
2.1.2实现
2.2段页式存储管理
2.2.1基本思想
2.2.2实现
三、存储管理方案总结
🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。
💡本文由Filotimo__✍️原创,首发于CSDN📚。
📣如需转载,请事先与我联系以获得授权⚠️。
🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!
🌟我的格言:森林草木都有自己认为对的角度🌟。
一、页式存储管理方案
1.1基本思想
页式存储管理可以把一个逻辑地址连续的程序分散存放到几个不连续的内存区域中,并且保证程序的正确执行,可充分利用内存空间,减少移动所花费的开销。页式存储管理是对分区方式管理内存的补充,可以解决分区管理的缺点(当内存中无足够大的连续空间时,程序就无法装入)。
由于CPU不能直接访问存在外设或外存上的程序,所以程序要得到处理机前,必须先装入内存,由于出现了页式存储管理方式等的内存管理技术方案,所以只要部分装入内存即可。
页式分配使内存的利用率较高且管理简单。
页式不能采用移动技术解决碎片问题。
为了提高内存利用率,可以根据需要采用多种不同大小的页面。
在采用页式存储管理方案的系统中,为了提高内存利用率并减少内碎片,页面的划分与页表数量相关,可以找到平衡点。
在采用页式存储管理方案的系统中,可采用这些方法管理空闲物理内存:空闲块链表,位示图。
1.2地址转换与快表
1.2.1页表
为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表(基本页表);
一个进程对应一张页表;
进程的每一页对应一个页表项;
每个页表项由“页号”和“块号"组成。
1.2.2二级页表
第一级表示页目录,保存页表页的地址;
第二级表示页表页,保存物理页面号(即内存块号)。
1.2.3散列页表(哈希列表)
散列页表中的每个表项都包含三个字段:虚拟页号、所映射的页框号、指向链表中下一个元素指针
1.2.4页式存储管理的地址转换
页号是地址的高位部分,页内地址是地址的低位部分。
逻辑地址连续,物理页面可以不相邻。
页式存储管理方案中地址转换是由硬件完成的。
物理地址的计算公式为:物理地址=内存块号 x 块长 + 页内地址。
逻辑地址结构包括两个部分:页号+页内地址;
要算出逻辑地址对应的页号(逻辑地址/页面大小)【取整】;
要知道该页号对应页面在内存的起始地址;
要算出逻辑地址在页面内的“偏移量”(逻辑地址 mod 页面大小)【取余】;
物理地址=页内地址+页内偏移量。
1.2.5快表
只存放当前进程最活跃的少数几页;
进程的推进会导致快表的内容动态更新;
优点:采用快表后,地址转换的时间大幅下降。
快表存放在缓冲器中。
关于快表的叙述中,这些是正确的:
(1)快表的另一个名称是TLB;
(2)当切换进程时,要刷新快表;
(3)快表存放在高速缓存中;
(4)对快表的查找是按内容并行进行的。
【例】假定访问内存的时间为 200ns,访问高速缓冲存储器的时间为 40ns,高速缓冲存储器为 16 个单元时查快表的命中率为 90%。
按逻辑地址转换成绝对地址进行存取的平均访问时间为:(200+40)x90%+(200+200)x10%=256(ns)
不使用快表需两次访问内存的时间为 200x2=400ns。
可见使用快表与不使用快表相比,访问时间下降了36%。
二、段式与段页式存储管理方案
段式存储管理方案中采用的这些技术与可变分区管理方案相同:
(1)内存分配表;
(2)内存分配算法;
(3)采用紧缩技术合并空闲区。
2.1段式存储管理
2.1.1基本思想
系统将内存空间动态划分为若干个长度不同的区域,物理段在内存中的起始地址,称作段首址;将物理段中的所有单元从0开始依次编址,称为段内地址。
用户程序则按逻辑上有完整意义的段来划分,称为逻辑段(简称段),所有逻辑段从0开始编号,称为段号,逻辑段中的所有单元从 0开始编址,称为段内地址,用户程序的逻辑地址由段号和段内地址两部分组成。
2.1.2实现
内存分配时,系统以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区;
当把程序装入内存后,系统为每个用户程序建立一张段表,用于记录用户程序的逻辑段与内存物理段之间的对应关系;
段表包括逻辑段号、物理段起始地址(段首址)和物理段长度;
物理段的段内地址与逻辑段的段内地址相同。
2.2段页式存储管理
2.2.1基本思想
用页式方法来分配和管理内存控件(把内存划分为若干大小相等的页面);
用段式方法对用户程序按照其内在的逻辑关系划分成若干段,再按照划分内存页面的大小,把每段划分成若干大小相等的页面;
内存是以页为基本单位分配给每个用户程序,逻辑上相邻的页面在物理内存中不一定相邻。
2.2.2实现
内存分配时,增加段式管理和页式管理;
系统必须为每个程序建立一张段表,一个段又被划分成若干页,系统又为每个段建立一张页表;
段表中记录该段对应页表的起始地址和长度;
页表则给出该段的各个逻辑页面与内存块号之间的对应关系;
采用位示图法建立内存分配表,用于记录和管理内存空闲块;
在地址转换时,硬件提供段表起始地址寄存器、段表长度寄存器等支持。
三、存储管理方案总结
在各种存储管理方案:
(1)以一个进程为单位分配一组连续的内存单元:固定分区,可变分区
(2)要求进程的逻辑地址与内存存储区域都是连续的存储管理方案是:固定分区,可变分区
(3)可能产生外部碎片的是:段式,可变分区(动态分区)
(4)可能产生内部碎片的是:虚拟页式,段页式,固定分区
(5)可进行进程部分交换的是:页式,段式,段页式
(6)可以将整个进程进行交换的是:固定分区,可变分区
(7)能支持多道程序设计的是:可变分区存储管理,页式存储管理,固定分区存储管理,段页式存储管理
(8)可“扩充”内存容量的方案是:虚拟页式,虚拟段式
(9)可以与虚拟存储技术结合使用:页式,段式,段页式