操作系統(tǒng)基礎(chǔ) 單箕昭、多道編程操作系統(tǒng)的內(nèi)存管理

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

1.單道編程的內(nèi)存管理

在單道編程環(huán)境下解阅,整個(gè)內(nèi)存里面只有兩個(gè)程序:一個(gè)是用戶(hù)程序落竹,另一個(gè)是操作系統(tǒng)。由于只有一個(gè)用戶(hù)程序货抄,而操作系統(tǒng)所占用的內(nèi)存空間是恒定的述召,我們可以將用戶(hù)程序總是加載到同一個(gè)內(nèi)存地址上。即用戶(hù)程序永遠(yuǎn)從同一個(gè)地方開(kāi)始執(zhí)行蟹地。

在這種管理方式下桨武,操作系統(tǒng)永遠(yuǎn)跳轉(zhuǎn)到同一個(gè)地方來(lái)啟動(dòng)用戶(hù)程序。這樣锈津,用戶(hù)程序里面的地址都可以事先計(jì)算出來(lái)呀酸,即在程序運(yùn)行前就計(jì)算出所有的物理地址。這種在運(yùn)行前即將物理地址計(jì)算好的方式叫做靜態(tài)地址翻譯琼梆。

固定地址的內(nèi)存管理單元非常簡(jiǎn)單性誉,實(shí)際上并不需要任何內(nèi)存管理單元。因?yàn)槌绦虬l(fā)出的地址已經(jīng)是物理地址茎杂,在執(zhí)行過(guò)程中無(wú)須進(jìn)行任何地址翻譯错览。而這種情況的直接結(jié)果就是程序運(yùn)行速度快,因?yàn)樵竭^(guò)了地址翻譯這個(gè)步驟煌往。

缺點(diǎn):

1.整個(gè)程序要加載到內(nèi)存空間中去倾哺,將導(dǎo)致比物理內(nèi)存大的程序無(wú)法運(yùn)行。

2.只運(yùn)行一個(gè)程序造成資源浪費(fèi)刽脖,如果一個(gè)程序很小羞海,雖然所用內(nèi)存空間小,但剩下的內(nèi)存空間也無(wú)法使用曲管。

3.程序可能無(wú)法在不同的操作系統(tǒng)下運(yùn)行却邓,因?yàn)椴煌僮飨到y(tǒng)占用的內(nèi)存空間大小可能不一樣,使得用戶(hù)程序的起始地址可能不一樣院水。這樣在一個(gè)系統(tǒng)環(huán)境下編譯出來(lái)的程序很可能無(wú)法在另一個(gè)系統(tǒng)環(huán)境下執(zhí)行腊徙。

2.多道編程的內(nèi)存管理

多道編程可以極大地改善CPU和內(nèi)存的效率,改善用戶(hù)響應(yīng)時(shí)間檬某,但代價(jià)是操作系統(tǒng)的復(fù)雜性撬腾。

因?yàn)槎嗟谰幊痰那闆r下,無(wú)法將程序總是加到固定的內(nèi)存地址上恢恼,也就是無(wú)法使用靜態(tài)地址翻譯民傻。這樣我們就必須在程序加載完畢后才能計(jì)算物理地址,也就是在程序運(yùn)行時(shí)進(jìn)行地址翻譯,進(jìn)行從虛擬地址->物理地址的翻譯饰潜,這種翻譯稱(chēng)為動(dòng)態(tài)地址翻譯

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

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

固定分區(qū)的管理就是將內(nèi)存分為固定的幾個(gè)區(qū)域彭雾,每個(gè)區(qū)域的大小固定。最下面的分區(qū)為操作系統(tǒng)占用锁保,其他分區(qū)由用戶(hù)程序使用薯酝。這些分區(qū)大小可以一樣,也可以不一樣爽柒∥獠ぃ考慮到程序大小不一的實(shí)際情況,分區(qū)的大小通常也各不相同浩村。當(dāng)需要加載程序時(shí)做葵,選擇一個(gè)當(dāng)前閑置且容量夠大的分區(qū)進(jìn)行加載。

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

