存儲(chǔ)部件的層次
主存:在保存進(jìn)程運(yùn)行時(shí)的程序和數(shù)據(jù);
寄存器:速度最快,價(jià)格昂貴容量不大,一般以字為單位,只要存放指令一次操作的數(shù)據(jù)就夠了;
高速緩存:一種速度比內(nèi)存快的存儲(chǔ)設(shè)備,一般同寄存器一樣集成在CPU中(速度快,存放部分內(nèi)存數(shù)據(jù),硬件自動(dòng)處理);
磁盤(pán)緩存:內(nèi)存的一部分,將頻繁使用的一部分磁盤(pán)數(shù)據(jù)信息預(yù)讀入在磁盤(pán)緩存,減少磁盤(pán)讀寫(xiě)時(shí)間
1.程序的裝入和鏈接
創(chuàng)建進(jìn)程的第一件事:將程序和數(shù)據(jù)裝入內(nèi)存
1.地址的概念
邏輯地址(相對(duì)地址,虛地址):用戶的程序經(jīng)過(guò)匯編或編譯后形成目標(biāo)代碼,目標(biāo)代碼中的指令地址是相對(duì)地址。一般手地址為0.
物理地址(絕對(duì)地址,實(shí)地址)
內(nèi)存中存儲(chǔ)單元的地址;物理地址可直接尋址被執(zhí)行。
地址映射:將用戶程序中的邏輯地址轉(zhuǎn)換為運(yùn)行時(shí)由機(jī)器直接尋址的物理地址的過(guò)程。
2)程序裝入中的地址處理
邏輯地址============物理地址:①絕對(duì)裝入方式 ? ?優(yōu)點(diǎn):裝入過(guò)程簡(jiǎn)單,不需任何地址變換,程序中的邏輯地址與實(shí)際內(nèi)存物理地址完全相同。缺點(diǎn):過(guò)于依賴硬件結(jié)構(gòu),只適用早期單道環(huán)境下
重定位:把 ?目標(biāo)程序中的 指令和數(shù)據(jù) 的 邏輯地址 變成內(nèi)存中的物 理地址的地址變換過(guò)程。
邏輯地址→重定位→物理地址:②靜態(tài)可重定位裝入方式
地址映射在程序執(zhí)行之前進(jìn)行,重定位后物理地址不再改變
優(yōu)點(diǎn):不需硬件支持,可以裝入有限的多道程序 ? 缺點(diǎn):軟件裝入一次完成,一個(gè)程序通常需要占用連續(xù)的內(nèi)存空間, ?不易實(shí)現(xiàn)共享
③動(dòng)態(tài)運(yùn)行時(shí)(重定位)裝入方式 ? ? ? ? ? ?程序裝入內(nèi)存是,可多次重定位到不同位置,且可以不立即把裝入模塊中的相對(duì)地址轉(zhuǎn)換為絕對(duì)地址,而是把這種地址轉(zhuǎn)換推遲到程序真正要執(zhí)行時(shí)才進(jìn)行。。。更適用于部分裝入。
3)不同的程序鏈接方式:①靜態(tài)鏈接 ? 裝入運(yùn)行前 ②裝入時(shí)動(dòng)態(tài)鏈接 ?邊裝入邊鏈接 ? ? 1.便于修改和更新2.便于實(shí)現(xiàn)共享③運(yùn)行時(shí)動(dòng)態(tài)鏈接 ? ? ? ?不全部裝入,對(duì)某些目標(biāo)模塊的鏈接,在執(zhí)行中需要該目標(biāo)模塊時(shí),才對(duì)它進(jìn)行鏈接。 ? 優(yōu)點(diǎn):程序運(yùn)行裝入的內(nèi)容少了,加快了裝入過(guò)程,而且節(jié)省大量的內(nèi)存空間。
2.連續(xù)分配方式
(1)單一連續(xù)分配:分為系統(tǒng)區(qū)(低址部分)和用戶區(qū)兩部分;優(yōu)點(diǎn):易于管理:缺點(diǎn):內(nèi)存浪費(fèi)
(2)固定分區(qū)分配:把內(nèi)存分為一些大小相等或不等的分區(qū),操作系統(tǒng)占用其中一個(gè)分區(qū)。 ? ? ?支持多個(gè)程序并發(fā)執(zhí)行 ? ? ? ? ? ? ? ? ? ? ? 劃分為幾個(gè)分區(qū),便允許幾道作業(yè)并發(fā)
劃分分區(qū)大?。合嗟?,只適合于多個(gè)相同程序的并發(fā)執(zhí)行。缺乏靈活性;;;;;;;;;;;;分區(qū)大小不等,多個(gè)小的,適量中等,少量大的

