存儲部件的層次
主存:在保存進(jìn)程運行時的程序和數(shù)據(jù)滩愁;
寄存器:速度最快抖仅,價格昂貴容量不大匾寝,一般以字為單位括堤,只要存放指令一次操作的數(shù)據(jù)就夠了碌秸;
高速緩存:一種速度比內(nèi)存快的存儲設(shè)備,一般同寄存器一樣集成在CPU中(速度快悄窃,存放部分內(nèi)存數(shù)據(jù)讥电,硬件自動處理);
磁盤緩存:內(nèi)存的一部分轧抗,將頻繁使用的一部分磁盤數(shù)據(jù)信息預(yù)讀入在磁盤緩存恩敌,減少磁盤讀寫時間
1.程序的裝入和鏈接
創(chuàng)建進(jìn)程的第一件事:將程序和數(shù)據(jù)裝入內(nèi)存
1.地址的概念
邏輯地址(相對地址,虛地址):用戶的程序經(jīng)過匯編或編譯后形成目標(biāo)代碼横媚,目標(biāo)代碼中的指令地址是相對地址纠炮。一般手地址為0.
物理地址(絕對地址,實地址)
內(nèi)存中存儲單元的地址灯蝴;物理地址可直接尋址被執(zhí)行恢口。
地址映射:將用戶程序中的邏輯地址轉(zhuǎn)換為運行時由機器直接尋址的物理地址的過程。
2)程序裝入中的地址處理
邏輯地址============物理地址:①絕對裝入方式 ? ?優(yōu)點:裝入過程簡單穷躁,不需任何地址變換弧蝇,程序中的邏輯地址與實際內(nèi)存物理地址完全相同。缺點:過于依賴硬件結(jié)構(gòu)折砸,只適用早期單道環(huán)境下
重定位:把 ?目標(biāo)程序中的 指令和數(shù)據(jù) 的 邏輯地址 變成內(nèi)存中的物 理地址的地址變換過程。
邏輯地址→重定位→物理地址:②靜態(tài)可重定位裝入方式
地址映射在程序執(zhí)行之前進(jìn)行沙峻,重定位后物理地址不再改變
優(yōu)點:不需硬件支持睦授,可以裝入有限的多道程序 ? 缺點:軟件裝入一次完成,一個程序通常需要占用連續(xù)的內(nèi)存空間摔寨, ?不易實現(xiàn)共享
③動態(tài)運行時(重定位)裝入方式 ? ? ? ? ? ?程序裝入內(nèi)存是去枷,可多次重定位到不同位置,且可以不立即把裝入模塊中的相對地址轉(zhuǎn)換為絕對地址,而是把這種地址轉(zhuǎn)換推遲到程序真正要執(zhí)行時才進(jìn)行删顶。竖螃。。更適用于部分裝入逗余。
3)不同的程序鏈接方式:①靜態(tài)鏈接 ? 裝入運行前 ②裝入時動態(tài)鏈接 ?邊裝入邊鏈接 ? ? 1.便于修改和更新2.便于實現(xiàn)共享③運行時動態(tài)鏈接 ? ? ? ?不全部裝入特咆,對某些目標(biāo)模塊的鏈接,在執(zhí)行中需要該目標(biāo)模塊時录粱,才對它進(jìn)行鏈接腻格。 ? 優(yōu)點:程序運行裝入的內(nèi)容少了,加快了裝入過程啥繁,而且節(jié)省大量的內(nèi)存空間菜职。
2.連續(xù)分配方式
(1)單一連續(xù)分配:分為系統(tǒng)區(qū)(低址部分)和用戶區(qū)兩部分;優(yōu)點:易于管理:缺點:內(nèi)存浪費
(2)固定分區(qū)分配:把內(nèi)存分為一些大小相等或不等的分區(qū)旗闽,操作系統(tǒng)占用其中一個分區(qū)酬核。 ? ? ?支持多個程序并發(fā)執(zhí)行 ? ? ? ? ? ? ? ? ? ? ? 劃分為幾個分區(qū),便允許幾道作業(yè)并發(fā)
劃分分區(qū)大惺适摇:相等嫡意,只適合于多個相同程序的并發(fā)執(zhí)行。缺乏靈活性亭病;鹅很;;罪帖;促煮;;整袁;菠齿;;坐昙;绳匀;;分區(qū)大小不等炸客,多個小的疾棵,適量中等,少量大的
固定分配的不足: ? 1 ?內(nèi)碎片(一個分區(qū)內(nèi)的剩余空間)造成浪費2分區(qū)總數(shù)固定痹仙,限制并發(fā)執(zhí)行的程序數(shù)量
(3)動態(tài)分區(qū)分配
分區(qū)的大小不固定:需要多少劃分多少
優(yōu)點:并發(fā)進(jìn)程數(shù)沒有固定數(shù)的限制是尔,不會產(chǎn)生內(nèi)碎片。缺點:有外碎片(分區(qū)間無法利用的空間)
2)分區(qū)分配算法
①首次適應(yīng)算法FF(保留了高址部分的空閑區(qū)开仰;會產(chǎn)生較多小碎片拟枚;增加查找開銷)
? ②循環(huán)首次適應(yīng)算法 (從上次空閑分區(qū)的下一個開始查找 ? ? ? ?薪铜。空閑分區(qū)分布均勻恩溅,減少查找開銷隔箍;缺乏大的空閑分區(qū)) ? ? ?
③最佳適應(yīng)算法 (所有空閑分區(qū)按容量從小到大排序成空閑分區(qū)表或鏈 ? ?、產(chǎn)生許多難以利用的小空閑區(qū)脚乡,外碎片) ? ? ? ? ? ? ? ?
?④最差適應(yīng)算法(缺乏較大的空閑分區(qū))
? ⑤快速適應(yīng)算法(空間換時間蜒滩,相同大小的進(jìn)程串成一個鏈)
回收分區(qū):1.回收區(qū)與某區(qū)末尾臨接 ? ?2.回收區(qū)與某區(qū)首址臨接 ? ? 3. ? 前后臨接 4.無臨接
動態(tài)重定位分區(qū)分配:動態(tài)連續(xù)分配無法解決外碎片問題(動態(tài)重定位分區(qū)分配算法與動態(tài)分區(qū)分配算法基本相同,差別在于增加了緊湊的功能每窖。)
(5)內(nèi)存空間管理之對換
3.基本分頁存儲管理方式.
分頁方式下帮掉,內(nèi)存的使用率高,浪費少窒典。但不是絕對沒有碎片(進(jìn)程的最后一頁不總是能占滿一個物理塊)
1)頁面的概念
①物理劃分塊的大小=邏輯劃分頁的大畜〈丁②頁面大小要適中(太大,內(nèi)碎片增大瀑志,類似連續(xù)分配的問題涩搓;太小,頁面碎片總空間雖然小劈猪,提高了利用率昧甘,但每個進(jìn)程的頁面數(shù)量較多,頁表過長战得,反而又增加了空間使用)
2)頁表的概念:為了找到被離散分配到內(nèi)存中的作業(yè)充边,記錄每個作業(yè)各頁映射到哪個物理塊,形成的頁面映射表常侦,簡稱頁表浇冰。(每個作業(yè)有自己的頁表;作用:頁號到物理塊號的地址映射聋亡;找作業(yè)先找頁表PCB肘习,根據(jù)PCB找物理塊)
作業(yè)相對地址:頁號+頁內(nèi)地址(頁內(nèi)偏移)
? ? 4)地址變換機構(gòu):指令頁號(→物理塊)+內(nèi)部偏移量
5)快表(具有“并行查詢”能力的高速緩沖寄存器):快表放正在執(zhí)行進(jìn)程的頁表的數(shù)據(jù)項EAT=2t + ?t' - t * a
6)兩級、多級頁表坡倔,反置頁表
4.基本分段存儲管理方式
每段占據(jù)一塊連續(xù)的內(nèi)存(即有離散的分段漂佩,又有連續(xù)的內(nèi)存使用)、各段大小不等
分段和分頁的主要區(qū)別
1.需求:分頁是出于系統(tǒng)管理的需要罪塔,是一種信息的物理劃分單位投蝉,分段是出于用戶應(yīng)用的需要,是一種邏輯單位征堪,通常包含一組意義相對完整的信息墓拜;
2.大小:頁大小是系統(tǒng)固定的请契,而段大小則通常不固定咳榜。分段沒有內(nèi)碎片,但連續(xù)存放段產(chǎn)生外碎片(內(nèi)存碎片)爽锥,可以通過內(nèi)存緊縮來消除涌韩。相對而言分頁空間利用率高。
3.邏輯地址:分頁是一維的氯夷,各個模塊在鏈接時必須組織成同一個地址空間臣樱;分段是二維的,各個模塊在鏈接時可以每個段組織成一個地址空間腮考。
4.其他:通常段比頁大雇毫,因而段表比頁表短,可以縮短查找時間踩蔚,提高訪問速度棚放。分段模式下,還可針對不同類型采取不同的保護(hù)馅闽;按段為單位來進(jìn)行共享飘蚯。
5)段頁式存儲管理方式
①基本原理:將用戶程序分成若干段,每個段分成若干頁福也,地址結(jié)構(gòu)包括段號局骤、段內(nèi)頁號和業(yè)內(nèi)地址三部分。
Linux僅把運行進(jìn)程當(dāng)前使用的少量頁面裝入內(nèi)存(內(nèi)存分配)