這種模式下心墅,當(dāng)一個(gè)新的程序想要運(yùn)行酿矢,必須排在一個(gè)共同的隊(duì)列里等待。當(dāng)有空閑分區(qū)時(shí)怎燥,才能進(jìn)行加載瘫筐。由于程序大小和分區(qū)大小不一定匹配,有可能形成一個(gè)小程序占用一個(gè)大分區(qū)的情況铐姚,從而造成內(nèi)存里雖然有小分區(qū)閑置策肝,但無(wú)法加載大程序的情況。

分開(kāi)隊(duì)列的固定分區(qū)策略

為解決上述問(wèn)題隐绵,我們可以將小程序加載到小分區(qū)里之众,讓不同的分區(qū)有不同的隊(duì)列,程序就可以分配到大小更合適的內(nèi)存空間依许。當(dāng)然酝枢,這種方式也有缺點(diǎn),就是如果還有空閑分區(qū)悍手,但等待的程序不在該分區(qū)的等待隊(duì)列上帘睦,就將造成有空間而不能運(yùn)行程序的尷尬處境。

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

非固定分區(qū)的思想很簡(jiǎn)單:當(dāng)一個(gè)程序需要占用內(nèi)存空間時(shí)坦康,就在該片空間里面分出一個(gè)大小剛剛滿(mǎn)足程序所需的空間竣付;再來(lái)一個(gè)程序,則在剩下的空間里面再這樣分出一塊來(lái)滞欠。在這種模式下古胆,一個(gè)程序可以加載到任何地方。

非固定分區(qū)內(nèi)存地址管理的機(jī)制也很簡(jiǎn)單,使用基址+極限來(lái)進(jìn)行地址翻譯逸绎。

即:

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

這種方式可以對(duì)每一個(gè)程序配備兩個(gè)寄存器:基址寄存器和極限寄存器惹恃。所有訪(fǎng)問(wèn)地址都必須在這兩個(gè)寄存器值框定的空間里,否則就算非法訪(fǎng)問(wèn)棺牧。

非固定分區(qū)這種管理方式存在一個(gè)重大問(wèn)題:如果程序在執(zhí)行過(guò)程中需要更多空間巫糙,怎么辦?解決的辦法當(dāng)然是在一開(kāi)始給程序分配空間時(shí)就分配足夠大的空間颊乘,留有一片閑置空間供程序增長(zhǎng)用参淹。不過(guò),在分配增長(zhǎng)空間后需要考慮一個(gè)問(wèn)題乏悄。一個(gè)程序的空間增長(zhǎng)通常有兩個(gè)來(lái)源:數(shù)據(jù)和棧浙值。

分配增長(zhǎng)空間

1.數(shù)據(jù)和棧往一個(gè)方向增長(zhǎng)。缺點(diǎn):當(dāng)下面的數(shù)據(jù)長(zhǎng)到上面數(shù)據(jù)所分配空間的底時(shí)檩小,就無(wú)法再長(zhǎng)了开呐;而移動(dòng)棧底非常不方便。

棧和數(shù)據(jù)同向生長(zhǎng).jpg

2.數(shù)據(jù)和棧相對(duì)而生長(zhǎng)规求。這是UNIX采取的策略负蚊。

棧和數(shù)據(jù)相向生長(zhǎng).jpg

重疊

如果一個(gè)程序超過(guò)了物理內(nèi)存,還能運(yùn)行嗎颓哮?

其實(shí)是能的家妆。這個(gè)辦法就是重疊。

重疊冕茅,就是將程序按照功能分成一段一段功能相對(duì)完整的單元伤极,一個(gè)單元執(zhí)行完后,再執(zhí)行下一個(gè)單元姨伤,而一旦執(zhí)行到下一個(gè)單元哨坪,就不會(huì)再執(zhí)行前面的單元。所以我們可以把后面的程序單元內(nèi)存數(shù)據(jù)覆蓋到當(dāng)前程序單元上乍楚。這樣就可以執(zhí)行一個(gè)比物理內(nèi)存還要大的程序当编。

