記憶體架構:
記憶體架構由快取、主存、磁碟等組成。快取的特點是低容量、高速度、**格;主存的特點是中容量、中速度、中**;磁碟則是大容量、低速度、低成本的儲存媒介。
記憶體管理:
記憶體管理就是對記憶體架構進行管理,使程式在記憶體架構的任何乙個層次上的存放對於使用者來說都是一樣的。使用者無需擔心自己的程式是存在快取、主存還是磁碟,反正執行、計算、輸出的結果都一樣。
記憶體管理要達到如下兩個目標:
這兩個目標就是衡量乙個記憶體管理系統是否完善的標準。它是所有記憶體管理系統必須提供的基本抽象。
虛擬記憶體的中心思想是將物理主存擴大到便宜、大容量的磁碟上,即將磁碟空間看作是主存空間的一部分。使用者程式存放在磁碟上就相當於存放在主存內。
虛擬記憶體是作業系統發展歷史上的乙個革命性突破,它也是使作業系統變得更加複雜的乙個主要因素。因為有了虛擬記憶體,我們編寫的程式從此不再受尺寸的限制(當然還是受制於虛位址空間大小的限制)。
根據作業系統是否占用rom或我們是否釆用記憶體對映的輸入輸出來分,存在兩種模式:
1、作業系統占用ram的底層,使用者程式占用ram的上層。
2、作業系統占用ram的底層和位於使用者程式位址空間上面的rom。使用者程式位於中間。
第2種模式又分為三種情況:
1、沒有使用記憶體對映的輸入輸出,rom裡面全部是作業系統。
2、使用了記憶體對映的輸入輸岀,rom的一部分是作業系統,另一部分屬於i/o裝置。
3、使用了記憶體對映的輸入輸出,rom全部屬於i/o裝置。
在單道程式設計環境下,整個記憶體裡面只有兩個程式:乙個是使用者程式,乙個是作業系統。由於只有乙個使用者程式,而作業系統所占用的記憶體空間是恆定的,我們可以將使用者程式總是載入到同乙個記憶體位址上,即使用者程式永遠從同乙個地方公升始執行。
在這種管理方式下,os永遠跳轉到同乙個地方來啟動使用者程式。這樣使用者程式裡面的位址都可以事先計算出來,即在程式執行前就計算出所有實體地址。這種在執行前將實體地址計算好的方式叫做靜態位址翻譯
。
多道程式設計可以極大地改善cpu和記憶體的效率,改善使用者響應時間。但作業系統的複雜性也會隨之增加。
在多道程式設計的情況下,無法將程式總是加到固定的記憶體位址上,也就是無法使用靜態位址翻譯。這樣我們就必須在程式載入完畢後才能計算實體地址,也就是在程式執行時進行位址翻譯,這種翻譯稱為動態位址翻譯
。
uCOS III 14 記憶體管理
記憶體釋放函式 在嵌入式系統設計中,一些可靠性要求非常高的系統應選擇使用靜態的,而普通的業務系統可以使用動態來提高記憶體使用效率。ucos 的記憶體管理是建立乙個記憶體池,靜態劃分一大塊連續空間作為記憶體管理的空間,裡面劃分為很多個記憶體塊。在使用的時候就從這個記憶體池中獲取乙個記憶體塊,使用完畢的...
IOS 學習筆記14 記憶體管理(2)記憶體管理策略
文章中帶有lpstudy的字樣表明是我個人的理解,可能會有不對的地方,敬請指教。html view plain copy 記憶體管理策略 在引用計數機制下,你可以採用nsobject protocol的方法和和標準的方法命名約定進行記憶體管理。nsobject也定義了乙個dealloc方法,它在物件...
C 語言規範 1 4 自動記憶體管理
手動記憶體管理要求開發人員管理記憶體塊的分配和 手動記憶體管理可能既耗時又麻煩。在 c 中提供了自動記憶體管理,使開發人員從這個繁重的任務中解脫出來。在絕大多數情況下,自動記憶體管理可以提高 質量和開發人員的工作效率,並且不會對表達能力或效能造成負面影響。示例using system public ...