- 基本的概念属于,机器描述,很重要
-
虚拟内存的寻址空间取决于计算机系统的寻址机制,如64位系统的寻址空间应为2的64次方,而这个64的限制也不是来自于内存这种东西,64这种限制应该是计算机系统中总线的位数限制了寻址空间的长度,如果不考虑总线对于寻址位数的限制,那么虚拟内存的存在远远可能超过机器位数的限制,这就是通常为什么我们的应用程序的大小往往比我们的机器设备的物理内存大很多的原因之一,当然只是之一。如果按照古老的寻址方式,那么最大的程序大小应小于物理内存的大小
-
虚拟地址,其实就是应用程序的寻址所使用的地址,这个地址通过操作系统之后被转化为对应的实地址。虚拟地址空间和地址空间二者区别,虚拟地址空间远大于地址空间,地址空间可能是某个进程占用的几个分页或者分段,而虚拟地址空间是存在于逻辑上面的地址空间,可能是2的64次方这种,但是最终在内存中可能也就是几块分页这种。
-
虚拟地址,虚拟内存,虚拟地址空间更多是逻辑上的概念,如64位机器的寻址空间为2的64次方,这其实就是虚拟地址的寻址空间的最大值,而地址空间可能只有几个G这种
-
假设没有虚拟内存这种机制,那么一个应用程序可能就要跑崩一台机器。
-
- 硬件和控制结构
- 分段和分页的特点
-
- 原理,程序执行的局部性原理
- 分页和分段表示如下
-
两级分页系统中地址转换
为什么要分两级,假设不分两级分页的话,我们看到虚拟地址中页号应该为20位,页表项需要达到2的20次方,这就是为什么要分两级也表的原因吧,第二级也表甚至可以分成多个小页表根据相应的需求。
-
TLB的应用,增加一层寻址缓冲,应用原理,程序的局部性原理
-
分段分页,段页式
-
分段和分页的区别,是否对程序员课件,对程序员可见的东西总能玩出花样,能够用于共享扥过期他
-
段页式
-
分段系统
-
-
-
- 分段和分页的特点
- 操作系统软件
- 内存管理设计基于三个基本方面的选择
- 是否使用虚存技术
- 是否使用分页还是分段,或是二者组合
- 为各种存储管理特征采用的算法
- 读取策略
- 请求分页
- 预先分页
- 放置策略
- 最佳适配
- 首次适配等
- 置换策略(发生的场景是-----当内存中的所有的页框都被占用的时候才会发生)
- OPT(理想算法,性能最为优越,然而不可能实现,除非预知未来)
- 最近最少使用(需要保存分页的历史,实现困难,如果需要比较某个分页是否值得换出,代价开销很大)
- 先进先出(性能很差)
- 时钟(从理论上讲,时钟算法具有一定的偶然性,被选换出的分页有可能不是最佳的分页,但是却是类似于贪心算法的结果一样,我选出的可能不是最佳的,但肯定是足够好的)
- 简单时钟策略,使用位被trigger,二次经过会被换出,选为空闲页
-
- 时钟页面置换算法
-
从图示结果看:和简单时钟算法相比较,选择的置换页更加合理而已
-
-
驻流集管理
-
驻留集大小
-
固定分配
-
可变分配
-
缺页率较高,分配更多的页框(局部性不好)
-
缺页率较低,减少页框(局部性好)
-
-
-
置换范围,全局置换,局部置换
-
可变分配,全局范围(被许多操作系统所采用)
-
固定分配,局部范围
-
可变分配,局部范围
-
-
- 简单时钟策略,使用位被trigger,二次经过会被换出,选为空闲页
-
清除策略
-
请求式清除
-
预约式清除
-
-
加载控制
-
防止频繁缺页中断,系统抖动
-
防止大量进程驻留在内存中
-
选择一些进程挂起
-
最低优先级进程
-
缺页中断进程
-
最后一个被激活的进程
-
驻留集最小的进程
-
最大空间进程
-
具有最大剩余执行窗口的进程
-
-
- 内存管理设计基于三个基本方面的选择
- unix和solaris内存管理
- 置换策略:双表时钟策略
- 内存分配策略,懒惰伙伴系统,分裂和合并
- linux内存管理
- windows内存管理