但是這相當(dāng)于把內(nèi)存管理的部分功能交給了用戶(hù),不能算是操作系統(tǒng)提供的解決方案徒溪。

雙基址

如果我們運(yùn)行兩個(gè)一樣的程序忿偷,只是數(shù)據(jù)不同,我們自然想到能否讓兩個(gè)程序共享部分內(nèi)存空間臊泌。例如鲤桥,如果我們同時(shí)啟動(dòng)兩個(gè)PPT演示文稿,我們希望PPT的程序代碼部分能夠共享渠概。

設(shè)定兩組基址和極限茶凳。數(shù)據(jù)和代碼分別用一組基址和極限表示嫂拴,這就解決了問(wèn)題。

雙基址.jpg

2.3 交換內(nèi)存管理

問(wèn)題是程序在運(yùn)行之前贮喧,我們無(wú)法知道它需要內(nèi)存的準(zhǔn)確大小筒狠,所以?xún)?nèi)存增長(zhǎng)的問(wèn)題仍需解決,而交換就是一個(gè)方式箱沦。

交換是當(dāng)一個(gè)程序所占空間不夠時(shí)辩恼,我們將其倒到磁盤(pán)上,再加載到一片更大的內(nèi)存空間饱普。

總結(jié)

到目前為止运挫,本書(shū)已經(jīng)介紹了幾種基本的內(nèi)存管理方法状共,分別是固定加載地址的內(nèi)存管理套耕、固定分區(qū)的內(nèi)存管理、非固定分區(qū)的內(nèi)存管理和交換內(nèi)存管理峡继。其中冯袍,以交換內(nèi)存管理最為靈活和先進(jìn)。它可以解決因程序所需空間增長(zhǎng)而無(wú)法繼續(xù)運(yùn)行的困難碾牌,又可以實(shí)現(xiàn)動(dòng)態(tài)多道編程康愤。

但事實(shí)上,這種策略存在很多重大問(wèn)題舶吗,而其中最重要的兩個(gè)問(wèn)題是空間浪費(fèi)和程序大小受限征冷。

為解決這些問(wèn)題,出現(xiàn)了頁(yè)式內(nèi)存管理段式內(nèi)存管理誓琼。

參考資料:

《操作系統(tǒng)之哲學(xué)原理》 鄒恒明著

作者:一百歐姆

鏈接:http://www.reibang.com/p/7b5b419aa68e

來(lái)源:簡(jiǎn)書(shū)

著作權(quán)歸作者所有检激。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處腹侣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叔收,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子傲隶,更是在濱河造成了極大的恐慌饺律,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跺株,死亡現(xiàn)場(chǎng)離奇詭異复濒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乒省,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)芝薇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人作儿,你說(shuō)我怎么就攤上這事洛二。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵晾嘶,是天一觀的道長(zhǎng)妓雾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)垒迂,這世上最難降的妖魔是什么械姻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮机断,結(jié)果婚禮上楷拳,老公的妹妹穿的比我還像新娘。我一直安慰自己吏奸,他們只是感情好欢揖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奋蔚,像睡著了一般她混。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泊碑,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天坤按,我揣著相機(jī)與錄音,去河邊找鬼馒过。 笑死臭脓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腹忽。 我是一名探鬼主播来累,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼留凭!你這毒婦竟也來(lái)了佃扼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蔼夜,失蹤者是張志新(化名)和其女友劉穎兼耀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體求冷,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘤运,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匠题。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拯坟。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖韭山,靈堂內(nèi)的尸體忽然破棺而出郁季,到底是詐尸還是另有隱情冷溃,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布梦裂,位于F島的核電站似枕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏年柠。R本人自食惡果不足惜凿歼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冗恨。 院中可真熱鬧答憔,春花似錦、人聲如沸掀抹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)噪窘。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谱轨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工吠谢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留土童,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓工坊,卻偏偏與公主長(zhǎng)得像献汗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子王污,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容