虚拟内存的作用是什么 虚拟内存有什么用( 二 )


虚拟内存的作用是什么  虚拟内存有什么用

文章插图

虚拟内存的作用是什么  虚拟内存有什么用

文章插图

虚拟内存的作用是什么  虚拟内存有什么用

文章插图

虚拟内存的作用是什么  虚拟内存有什么用

文章插图

虚拟内存的作用是什么  虚拟内存有什么用

文章插图

在磁盘和内存之间传送页的活动叫交换或页面调度 。 页从磁盘换入(或页面调入)DRAM和从DRAM换出(或页面调出)磁盘 。 一直等待直到最后时刻 , 当不命中发生时才换入页面的策略叫按需页面调度 , 所有现代操作系统都使用按需页面调度方式 。
2.2.3 完成页错误页错误处理程序执行返回中断指令(iret)返回:
像ret指令但恢复特权级别
返回造成错误的指令
虚拟内存的作用是什么  虚拟内存有什么用

文章插图

2.2.4 分配页
虚拟内存的作用是什么  虚拟内存有什么用

文章插图

只有当出现 page fault 的时候才将数据拷贝到内存 , 即按需页面调度
2.2.5 局部性原理虚拟内存看起来不高效 , 但因局部性原理 , 虚拟内存非常高效
任何时刻程序都倾向于访问一组称为工作集的活动的虚拟页 , 局部性越好程序工作集越小
工作集大小<内存大小 , 进程有良好性能
工作集大小>内存大小 , 多个进程同时运行 , 页面不断被交换(复制)进或出 , 也叫抖动
3 作为内存管理工具每个进程都有自己的虚拟地址空间 , 这些地址空间可以看作是简单的线性空间(但实际上在物理内存中可能是间隔、分散的) , 映射函数通过物理内存分散地址 , 好的映射函数可提升局部性 , 具体的映射过程如图:
虚拟内存的作用是什么  虚拟内存有什么用

文章插图

作为内存管理工具:
简化内存分配:每个虚拟页都可被映射到任何物理页上 。 虚拟页可在不同时间存在不同物理页上
简化共享:每个进程都有自己私有的代码、数据、堆及栈不与其他进程共享 , 为操作系统提供进程和系统间共享代码和数据的机制 , 映射不同进程的虚拟页到同样的物理页(也就是上图 PP 6 的状况 , 只读)
简化链接和加载:每个程序有相同的抽象 , 有相似的虚拟地址空间 , Code、data、heap段开始于相同的地址;execve为.text和.data节分配虚拟页并创建标记为invalid的页表项(PTEs);根据虚拟内存系统的需要将.text和.data段逐页复制
虚拟内存的作用是什么  虚拟内存有什么用

文章插图

4 作为内存保护工具任何现代计算机系统必须为操作系统提供手段控制对内存系统的访问 , 不应允许进程修改只读代码段 , 也不许读或修改任何内核中的代码和数据结构 。 不许读或改其他进程私有地址 , 不许改任何与其他进程共享的虚拟页面 , 除非所有共享者都显式允许这么做(通过调用明确的进程间通信系统调用)
使用权限位扩展PTEs , 高位是表示权限的位 , MMU 检查这些位进行权限控制(读、写、执行) , 如下图所示:
虚拟内存的作用是什么  虚拟内存有什么用

文章插图

5 地址翻译5.1 地址翻译符号地址空间可分为:
线性地址空间:连续非负整数地址的有序集合 , {0, 1, 2, 3 … }
虚拟地址空间:N=2^n的虚拟地址集合 , {0, 1, 2, 3, …, N-1}
物理地址空间:M=2^m的物理地址集合 , {0, 1, 2, 3, …, M-1}