平面内存模型和受保护内存模型之间的区别? VxWorks支持平面内存模型,Linux是否也支持平面内存模型?平面内存模型和受保护内存模型之间的区别?
回答
为了给出一个合理的答案,我们首先回顾一些概念。
大多数现代处理器都有一个内存管理单元(MMU),它被用于许多目的。
一个目的是在虚拟地址(CPU“看到”的那个)和物理地址(芯片实际连接的地方)之间映射。这被称为地址转换。
另一个目的是为特定的虚拟内存的位置设置访问属性(东西像内存读写,或只读,或无法访问)
随着MMU,你可以有所谓的“团结映射“处理器的虚拟地址与物理地址相同(即不使用地址转换)。例如,如果处理器访问0x10000,则它正在访问物理位置0x10000。
“扁平”内存模型通常指的是CPU访问的任何虚拟地址都是唯一的。因此,对于32位CPU,地址空间的最大限制为4G。
它通常(虽然不一定)用于指代虚拟内存和物理内存之间的统一映射。相比之下,在工作站领域,大多数操作系统(Linux/Windows)都使用“重叠”内存模型。例如,您在Windows中启动的任何程序(一个进程)将具有0x10000的起始地址。
窗口如何有10个进程都从地址0x10000运行?
这是因为每个进程都使用MMU来映射虚拟地址0x10000到不同的物理地址。对于P1可能有0x10000 = 0x10000,而P2有0x10000 = 0x40000,等等......
在RAM中,程序是在不同的物理地址,但CPU虚拟地址空间看起来每个进程相同。
据我所知,Windows和Standard Linux总是使用重叠模型(即它们没有平面模型)。 uLinux或其他特殊内核可能有一个扁平模型。
现在,保护与平坦与受保护模型无关。 我会说大多数重叠的模型操作系统将使用保护,以便一个进程不会影响(即写入另一个进程的内存)。使用VxWorks 6.x并引入Real-Time Processes,即使使用平面内存模型,通过使用保护也可以保护各个RTP(以及内核应用程序)。
如果您不使用RTP并在vxWorks内核中运行所有内容,则不会使用保护。
那么,保护如何工作(无论是在VxWorks RTP或其他操作系统进程中)? 从本质上讲,RTP/Process存在于具有一定范围的(虚拟)地址的“内存气泡”中,该地址包含代码,数据,堆以及其他各种内存位置。
如果RTP/Process尝试访问其外部存储区以外的内存位置,MMU将生成一个异常并调用OS(或信号处理程序)。典型的结果是段违例/总线异常。
但是,如果一个进程无法转义它的内存泡沫,一个进程如何将一个数据包发送到以太网端口?这取决于处理器体系结构,但本质上,用户端(RTP)套接字库(例如)会进行“系统调用” - 这是一个将cpu切换到内核空间和超级用户模式的特殊指令。此时,某种设备驱动程序(通常驻留在内核中)运行将数据推送到某个硬件设备。一旦完成,系统调用返回,我们回到运行用户代码的RTP /进程空间。
操作系统负责所有MMU编程,系统调用处理等......这对应用程序是不可见的。
- 1. 小内存模型和中型内存模型有什么区别?
- 2. 受保护的内部和内部受保护有区别吗?
- 3. 内核模式和内存保护
- 4. Java内存模型和C++ 11内存模型有什么相似之处?
- 5. 高内存和高内存区域之间的区别
- 6. 消息传递和共享内存并发模型之间有什么区别?
- 7. Windows保护模式 - 内存
- 8. “内存缓存”和“内存池”之间的区别
- 9. MVVM - 模型和ViewModel之间的区别
- 10. Scala和Java内存模型
- 11. 小内存模式和大内存模式有什么区别?
- 12. Java内存模型
- 13. 存储库模式和视图模型模式之间的区别
- 14. 敏捷模型和螺旋模型之间的区别
- 15. OpenCL:__constant内存和const之间的区别__global内存
- 16. .NET 3.5SP1 64位内存模型与32位内存模型
- 17. 受保护变量和模型绑定
- 18. 领域模型和概念模型之间有什么区别
- 19. 线程缓存和Java内存模型
- 20. 领域模型,概念模型和商业模型等之间的区别
- 21. 内存竞技场和内存池之间有什么区别?
- 22. IIS 8.0中内核模式和用户模式缓存之间的区别
- 23. JavaScript中的内存模型
- 24. Adreno GPU的内存模型
- 25. 受保护的内部集属性的模型绑定
- 26. CakePHP保存模型和关联模型
- 27. 保存时忽略内联模型
- 28. 双重锁定内存模型保证
- 29. 模型内容没有得到保存
- 30. HTML文档类型和内容类型之间的区别?
感谢您的详细解答。您能否介绍一下如何在VxWorks 6.x中的两个RTP之间提供内存保护? – Ritesh