平面內存模型和受保護內存模型之間的區別? 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