第4章 4-2內(nèi)存空間管理--連續(xù)

2柬采、連續(xù)分配方式

(1)單一連續(xù)分配

內(nèi)存分為系統(tǒng)區(qū)和用戶區(qū)兩部分:

????系統(tǒng)區(qū):僅提供給OS使用欢唾,通常放在內(nèi)存低址部分

????用戶區(qū):除系統(tǒng)區(qū)以外的全部?jī)?nèi)存空間,提供給用戶使用粉捻。

最簡(jiǎn)單的一種存儲(chǔ)管理方式礁遣,只能用于單用戶、單任務(wù)的操作系統(tǒng)中肩刃。

????優(yōu)點(diǎn):易于管理祟霍。

????缺點(diǎn):對(duì)要求內(nèi)存空間少的程序,造成內(nèi)存浪費(fèi)盈包;程序全部裝入沸呐,很少使用的程序部分也占用內(nèi)存。

(2)固定分區(qū)分配

????把內(nèi)存分為一些大小相等或不等的分區(qū)(partition)呢燥,每個(gè)應(yīng)用進(jìn)程占用一個(gè)分區(qū)崭添。操作系統(tǒng)占用其中一個(gè)分區(qū)。

????提高:支持多個(gè)程序并發(fā)執(zhí)行叛氨,適用于多道程序系統(tǒng)和分時(shí)系統(tǒng)呼渣。最早的多道程序存儲(chǔ)管理方式。

????劃分為幾個(gè)分區(qū)力试,便只允許幾道作業(yè)并發(fā)

1)如何劃分分區(qū)大嗅懔凇:

????分區(qū)大小相等:只適合于多個(gè)相同程序的并發(fā)執(zhí)行(處理多個(gè)類型相同的對(duì)象)。缺乏靈活性畸裳。

????分區(qū)大小不等:多個(gè)小分區(qū)、適量的中等分區(qū)淳地、少量的大分區(qū)怖糊。根據(jù)程序的大小,分配當(dāng)前空閑的颇象、適當(dāng)大小的分區(qū)伍伤。

2)需要的數(shù)據(jù)結(jié)構(gòu)

????建立一記錄相關(guān)信息的分區(qū)表(或分區(qū)鏈表),表項(xiàng)有:| 起始位置 | 大小 | 狀態(tài) |

????分區(qū)表中遣钳,表項(xiàng)值隨著內(nèi)存的分配和釋放而動(dòng)態(tài)改變

3)程序分配內(nèi)存的過(guò)程:

????也可將分區(qū)表分為兩個(gè)表格:空閑分區(qū)表/占用分區(qū)表扰魂。從而減小每個(gè)表格長(zhǎng)度。

????檢索算法:空閑分區(qū)表可能按不同分配算法采用不同方式對(duì)表項(xiàng)排序(將分區(qū)按大小排隊(duì)或按分區(qū)地址高低排序)蕴茴。

????過(guò)程:檢索空閑分區(qū)表劝评;找出一個(gè)滿足要求且尚未分配的分區(qū),分配給請(qǐng)求程序倦淀;若未找到大小足夠的分區(qū)蒋畜,則拒絕為該用戶程序分配內(nèi)存。

????固定分配的不足:

????????內(nèi)碎片(一個(gè)分區(qū)內(nèi)的剩余空間)造成浪費(fèi)

????????分區(qū)總數(shù)固定撞叽,限制并發(fā)執(zhí)行的程序數(shù)目姻成。

(3)動(dòng)態(tài)分區(qū)分配

????分區(qū)的大小不固定:在裝入程序時(shí)根據(jù)進(jìn)程實(shí)際需要插龄,動(dòng)態(tài)分配內(nèi)存空間,即——需要多少劃分多少科展。

????空閑分區(qū)表項(xiàng):從1項(xiàng)到n項(xiàng):

????????內(nèi)存會(huì)從初始的一個(gè)大分區(qū)不斷被劃分均牢、回收從而形成內(nèi)存中的多個(gè)分區(qū)。

