存儲(chǔ)管理
存儲(chǔ)管理的對(duì)象時(shí)主存(內(nèi)存)苛白。存儲(chǔ)管理的主要功能包括回收主存空間、提高主存利用率退客、擴(kuò)充主存骏融、對(duì)主存信息實(shí)施有效保護(hù)。
1. 基本概念
1.1 存儲(chǔ)器的機(jī)構(gòu)
一般存儲(chǔ)器的機(jī)構(gòu)有“寄存器-主存-外存”結(jié)構(gòu)和“寄存器-緩存-主存-外存”結(jié)構(gòu)萌狂。如下圖所示档玻,存儲(chǔ)組織的功能時(shí)在存儲(chǔ)技術(shù)和CPU尋址技術(shù)允許的范圍內(nèi)組織合理的存儲(chǔ)結(jié)構(gòu),使得各個(gè)層次的存儲(chǔ)器都處于均衡的繁忙狀態(tài)茫藏。
(一)虛擬地址误趴。對(duì)于程序員來說,數(shù)據(jù)的存放地址是由符號(hào)決定的务傲,并不是主存中的真實(shí)地址凉当。虛擬地址也稱為相對(duì)地址、程序地址售葡、邏輯地址
(二)地址空間看杭。虛擬地址的空間稱為虛擬地址空間、相對(duì)地址空間或邏輯地址空間挟伙,相對(duì)地址經(jīng)過地址重定向轉(zhuǎn)換為絕對(duì)地址空間楼雹,也稱物理地址空間。
(三)存儲(chǔ)空間像寒。
1.2 地址重定位
地址重定位是把邏輯地址變?yōu)橹鞔嫖锢淼刂返倪^程烘豹。在可執(zhí)行文件裝入時(shí)瓜贾,需要解決可執(zhí)行文件地址(指令和數(shù)據(jù))與主存地址的對(duì)于關(guān)系诺祸,這個(gè)個(gè)由操作系統(tǒng)的loader和地址重定位機(jī)構(gòu)來完成。地址重定位分為靜態(tài)地址重定位和動(dòng)態(tài)地址重定位祭芦。
(一)靜態(tài)地址重定位筷笨。程序裝入主存時(shí)完成邏輯地址到物理地址的變換,在程序執(zhí)行期間將不會(huì)再變化。無需硬件的支持胃夏,早期操作系統(tǒng)都用這種重定位方案轴或。缺點(diǎn)是必須給作業(yè)分配一個(gè)連續(xù)的存儲(chǔ)空間,作業(yè)執(zhí)行期間不能擴(kuò)充空間仰禀,不能在主存中移動(dòng)照雁,多個(gè)作業(yè)難以共享主存中的同一程序的副本和數(shù)據(jù)。
(二)動(dòng)態(tài)地址重定位答恶。在程序允許期間完成邏輯地址到物理地址的變換饺蚊。依賴硬件地址變換機(jī)構(gòu)來完成,如基地址寄存器BR悬嗓。優(yōu)點(diǎn)是作業(yè)執(zhí)行期間程序和數(shù)據(jù)可以換入和換出主存污呼,解決主存空間不足問題;可在主存中移動(dòng)包竹,把主存中的碎片集中起來燕酷,可以充分利用空間;不必連續(xù)的主存空間周瞎,可利用小的主存塊苗缩;可以實(shí)現(xiàn)多作業(yè)數(shù)據(jù)共享。
2. 存儲(chǔ)管理方案
存儲(chǔ)管理方法是解決多用使用主存的問題声诸。
2.1 分區(qū)存儲(chǔ)管理
分區(qū)存儲(chǔ)管理是早期的存儲(chǔ)管理方案挤渐,把主存的用戶區(qū)劃分為若干個(gè)區(qū)域,每個(gè)區(qū)域分配給一個(gè)作業(yè)使用双絮,并限定它們只能在自己的區(qū)域中運(yùn)行浴麻。根據(jù)分區(qū)的劃分方式不同,可分為固定分區(qū)囤攀、可變分區(qū)和可重定位分區(qū)软免。
標(biāo)題 | 描述 |
---|---|
內(nèi)碎片 | 存儲(chǔ)管理中,把分配給了用戶而用戶未用的存儲(chǔ)區(qū)稱為“內(nèi)部碎片” |
外碎片 | 存儲(chǔ)管理中焚挠,把那些無法分配出去滿足作業(yè)存儲(chǔ)請(qǐng)求的空閑區(qū)稱為“外部碎片” |
(一)固定分區(qū)膏萧。是一種靜態(tài)分區(qū)方式。在操作系統(tǒng)啟動(dòng)時(shí)就已經(jīng)將主存劃分為若干個(gè)分區(qū)蝌衔,每個(gè)分區(qū)大小可不等榛泛。作業(yè)使用的空間不小不一定剛好等于分區(qū)的大小,造成了一定的浪費(fèi)噩斟。
(二)可變分區(qū)曹锨。是一種動(dòng)態(tài)分區(qū)方式√暝剩可變分區(qū) 存儲(chǔ)管理 不是預(yù)先把內(nèi)存中的用戶區(qū)域劃分成若干固定分區(qū)沛简,而是在作業(yè)要求裝入內(nèi)存時(shí)齐鲤,根據(jù)用戶作業(yè)的大小和當(dāng)時(shí)內(nèi)存空間使用情況決定是否為該作業(yè)分配一個(gè)分區(qū)。因此分區(qū)大小不是預(yù)先固定的椒楣,而是按作業(yè)需求量來劃分的给郊;分區(qū)的個(gè)數(shù)和位置也不是預(yù)先確定的。它有效地克服了固定分區(qū)方式中捧灰,由于分區(qū)內(nèi)部剩余內(nèi)存空置造成浪費(fèi)的問題淆九。
- 采用地址動(dòng)態(tài)重定位技術(shù),使程序能在內(nèi)存中移動(dòng)毛俏,為空閑區(qū)合并提供保證吩屹。
- 記住各分區(qū)的使用情況,當(dāng)一個(gè)分區(qū)被釋放時(shí)拧抖,要能判定它的前煤搜、后分區(qū)是否為空閑區(qū)。若是空閑區(qū)唧席,就進(jìn)行合并擦盾,形成一個(gè)大的空閑區(qū)
- 給出分區(qū)分配算法,在有多個(gè)空閑區(qū)都滿足作業(yè)的存儲(chǔ)請(qǐng)求時(shí)淌哟,決定分配哪一個(gè)
(三)可重定位分區(qū)迹卢。解決碎片化問題的有效方法⊥讲郑基本思想是移動(dòng)已經(jīng)分配好的分區(qū)腐碱,使之成為一個(gè)連續(xù)區(qū)域。移動(dòng)的時(shí)機(jī)可以是申請(qǐng)分區(qū)得不到滿足時(shí)或作業(yè)執(zhí)行完畢時(shí)掉弛,移動(dòng)分區(qū)的代價(jià)很大症见,一般時(shí)申請(qǐng)分區(qū)無法滿足時(shí)才進(jìn)行。
分區(qū)保護(hù)
分區(qū)保護(hù)的目的是防止未經(jīng)允許的用戶訪問分區(qū)殃饿,常用如下兩種方式谋作。
采用上界/下界寄存器保護(hù)。上界寄存器存放作業(yè)的裝入地址乎芳,下界寄存器存放作業(yè)的結(jié)束地址遵蚜,形成的物理地址滿足如下條件:
<div align="center" > 上界寄存器 <= 物理地址 <= 下界寄存器</div>采用基址/限長寄存器保護(hù)∧位螅基址寄存器存放作業(yè)的裝入地址吭净,限長寄存器存放作業(yè)的長度,形成的物理地址滿足如下條件:
<div align="center" > 基址寄存器 <= 物理地址 <= 基址寄存器+限長寄存器</div>
2.2 分頁存儲(chǔ)管理
在上面的分區(qū)存儲(chǔ)管理可以解決多道程序共享主存的問題肴甸,但是該方案的用戶程序必須裝入連續(xù)的一段空間寂殉,當(dāng)空間不足時(shí)需要進(jìn)行分區(qū)靠攏操作,而分區(qū)靠攏時(shí)非常耗費(fèi)系統(tǒng)時(shí)間的雷滋。下面引入分頁存儲(chǔ)方案不撑。
(一)分頁原理文兢。將一個(gè)進(jìn)程的地址空間劃分為若干個(gè)大小相等的區(qū)域晤斩,稱為頁焕檬。相應(yīng)的,在主存空間中劃分出相同大小的若干個(gè)物理塊澳泵,成為塊或頁框实愚。為進(jìn)程分配主存時(shí),將進(jìn)程的若干也分別裝入多個(gè)不相鄰的塊中兔辅。
(二)地址結(jié)構(gòu)腊敲。分頁系統(tǒng)的地址結(jié)構(gòu)由頁號(hào)和偏移量(頁內(nèi)地址)兩部份組成。地址總共32位维苔,0-11位為頁內(nèi)地址(每頁大小為4KB)碰辅,12-31位為頁號(hào),得出一個(gè)進(jìn)程最多可以分配1MB個(gè)頁介时。
(三)頁表