操作系統(tǒng)基礎 單、多道編程操作系統(tǒng)的內存管理

單漠酿、多道編程操作系統(tǒng)的內存管理

1.單道編程的內存管理

在單道編程環(huán)境下拐袜,整個內存里面只有兩個程序:一個是用戶程序吉嚣,另一個是操作系統(tǒng)。由于只有一個用戶程序蹬铺,而操作系統(tǒng)所占用的內存空間是恒定的尝哆,我們可以將用戶程序總是加載到同一個內存地址上。即用戶程序永遠從同一個地方開始執(zhí)行甜攀。
在這種管理方式下秋泄,操作系統(tǒng)永遠跳轉到同一個地方來啟動用戶程序琐馆。這樣,用戶程序里面的地址都可以事先計算出來恒序,即在程序運行前就計算出所有的物理地址瘦麸。這種在運行前即將物理地址計算好的方式叫做靜態(tài)地址翻譯
固定地址的內存管理單元非常簡單歧胁,實際上并不需要任何內存管理單元滋饲。因為程序發(fā)出的地址已經是物理地址,在執(zhí)行過程中無須進行任何地址翻譯喊巍。而這種情況的直接結果就是程序運行速度快屠缭,因為越過了地址翻譯這個步驟。

缺點:

1.整個程序要加載到內存空間中去崭参,將導致比物理內存大的程序無法運行勿她。

2.只運行一個程序造成資源浪費,如果一個程序很小阵翎,雖然所用內存空間小逢并,但剩下的內存空間也無法使用。

3.程序可能無法在不同的操作系統(tǒng)下運行郭卫,因為不同操作系統(tǒng)占用的內存空間大小可能不一樣砍聊,使得用戶程序的起始地址可能不一樣。這樣在一個系統(tǒng)環(huán)境下編譯出來的程序很可能無法在另一個系統(tǒng)環(huán)境下執(zhí)行贰军。

2.多道編程的內存管理

多道編程可以極大地改善CPU和內存的效率玻蝌,改善用戶響應時間,但代價是操作系統(tǒng)的復雜性词疼。

因為多道編程的情況下俯树,無法將程序總是加到固定的內存地址上,也就是無法使用靜態(tài)地址翻譯贰盗。這樣我們就必須在程序加載完畢后才能計算物理地址许饿,也就是在程序運行時進行地址翻譯,進行從虛擬地址->物理地址的翻譯舵盈,這種翻譯稱為動態(tài)地址翻譯陋率。

多道編程下的內存管理策略有兩種:固定分區(qū)和非固定分區(qū)。

2.1 固定分區(qū)的多道編程內存管理策略

固定分區(qū)的管理就是將內存分為固定的幾個區(qū)域秽晚,每個區(qū)域的大小固定瓦糟。最下面的分區(qū)為操作系統(tǒng)占用,其他分區(qū)由用戶程序使用赴蝇。這些分區(qū)大小可以一樣菩浙,也可以不一樣。考慮到程序大小不一的實際情況劲蜻,分區(qū)的大小通常也各不相同陆淀。當需要加載程序時,選擇一個當前閑置且容量夠大的分區(qū)進行加載斋竞。

共享隊列的固定分區(qū)策略

這種模式下,當一個新的程序想要運行秃殉,必須排在一個共同的隊列里等待坝初。當有空閑分區(qū)時,才能進行加載钾军。由于程序大小和分區(qū)大小不一定匹配鳄袍,有可能形成一個小程序占用一個大分區(qū)的情況,從而造成內存里雖然有小分區(qū)閑置吏恭,但無法加載大程序的情況拗小。

分開隊列的固定分區(qū)策略

為解決上述問題,我們可以將小程序加載到小分區(qū)里樱哼,讓不同的分區(qū)有不同的隊列哀九,程序就可以分配到大小更合適的內存空間。當然搅幅,這種方式也有缺點阅束,就是如果還有空閑分區(qū),但等待的程序不在該分區(qū)的等待隊列上茄唐,就將造成有空間而不能運行程序的尷尬處境息裸。

2.2非固定分區(qū)的多道編程內存管理策略

非固定分區(qū)的思想很簡單:當一個程序需要占用內存空間時,就在該片空間里面分出一個大小剛剛滿足程序所需的空間沪编;再來一個程序呼盆,則在剩下的空間里面再這樣分出一塊來。在這種模式下蚁廓,一個程序可以加載到任何地方访圃。

非固定分區(qū)內存地址管理的機制也很簡單,使用基址+極限來進行地址翻譯相嵌。

即:

? 物理地址=虛擬地址+程序所在區(qū)域的起始地址

這種方式可以對每一個程序配備兩個寄存器:基址寄存器和極限寄存器挽荠。所有訪問地址都必須在這兩個寄存器值框定的空間里,否則就算非法訪問平绩。

非固定分區(qū)這種管理方式存在一個重大問題:如果程序在執(zhí)行過程中需要更多空間圈匆,怎么辦?解決的辦法當然是在一開始給程序分配空間時就分配足夠大的空間捏雌,留有一片閑置空間供程序增長用跃赚。不過,在分配增長空間后需要考慮一個問題。一個程序的空間增長通常有兩個來源:數據和棧纬傲。