固定分配的不足: ? 1 ?內(nèi)碎片(一個(gè)分區(qū)內(nèi)的剩余空間)造成浪費(fèi)2分區(qū)總數(shù)固定,限制并發(fā)執(zhí)行的程序數(shù)量
(3)動(dòng)態(tài)分區(qū)分配
分區(qū)的大小不固定:需要多少劃分多少
優(yōu)點(diǎn):并發(fā)進(jìn)程數(shù)沒(méi)有固定數(shù)的限制,不會(huì)產(chǎn)生內(nèi)碎片。缺點(diǎn):有外碎片(分區(qū)間無(wú)法利用的空間)
2)分區(qū)分配算法
①首次適應(yīng)算法FF(保留了高址部分的空閑區(qū);會(huì)產(chǎn)生較多小碎片;增加查找開(kāi)銷)
? ②循環(huán)首次適應(yīng)算法 (從上次空閑分區(qū)的下一個(gè)開(kāi)始查找 ? ? ? ???臻e分區(qū)分布均勻,減少查找開(kāi)銷;缺乏大的空閑分區(qū)) ? ? ?
③最佳適應(yīng)算法 (所有空閑分區(qū)按容量從小到大排序成空閑分區(qū)表或鏈 ? ?、產(chǎn)生許多難以利用的小空閑區(qū),外碎片) ? ? ? ? ? ? ? ?
?④最差適應(yīng)算法(缺乏較大的空閑分區(qū))
? ⑤快速適應(yīng)算法(空間換時(shí)間,相同大小的進(jìn)程串成一個(gè)鏈)
回收分區(qū):1.回收區(qū)與某區(qū)末尾臨接 ? ?2.回收區(qū)與某區(qū)首址臨接 ? ? 3. ? 前后臨接 4.無(wú)臨接
動(dòng)態(tài)重定位分區(qū)分配:動(dòng)態(tài)連續(xù)分配無(wú)法解決外碎片問(wèn)題(動(dòng)態(tài)重定位分區(qū)分配算法與動(dòng)態(tài)分區(qū)分配算法基本相同,差別在于增加了緊湊的功能。)
(5)內(nèi)存空間管理之對(duì)換

3.基本分頁(yè)存儲(chǔ)管理方式.
分頁(yè)方式下,內(nèi)存的使用率高,浪費(fèi)少。但不是絕對(duì)沒(méi)有碎片(進(jìn)程的最后一頁(yè)不總是能占滿一個(gè)物理塊)
1)頁(yè)面的概念
①物理劃分塊的大小=邏輯劃分頁(yè)的大?、陧?yè)面大小要適中(太大,內(nèi)碎片增大,類似連續(xù)分配的問(wèn)題;太小,頁(yè)面碎片總空間雖然小,提高了利用率,但每個(gè)進(jìn)程的頁(yè)面數(shù)量較多,頁(yè)表過(guò)長(zhǎng),反而又增加了空間使用)
2)頁(yè)表的概念:為了找到被離散分配到內(nèi)存中的作業(yè),記錄每個(gè)作業(yè)各頁(yè)映射到哪個(gè)物理塊,形成的頁(yè)面映射表,簡(jiǎn)稱頁(yè)表。(每個(gè)作業(yè)有自己的頁(yè)表;作用:頁(yè)號(hào)到物理塊號(hào)的地址映射;找作業(yè)先找頁(yè)表PCB,根據(jù)PCB找物理塊)
作業(yè)相對(duì)地址:頁(yè)號(hào)+頁(yè)內(nèi)地址(頁(yè)內(nèi)偏移)

? ? 4)地址變換機(jī)構(gòu):指令頁(yè)號(hào)(→物理塊)+內(nèi)部偏移量
5)快表(具有“并行查詢”能力的高速緩沖寄存器):快表放正在執(zhí)行進(jìn)程的頁(yè)表的數(shù)據(jù)項(xiàng)EAT=2t + ?t' - t * a
6)兩級(jí)、多級(jí)頁(yè)表,反置頁(yè)表


4.基本分段存儲(chǔ)管理方式
每段占據(jù)一塊連續(xù)的內(nèi)存(即有離散的分段,又有連續(xù)的內(nèi)存使用)、各段大小不等
分段和分頁(yè)的主要區(qū)別
1.需求:分頁(yè)是出于系統(tǒng)管理的需要,是一種信息的物理劃分單位,分段是出于用戶應(yīng)用的需要,是一種邏輯單位,通常包含一組意義相對(duì)完整的信息;
2.大?。喉?yè)大小是系統(tǒng)固定的,而段大小則通常不固定。分段沒(méi)有內(nèi)碎片,但連續(xù)存放段產(chǎn)生外碎片(內(nèi)存碎片),可以通過(guò)內(nèi)存緊縮來(lái)消除。相對(duì)而言分頁(yè)空間利用率高。
3.邏輯地址:分頁(yè)是一維的,各個(gè)模塊在鏈接時(shí)必須組織成同一個(gè)地址空間;分段是二維的,各個(gè)模塊在鏈接時(shí)可以每個(gè)段組織成一個(gè)地址空間。
4.其他:通常段比頁(yè)大,因而段表比頁(yè)表短,可以縮短查找時(shí)間,提高訪問(wèn)速度。分段模式下,還可針對(duì)不同類型采取不同的保護(hù);按段為單位來(lái)進(jìn)行共享。
5)段頁(yè)式存儲(chǔ)管理方式
①基本原理:將用戶程序分成若干段,每個(gè)段分成若干頁(yè),地址結(jié)構(gòu)包括段號(hào)、段內(nèi)頁(yè)號(hào)和業(yè)內(nèi)地址三部分。
Linux僅把運(yùn)行進(jìn)程當(dāng)前使用的少量頁(yè)面裝入內(nèi)存(內(nèi)存分配)