MMU除了给多进程提供支持外,还有什么作用?
本帖最后由 amaverick 于 2011-05-13 10:54 编辑
问题1
MMU实现了虚拟内存,这是多进程的基础。
除此之外MMU还有什么用的? 物理层上的MMU协处理器诞生的目的就是为了软件层上的多进程实现吗?
问题2
vxworks支持MMU,但vxworks又没有多进程的概念,只有线程(或者叫task)。那支持MMU的意义在哪?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下是我的一点粗浅理解。
A1:
MMU的作用主要有两个,一是虚拟内存管理,二是内存保护。多进程的实现不仅仅依赖于虚拟内存,而虚拟内存的作用也不仅仅是实现多进程。比如说虚拟内存可以通过swap技术来实现比物理上实际的内存更大的内存,如果一个软件需要256M的内存,但是系统只有64M物理内存,通过虚拟内存和swap,照样可以跑起来。
A2:
vxworks可以认为是一种单进程多线程(任务)的OS,也就是说所有vxworks的线程(任务)共享一个内存空间,这会有一个问题:多个线程(任务)之间如何安全的共享同一个内存空间呢?通过MMU为不同的内存区域设置不同的访问权限,就可以解决内存的多线程(任务)共享的安全问题。
MMU不是必须的。MMU还可以完成多个处理核对资源的竞争判定。Linux所需的页机制可以在MMU上完成。页机制是有很多作用的……uclinux就不用MMU。
个人感觉。在VxWorks下,因为所有的全局函数和数据都是可以访问的,数据溢出很容易造成系统的不稳定。MMU可以施加一定的保护。比如保护text段不被意外修改什么的。
如果没有MMU,那么所有的数据都是透明的,会比较不稳定。
学习中 分享中