分配增長空間

1.數據和棧往一個方向增長满败。缺點:當下面的數據長到上面數據所分配空間的底時,就無法再長了叹括;而移動棧底非常不方便算墨。


棧和數據同向生長.jpg

2.數據和棧相對而生長。這是UNIX采取的策略汁雷。


棧和數據相向生長.jpg

重疊

如果一個程序超過了物理內存净嘀,還能運行嗎?

其實是能的侠讯。這個辦法就是重疊挖藏。

重疊,就是將程序按照功能分成一段一段功能相對完整的單元厢漩,一個單元執(zhí)行完后膜眠,再執(zhí)行下一個單元,而一旦執(zhí)行到下一個單元溜嗜,就不會再執(zhí)行前面的單元宵膨。所以我們可以把后面的程序單元內存數據覆蓋到當前程序單元上。這樣就可以執(zhí)行一個比物理內存還要大的程序炸宵。

但是這相當于把內存管理的部分功能交給了用戶,不能算是操作系統(tǒng)提供的解決方案焙压。

雙基址

如果我們運行兩個一樣的程序鸿脓,只是數據不同,我們自然想到能否讓兩個程序共享部分內存空間涯曲。例如野哭,如果我們同時啟動兩個PPT演示文稿,我們希望PPT的程序代碼部分能夠共享幻件。

設定兩組基址和極限拨黔。數據和代碼分別用一組基址和極限表示,這就解決了問題绰沥。


雙基址.jpg
2.3 交換內存管理

問題是程序在運行之前篱蝇,我們無法知道它需要內存的準確大小,所以內存增長的問題仍需解決徽曲,而交換就是一個方式零截。

交換是當一個程序所占空間不夠時,我們將其倒到磁盤上秃臣,再加載到一片更大的內存空間涧衙。

總結

到目前為止哪工,本書已經介紹了幾種基本的內存管理方法,分別是固定加載地址的內存管理弧哎、固定分區(qū)的內存管理雁比、非固定分區(qū)的內存管理和交換內存管理。其中撤嫩,以交換內存管理最為靈活和先進偎捎。它可以解決因程序所需空間增長而無法繼續(xù)運行的困難,又可以實現(xiàn)動態(tài)多道編程序攘。

但事實上茴她,這種策略存在很多重大問題,而其中最重要的兩個問題是空間浪費和程序大小受限两踏。

為解決這些問題败京,出現(xiàn)了頁式內存管理段式內存管理兜喻。

參考資料:
《操作系統(tǒng)之哲學原理》 鄒恒明著

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末梦染,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子朴皆,更是在濱河造成了極大的恐慌帕识,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遂铡,死亡現(xiàn)場離奇詭異肮疗,居然都是意外死亡,警方通過查閱死者的電腦和手機扒接,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門伪货,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钾怔,你說我怎么就攤上這事碱呼。” “怎么了宗侦?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵愚臀,是天一觀的道長。 經常有香客問我矾利,道長姑裂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任男旗,我火速辦了婚禮舶斧,結果婚禮上,老公的妹妹穿的比我還像新娘察皇。我一直安慰自己捧毛,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呀忧,像睡著了一般师痕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上而账,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天胰坟,我揣著相機與錄音,去河邊找鬼泞辐。 笑死笔横,一個胖子當著我的面吹牛,可吹牛的內容都是我干的咐吼。 我是一名探鬼主播吹缔,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锯茄!你這毒婦竟也來了厢塘?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤肌幽,失蹤者是張志新(化名)和其女友劉穎晚碾,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體喂急,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡格嘁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廊移。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糕簿。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狡孔,靈堂內的尸體忽然破棺而出懂诗,到底是詐尸還是另有隱情,我是刑警寧澤步氏,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布响禽,位于F島的核電站,受9級特大地震影響荚醒,放射性物質發(fā)生泄漏芋类。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一界阁、第九天 我趴在偏房一處隱蔽的房頂上張望侯繁。 院中可真熱鬧,春花似錦泡躯、人聲如沸贮竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咕别。三九已至技健,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惰拱,已是汗流浹背雌贱。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偿短,地道東北人欣孤。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像昔逗,于是被迫代替她去往敵國和親降传。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容

  • 1. 基礎知識 1.1勾怒、 基本概念婆排、 功能 馮諾伊曼體系結構1、計算機處理的數據和指令一律用二進制數表示2控硼、順序執(zhí)...
    yunpiao閱讀 5,274評論 1 22
  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計算機的軟硬件資源泽论,并合理的組織調度計算機的工作和資源的分配艾少,...
    野狗子嗷嗷嗷閱讀 11,907評論 3 34
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時卡乾,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,257評論 0 9
  • word直接復制來了缚够,格式就不改了幔妨。至于這門課怎么復習,只要平時實驗都認真完成谍椅、報告認真寫误堡,平時分都很高;考試的話...
    Jozhn閱讀 4,531評論 0 8
  • 泛黃的草地 熟悉的泥土氣息 樹葉一片片飄向你的腳底 你們曾約定: 待到春風起 一起破春泥 南飛的鴻雁 空中徘徊了多...
    石憶_閱讀 787評論 18 61