優(yōu)點(diǎn):并發(fā)進(jìn)程數(shù)沒(méi)有固定數(shù)的限制才睹,不產(chǎn)生內(nèi)碎片膨处。

缺點(diǎn):有外碎片(分區(qū)間無(wú)法利用的空間)

1)數(shù)據(jù)結(jié)構(gòu)

? ? ①空閑分區(qū)表:

????????記錄每個(gè)空閑分區(qū)的情況。

????????每個(gè)空閑分區(qū)對(duì)應(yīng)一個(gè)表目砂竖,包括分區(qū)序號(hào)真椿、分區(qū)始址及分區(qū)的大小等數(shù)據(jù)項(xiàng)。

? ? ②空閑分區(qū)鏈:

????????每個(gè)分區(qū)的起始部分乎澄,設(shè)置用于控制分區(qū)分配的信息突硝,及用于鏈接各分區(qū)的前向指針;

????????分區(qū)尾部則設(shè)置一后向指針置济,在分區(qū)末尾重復(fù)設(shè)置狀態(tài)位和分區(qū)大小表目方便檢索解恰。

2)分區(qū)分配算法

動(dòng)態(tài)分區(qū)方式,分區(qū)多浙于、大小差異各不相同护盈,此時(shí)把一個(gè)新作業(yè)裝入內(nèi)存,更需選擇一個(gè)合適的分配算法羞酗,從空閑分區(qū)表/鏈中選出一合適分區(qū)

①首次適應(yīng)算法FF(first-fit)

????空閑分區(qū)排序:以地址遞增的次序鏈接腐宋。

????檢索:分配內(nèi)存時(shí),從鏈?zhǔn)组_(kāi)始順序查找直至找到一個(gè)大小能滿足要求的空閑分區(qū)檀轨;

????分配:從該分區(qū)中劃出一塊作業(yè)要求大小的內(nèi)存空間分配給請(qǐng)求者胸竞,余下的空閑分區(qū)大小改變?nèi)粤粼诳臻e鏈中。

????若從頭到尾檢索不到滿足要求的分區(qū)則分配失敗

優(yōu)點(diǎn):優(yōu)先利用內(nèi)存低址部分参萄,保留了高地址部分的大空閑區(qū)卫枝;

缺點(diǎn):但低址部分不斷劃分,會(huì)產(chǎn)生較多小碎片讹挎;而且每次查找從低址部分開(kāi)始校赤,會(huì)逐漸增加查找開(kāi)銷。

②循環(huán)首次適應(yīng)算法 (next-fit)

????空閑分區(qū)排序:按地址

????檢索:從上次找到的空閑分區(qū)的下一個(gè)空閑分區(qū)開(kāi)始查找筒溃,直到找到一個(gè)能滿足要求的空閑分區(qū)马篮。為實(shí)現(xiàn)算法,需要:

????????設(shè)置一個(gè)起始查尋指針

????????采用循環(huán)查找方式

????分配:分出需要的大小

優(yōu)點(diǎn):空閑分區(qū)分布均勻铡羡,減少查找開(kāi)銷

缺點(diǎn):缺乏大的空閑分區(qū)

③最佳適應(yīng)算法 (best-fit)

總是把能滿足要求积蔚、又是最小的空閑分區(qū)分配給作業(yè),避免“大材小用”烦周。

????空閑分區(qū)排序:所有空閑分區(qū)按容量從小到大排序成空閑分區(qū)表或鏈尽爆。

????檢索:從表或鏈的頭開(kāi)始怎顾,找到的第一個(gè)滿足的就分配

????分配:分出需要的大小

? 缺點(diǎn):每次找到最合適大小的分區(qū)割下的空閑區(qū)也總是最小,會(huì)產(chǎn)生許多難以利用的小空閑區(qū)(外碎片)

④最差適應(yīng)算法/最壞匹配法(worst-fit):基本不留下小空閑分區(qū)漱贱,但會(huì)出現(xiàn)缺乏較大的空閑分區(qū)的情況槐雾。

⑤快速適應(yīng)算法

