嵌入式操作系統內存管理有哪幾種,各有何特性


嵌入式系統所用到的內存管理機制主要有以下兩種:

1、虛擬內存管理機制:
有一些嵌入式處理器提供了MMU,在MMU具備內存地址映射和尋址功能,它使操作系統的內存管理更加方便。如果存在MMU ,操作系統會使用它完成從虛擬地址到物理地址的轉換, 所有的應用程序只需要使用虛擬地址尋址數據。 這種使用虛擬地址尋址整個系統的主存和輔存的方式在現代操作系統中被稱為虛擬內存。MMU 便是實現虛擬內存的必要條件。虛擬內存的管理方法使系統既可以運行體積比物理內存還要大的應用程序,也可以實現“按需調頁”策略,既滿足了程序的運行速度,又節約了物理內存空間。 在Linux系統中,虛擬內存機制的實現實現為我們提供了一個典型的例子:在不同的體系結構下, 使用了三級或者兩級頁式管理,利用MMU 完成從虛擬地址到物理地址之間的轉換。基於虛擬內存管理的內存最大好處是:由於不同進程有自己單獨的進程空間,十分有效的提高了系統可靠性和安全性。
2、非虛擬內存管理機制:
在實時性要求比較高的情況下,很多嵌入式系統並不需要虛擬內存機制:因為虛擬內存機制會導致不確定性的 I/O阻塞時間, 使得程序運行時間不可預期,這是實時嵌入式系統的致命缺陷;另外,從嵌入式處理器的成本考慮,大多采用不裝配MMU 的嵌入式微處理器。所以大多嵌入式系統采用的是實存儲器管理策略。因而對於內存的訪問是直接的,它對地址的訪問不需要經過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實際的物理地址;而且,大多數嵌入式操作系統對內存空間沒有保護,各個進程實際上共享一個運行空間。一個進程在執行前,系統必須為它分配足夠的連續地址空間,然后全部載入主存儲器的連續空間。
由此可見,嵌入式系統的開發人員不得不參與系統的內存管理。從編譯內核開始,開發人員必須告訴系統這塊開發板到底擁有多少內存;在開發應用程序時,必須考慮內存的分配情況並關注應用程序需要運行空間的大小。另外,由於采用實存儲器管理策略,用戶程序同內核以及其它用戶程序在一個地址空間,程序開發時要保證不侵犯其它程序的地址空間,以使得程序不至於破壞系統的正常工作,或導致其它程序的運行異常;因而,嵌入式系統的開發人員對軟件中的一些內存操作要格外小心。 UCOS就是使用非虛擬內存管理的一個例子,在UCOS中,所有的任務共享所有的物理內存,任務之間沒有內存保護機制,這樣能夠提高系統的相應時間,但是任務內存操作不當,會引起系統崩潰。
 
段式存儲管理和頁式存儲管理的本質區別:

    頁式存儲管理中的邏輯地址有頁號和業內地址兩部分組成,但作業仍然使用連續的邏輯地址,可把它看作是一維的(線性的)地址結構。用戶沒有分頁的概念,操作系統把作業信息裝入主存時才按照塊長進行分頁。

    段式存儲管理中的邏輯地址有段號和段內地址兩部分組成。他支持用戶的分段,每段內的邏輯地址是連續的,而段與段之間的邏輯地址是不連續的。因此段式存儲管理中的邏輯地址實際上是采用了二維的地址結構。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM