虚拟内存的分段与分页实现
来源:互联网 发布:mac爱奇艺要flash 编辑:程序博客网 时间:2024/06/09 15:33
关于内存管理(虚拟内存的分段与分页实现),Intel Pentium完成哪些功能,Windows/Unix OS完成哪些功能?修改
《现代操作系统》在介绍内存管理的分段与分页结合时,介绍了分段和分页结合Intel Pentium的例子,那么处理器和操作系统在内存管理方面的配合和分工是怎样的?修改
按票数排序按时间排序
4 个回答
Paul Meng、Yakumo Ran、cadl 等人赞同
os在物理内存中随便找个地方按照cpu指定的规则填写页表页目录,然后通过cr3告诉cpu这个位置在哪里,cpu读取内容,分页机制开始运转。分段机制的工作原理差不多,os在物理内存中找个地方填写全局描述浮表gdt,然后lgdt告诉cpu这个位置,cpu读取信息,分段机制开始工作。不过现代os基本都是使用平坦寻址方式,分段机制除了管理特权级,没啥用可以忽略。
Scott、hill wind、lojunren 等人赞同
考虑两个程序,甲里面有这个:
乙里面有这个:
两个程序同时运行的时候,如果内存地址不用分页来转换,那么两个程序就会写入同一片物理内存,造成错误。然而,如果我们能让 cpu 不直接读写物理内存,而是经过一次翻译,能在甲程序运行时,把逻辑地址(x86 上为线性地址)1234h 翻译到物理地址 11234h,乙程序运行的时候则翻译成其他的,比如 21234h,这样两者就能够互不干扰了。
现代 CPU 里实现它的方式就是内存分页。具体的做法是在内存中开辟一小部分存储页表,cpu 遇到内存读写的操作时根据页表翻译到物理地址。而页表怎么写、进程切换的时候怎样维持页表就是操作系统的工作了。
mov [1234h], eax
mov ecx, [1234h]
现代 CPU 里实现它的方式就是内存分页。具体的做法是在内存中开辟一小部分存储页表,cpu 遇到内存读写的操作时根据页表翻译到物理地址。而页表怎么写、进程切换的时候怎样维持页表就是操作系统的工作了。
ken hu、Paul Meng、黄大洋 等人赞同
页表机制是Intel的CPU实现的,如何填充页表是Windows实现的,分界线就在这里。
孟德尔 赞同
实际应该这样来看,其中CPU做的事情之前都是操作系统做的,CPU的做的事情是通过硬件保存一部分信息加快(比如通过一个特殊的Cache,TLB)之前操作系统做的工作。当然,这样做的前提是大家都商量好比如我们要用页式管理虚拟内存。
如果CPU内部的储存空间足够(足以储存完整分页数据和相关的操作代码)的话,CPU可以完全接管操作系统的内存管理部分;现在没有这么做的主要原因是CPU内部储存还不足(或者说要做到完全接管的硬件代价太大)。同时,保持借口的简洁,操作系统实现的部分也可以有很大的灵活性。
如果CPU内部的储存空间足够(足以储存完整分页数据和相关的操作代码)的话,CPU可以完全接管操作系统的内存管理部分;现在没有这么做的主要原因是CPU内部储存还不足(或者说要做到完全接管的硬件代价太大)。同时,保持借口的简洁,操作系统实现的部分也可以有很大的灵活性。
0 0
- 虚拟内存的分段与分页实现
- linux下的虚拟内存和分页分段机制
- 分段 分页 虚拟内存空间 逻辑地址 物理地址
- 操作系统的分段与分页的区别
- 分页与分段的主要区别
- 操作系统:分段与分页的区别(转载)
- 关于内存的分段与分页机制
- 内存分页与分段
- 内存分页与分段
- 说说分段与分页
- 分段与分页
- 分段与分页
- 分页 与 分段
- 分页与分段
- 分段与分页
- 认识虚拟内存与分页文件
- Linux的分段分页
- 【操作系统】分段与分页机制
- Catalyst 3550/3560
- C语言中的数学函数
- ajax 使用问题
- Boost.Asio c++ 网络编程翻译(17)
- 环卫工撕政府征迁通告 环卫部门:乱张贴属违规
- 虚拟内存的分段与分页实现
- 2014秋C++ 第9周项目 循环程序设计
- 简单实现android中的电话窃听器
- 系统设计规范化解决了什么问题
- 浙江七男子赴苗寨买新娘 事后发现都是越南女子
- 程序的链接和装入及Linux下动态链接的实现
- 湖北:农妇与妹夫婚外情 分手时被杀抛尸水坑
- 独家专访nmb48萌妹子:我们想去中国拍电影!
- codeforces round 274 div2