????根據(jù)進(jìn)程常用空間大小進(jìn)行劃分,相同大小的串成一個(gè)鏈幅狮,需管理多個(gè)各種不同大小的分區(qū)的鏈表募强。進(jìn)程需要時(shí),從最接近大小需求的鏈中摘一個(gè)分區(qū)崇摄。類似的:伙伴算法

????能快速找到合適分區(qū)擎值,但鏈表信息會(huì)很多;實(shí)際上是空間換時(shí)間逐抑。

3)分區(qū)分配操作

分配內(nèi)存

????找到滿足需要的合適分區(qū)鸠儿,劃出進(jìn)程需要的空間

????????if s<=size,將整個(gè)分區(qū)分配給請(qǐng)求者

????????if s> size厕氨,按請(qǐng)求的大小劃出一塊內(nèi)存空間分配出去进每,余下部分留在空閑鏈中,將分配區(qū)首址返回給調(diào)用者命斧。

回收內(nèi)存

????進(jìn)程運(yùn)行完畢釋放內(nèi)存時(shí)田晚,系統(tǒng)根據(jù)回收區(qū)首址a,在空閑分區(qū)鏈(表)中找到相應(yīng)插入點(diǎn)国葬,根據(jù)情況修改空閑分區(qū)信息贤徒,可能會(huì)進(jìn)行空閑分區(qū)的合并:

????????(1)回收區(qū)(首址a)與一個(gè)分區(qū)f1末尾(首址b+大小)鄰接:將回收區(qū)與f1合并胃惜,修改f1的表項(xiàng)的分區(qū)大小

????????(2)回收區(qū)(首址a+大信⒗颉)與一個(gè)分區(qū)f2的首址b鄰接:將回收區(qū)與f2合并,修改f2的表項(xiàng)的首址船殉、分區(qū)大小

????????(3) (1)(2)兩種情況都有蝴簇,則將回收區(qū)與前后兩個(gè)分區(qū)F1质欲、F2鄰接:將三個(gè)分區(qū)合并混滔,使用F1的表項(xiàng)和F1的首址彩郊,取消F2的表項(xiàng)铝耻,大小為三者之和

????????(4) 回收區(qū)沒(méi)有鄰接的分區(qū):為回收區(qū)單獨(dú)建立新表項(xiàng)甥材,填寫(xiě)回收區(qū)的首址與大小拉盾,根據(jù)其首址插到空閑鏈中的適當(dāng)位置

????動(dòng)態(tài)連續(xù)分配方式無(wú)法解決“外碎片”問(wèn)題

????當(dāng)前內(nèi)存分配有3個(gè)小碎片姊途,分別為30K钉疫,64K硼讽,40K。若有一個(gè)120K的作業(yè)申請(qǐng)一塊連續(xù)空間牲阁,無(wú)法滿足固阁。

????解決思路:移動(dòng)分區(qū)位置壤躲,將小碎片整合為一個(gè)足夠大小可被使用的分區(qū)。即緊湊思想

(4)動(dòng)態(tài)重定位分區(qū)分配?——有緊湊功能的動(dòng)態(tài)分區(qū)分配

用戶程序在內(nèi)存中移動(dòng)备燃,將空閑空間緊湊起來(lái)提高空間利用率碉克。但必然需要地址變化,增加“重定位”工作并齐。

地址變換過(guò)程是在程序執(zhí)行過(guò)程期間(相對(duì)地址與重定位寄存器中的地址相加)漏麦,隨著對(duì)每條指令的訪問(wèn)自動(dòng)進(jìn)行,稱為動(dòng)態(tài)重定位况褪。

動(dòng)態(tài)重定位分區(qū)分配算法與動(dòng)態(tài)分區(qū)分配算法基本相同撕贞,差別在于增加了緊湊的功能。

伙伴系統(tǒng)

????分區(qū)大小有規(guī)定测垛,且分區(qū)動(dòng)態(tài)變化

????????無(wú)論已分配還是空閑分區(qū)捏膨,大小都為2的k此冪。若整個(gè)可分配空間大小為2m赐纱,則1≤k≤m.

