首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

操作系统虚拟存储器那一块如何理解

2013-07-01 
操作系统虚拟存储器那一块怎么理解正在学习深入理解计算机系统这本书,菜鸟表示看不下了,有什么实例可以帮

操作系统虚拟存储器那一块怎么理解
正在学习深入理解计算机系统这本书,菜鸟表示看不下了,有什么实例可以帮组理解虚拟存储器吗? 虚拟存储器 操作系统
[解决办法]

引用:
正在学习深入理解计算机系统这本书,菜鸟表示看不下了,有什么实例可以帮组理解虚拟存储器吗?


程序的入口都是一个基准点(物理地址),后面会有很多东西会用到这个基准值,(段、偏移等),但是这个基准点在物理上是唯一的(内存空间大小),但是程序有那么多种,难免不碰上2个基准值都一样的程序,那这2个程序铁定冲突,后运行的会把前面的改掉,前面的程序也就崩溃了,虚拟地址能很好解决这个问题。做个映射关系就过去了。

写过裸板程序的人不单单要考虑程序结构,还得考虑如何分配链接地址。
[解决办法]
引用:
正在学习深入理解计算机系统这本书,菜鸟表示看不下了,有什么实例可以帮组理解虚拟存储器吗?


使用虚拟内存的目的是解决物理内存空间不足问题。物理内存总是有限的,但在操作系统中并发运行着大量进程,显然物理内存是无法完全满足所有进程的内存需求的,于是可以将进程部分body交换到外部存储器,需要运行它们的时候再交换回来,这就是虚拟内存发挥的作用,进程留在物理内存的那部分称为驻留集。
[解决办法]
可以这样算, 一个 PTE 4 个字节, 管理 4KB 页面, 那么 32 位地址空间共 4GB, 需要 4GB/4KB = 1024 * 1024 个 PTE 结构来进行管理, 总共就需要 1024 * 1024 * 4 Byte = 4M

更严格的来说, 管理的时候除了 PTE, 还需要 PDE 的, 4GB 的页面需要 1024 个 PDE, 占用 4KB 的内存. 所以看起来似乎需要 4M + 4K 的内存才行, 但实际上, PDE 和 PTE 占用的内存是不需要进行管理的, 总共需要管理的内存是 4G - 4M, 只需要 1023 * 1024 个页表, 也就 PTE 是需要 4MB - 4KB 的内存, 而 PDE 刚好是 4KB, 加在一起总共是 4M.

热点排行