????????隨著系統(tǒng)運(yùn)行脊奋,內(nèi)存被不斷劃分,形成若干不連續(xù)的空閑分區(qū)疙描。對(duì)每一類具有相同大小的空閑分區(qū)設(shè)置一雙向鏈表诚隙,即會(huì)有k個(gè)鏈表,鏈表中的分區(qū)大小都是2m起胰。

????????進(jìn)程申請(qǐng)n個(gè)大小的空間時(shí)久又,計(jì)算n= 2i。則找i對(duì)應(yīng)的鏈表效五。若i大小的鏈表沒(méi)有地消,則找i+1的鏈表。找到的分區(qū)對(duì)半劃分后畏妖,一半用于分配脉执,一半鏈接到較小一級(jí)的鏈表里去。

????????一次分配和回收都可能對(duì)應(yīng)多次的劃分和合并戒劫。

(5)內(nèi)存空間管理之對(duì)換

當(dāng)內(nèi)存空間還是滿足不了需求時(shí)半夷,引入“對(duì)換”思想:

????把內(nèi)存中暫時(shí)不能運(yùn)行、或暫時(shí)不用的程序和數(shù)據(jù)調(diào)到外存上迅细,以騰出足夠的內(nèi)存巫橄;把已具備運(yùn)行條件的進(jìn)程和進(jìn)程所需要的程序和數(shù)據(jù),調(diào)入內(nèi)存茵典。

????按對(duì)換單位分類:

????????整體對(duì)換(或進(jìn)程對(duì)換):以整個(gè)進(jìn)程為單位(連續(xù)分配)

????????頁(yè)面對(duì)換或分段對(duì)換:以頁(yè)或段為單位(離散分配)

實(shí)現(xiàn)進(jìn)程對(duì)換湘换,系統(tǒng)必須具備的功能:

????對(duì)換空間的管理

????進(jìn)程的換出、換入操作

對(duì)換空間的管理

在系統(tǒng)中設(shè)置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)以記錄對(duì)換區(qū)的使用情況

對(duì)換空間的分配與回收是連續(xù)方式,與動(dòng)態(tài)分區(qū)方式時(shí)的內(nèi)存分配與回收雷同彩倚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末筹我,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子署恍,更是在濱河造成了極大的恐慌崎溃,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盯质,死亡現(xiàn)場(chǎng)離奇詭異袁串,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)呼巷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)囱修,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人王悍,你說(shuō)我怎么就攤上這事破镰。” “怎么了压储?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鲜漩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我集惋,道長(zhǎng)孕似,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任刮刑,我火速辦了婚禮喉祭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雷绢。我一直安慰自己泛烙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布翘紊。 她就那樣靜靜地躺著蔽氨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帆疟。 梳的紋絲不亂的頭發(fā)上孵滞,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音鸯匹,去河邊找鬼。 笑死泄伪,一個(gè)胖子當(dāng)著我的面吹牛殴蓬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼染厅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痘绎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起肖粮,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤孤页,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后涩馆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體行施,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年魂那,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛾号。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涯雅,死狀恐怖鲜结,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情活逆,我是刑警寧澤精刷,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蔗候,受9級(jí)特大地震影響怒允,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琴庵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一误算、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迷殿,春花似錦儿礼、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至懦尝,卻和暖如春知纷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陵霉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工琅轧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人踊挠。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓乍桂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親睹酌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子权谁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 1.感恩唐湯圓陪我一起飯后散步,清清明明 2.感謝陶的意面憋沿,湯圓的可樂(lè)雞翅。幸福感爆棚 3.感謝小冉對(duì)學(xué)生的支持,...
    肖馨肖馨閱讀 164評(píng)論 0 2
  • 1.《聽(tīng)你的》:聽(tīng)取別人的意見(jiàn)和建議沒(méi)問(wèn)題图谷,但最終還是要靠自己阱洪,過(guò)屬于自己的生活冗荸,沒(méi)有任何人能定義你。只有你能決定...
    仰望天空的貓閱讀 235評(píng)論 2 0