第5章 存儲(chǔ)器管理_第1頁(yè)
第5章 存儲(chǔ)器管理_第2頁(yè)
第5章 存儲(chǔ)器管理_第3頁(yè)
第5章 存儲(chǔ)器管理_第4頁(yè)
第5章 存儲(chǔ)器管理_第5頁(yè)
已閱讀5頁(yè),還剩141頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 存儲(chǔ)器管理n 存儲(chǔ)器即主存、內(nèi)存(Memory),分為兩大部分:n 系統(tǒng)區(qū):供操作系統(tǒng)使用n 用戶區(qū):劃分為一個(gè)或多個(gè)區(qū)域,供用戶進(jìn)程使用。n 存儲(chǔ)器管理的主要目標(biāo)是為用戶提供方便、安全和充分大的存儲(chǔ)器。存儲(chǔ)器管理的功能n 存儲(chǔ)空間的分配和回收:n 地址變換:將邏輯地址變換為物理地址n 存儲(chǔ)保護(hù):防止因用戶程序錯(cuò)誤破壞系統(tǒng)或其他用戶,防止程序之間的相互干擾n 存儲(chǔ)擴(kuò)充:在邏輯上為用戶提供一個(gè)比實(shí)際內(nèi)存更大的存儲(chǔ)空間5.1 存儲(chǔ)器管理的基本概念n 邏輯地址 (Logical address) :用戶編程時(shí)所使用的地址。又稱相對(duì)地址、虛地址。n 地址空間:邏輯地址的集合。n 物理地址(Ph

2、ysical address):內(nèi)存中的地址。又稱絕對(duì)地址、實(shí)地址。n 主存空間:物理地址的集合。5.1.1 程序的裝入n 為將一個(gè)用戶源程序變?yōu)橐粋€(gè)在內(nèi)存中可執(zhí)行的文件,通常要經(jīng)歷以下步驟:編譯、鏈接、裝入。n 將裝入模塊裝入內(nèi)存有3種方式:n 絕對(duì)裝入方式n 可重定位裝入方式n 動(dòng)態(tài)運(yùn)行時(shí)裝入方式絕對(duì)裝入方式n 編譯時(shí)產(chǎn)生絕對(duì)地址的目標(biāo)代碼,絕對(duì)裝入程序按照裝入模塊中的地址將程序及數(shù)據(jù)裝入內(nèi)存,不需對(duì)地址進(jìn)行變換。n 程序中使用的絕對(duì)地址可以在編譯時(shí)給出, 也可以由程序員直接賦予。n 特點(diǎn):使用絕對(duì)地址不方便,適于單道程序環(huán)境??芍囟ㄎ谎b入方式n 編譯時(shí)產(chǎn)生相對(duì)地址的目標(biāo)代碼,由裝入程序根

3、據(jù)內(nèi)存當(dāng)時(shí)的實(shí)際使用情況,將裝入模塊裝入到內(nèi)存的適當(dāng)?shù)胤健?dòng)態(tài)運(yùn)行時(shí)裝入方式n 在將裝入模塊裝入內(nèi)存時(shí)并不進(jìn)行地址變換,在程序執(zhí)行過(guò)程中進(jìn)行地址變換。n 特點(diǎn):需要硬件支持,可以部分裝入。地址變換n 地址變換:將邏輯地址轉(zhuǎn)換為物理地址。又稱地址映射、重定位(relocation)。n 地址變換分為兩類:n 靜態(tài)地址變換n 動(dòng)態(tài)地址變換靜態(tài)地址變換n 靜態(tài)地址變換:又稱靜態(tài)地址重定位,地址變換在程序裝入時(shí)一次完成,以后不再改變。n 特點(diǎn):不需硬件支持,但程序運(yùn)行時(shí)不能在內(nèi)存移動(dòng),程序需要連續(xù)存儲(chǔ)空間,難以共享。靜態(tài)地址變換示意圖將作業(yè)裝入從1000 開(kāi)始的內(nèi)存區(qū)域0100011000100重定位

4、裝入程序50015001999999作業(yè)的地址空間1M-1注意:邏輯地址500在裝入時(shí)轉(zhuǎn)換為物理地址1500主存空間mov ax,50054321mov ax,1000+50054321動(dòng)態(tài)地址變換n 動(dòng)態(tài)地址變換:又稱動(dòng)態(tài)重定位,在程序執(zhí)行過(guò)程中,每次訪問(wèn)內(nèi)存之前將要訪問(wèn)程序地址轉(zhuǎn)換成內(nèi)存地址。n 特點(diǎn):需要硬件支持,不需連續(xù)空間,可以實(shí)現(xiàn)虛擬存儲(chǔ)。動(dòng)態(tài)地址變換示意圖01000重定位寄存器1100執(zhí)行指令0100邏輯地址1500將邏輯地址500變換為物理地址1500,再取數(shù)據(jù)50019999991M-1存儲(chǔ)空間作業(yè)的地址空間500mov ax,500543211000mov ax,50054

5、3215.1.2 程序的鏈接n 鏈接程序的功能是將經(jīng)過(guò)編譯或匯編后得到的目標(biāo)模塊以及所需的庫(kù)函數(shù)裝配成一個(gè)完整的裝入模塊。n 實(shí)現(xiàn)鏈接的方式有三種:n 靜態(tài)鏈接n 裝入時(shí)動(dòng)態(tài)鏈接n 運(yùn)行時(shí)動(dòng)態(tài)鏈接程序的鏈接2n 靜態(tài)鏈接:在程序運(yùn)行之前,將各目標(biāo)模塊及其所需的庫(kù)函數(shù)裝配成一個(gè)完整的裝入模塊。n 裝入時(shí)動(dòng)態(tài)鏈接:源程序編譯后所得到的目標(biāo)模塊在裝入內(nèi)存時(shí)邊裝入邊鏈接。n 特點(diǎn):便于軟件版本的修改和更新,便于目標(biāo)模塊的共享。程序的鏈接3n 運(yùn)行時(shí)動(dòng)態(tài)鏈接:將某些目標(biāo)模塊的鏈接推遲到執(zhí)行時(shí)才進(jìn)行。即在執(zhí)行過(guò)程中,若發(fā)現(xiàn)一個(gè)被調(diào)用模塊尚未裝入內(nèi)存時(shí),由OS 去找到該模塊,將它裝入內(nèi)存并鏈接到調(diào)用者模塊上

6、。n 特點(diǎn):加快了程序裝入,節(jié)省了內(nèi)存。5.1.3 內(nèi)存保護(hù) MemoryProtectionn 內(nèi)存保護(hù):是防止一個(gè)進(jìn)程有意或無(wú)意破壞操作系統(tǒng)或其他進(jìn)程。n 常用的存儲(chǔ)保護(hù)方法有:n 界限寄存器法n 存儲(chǔ)保護(hù)鍵n 環(huán)保護(hù)機(jī)制n 訪問(wèn)權(quán)限界限寄存器法n 通過(guò)對(duì)每個(gè)進(jìn)程設(shè)置一對(duì)界限寄存器來(lái)防止越界訪問(wèn),達(dá)到存儲(chǔ)保護(hù)的目的。n 界限寄存器方法有兩種實(shí)現(xiàn):n 上下界寄存器n 基址限長(zhǎng)寄存器上下界寄存器方法n 上下界寄存器方法:n 用上、下界寄存器分別存放作業(yè)存儲(chǔ)空間的結(jié)束地址和開(kāi)始地址。n 在作業(yè)運(yùn)行過(guò)程中,將每一個(gè)訪問(wèn)內(nèi)存的地址都同這兩個(gè)寄存器的內(nèi)容進(jìn)行比較,若超出了上下界寄存器的范圍則產(chǎn)生越界中

7、斷。即n 下界寄存器地址上界寄存器基址限長(zhǎng)寄存器方法n 基址、限長(zhǎng)寄存器方法:n 用基址和限長(zhǎng)寄存器分別存放作業(yè)存儲(chǔ)空間的起始地址及作業(yè)長(zhǎng)度。n 當(dāng)作業(yè)執(zhí)行時(shí),將每一個(gè)訪問(wèn)內(nèi)存的相對(duì)地址和這個(gè)限長(zhǎng)寄存器比較,若邏輯地址超過(guò)限長(zhǎng)則產(chǎn)生越界中斷。存儲(chǔ)保護(hù)鍵n 通過(guò)保護(hù)鍵匹配來(lái)判斷存儲(chǔ)訪問(wèn)方式是否合法。即n 為每個(gè)存儲(chǔ)塊分配一個(gè)保護(hù)鍵,相當(dāng)于一把鎖;進(jìn)入系統(tǒng)的每個(gè)作業(yè)賦予一個(gè)保護(hù)鍵,相當(dāng)于一把鑰匙。當(dāng)作業(yè)運(yùn)行時(shí),檢查鑰匙和鎖是否匹配,若二者匹配,則允許訪問(wèn)。否則發(fā)出保護(hù)性中斷信號(hào)環(huán)保護(hù)機(jī)制n 處理器狀態(tài)分為多個(gè)環(huán),分別具有不同的n 例如:規(guī)定低編號(hào)環(huán)具有高優(yōu)先權(quán)。操作系統(tǒng)核心處于0環(huán),某些重要實(shí)用程

8、序和操作系統(tǒng)服務(wù)處于中間環(huán),一般應(yīng)用程序占據(jù)外環(huán)。環(huán)保護(hù)的基本原則n 環(huán)保護(hù)的基本原則是:n 一個(gè)程序可以訪問(wèn)駐用戶程序共享庫(kù)系統(tǒng)調(diào)用內(nèi)核0級(jí)1級(jí)2級(jí)3級(jí)Pentium中的環(huán)形保護(hù)結(jié)構(gòu)n 一個(gè)程序可以調(diào)用駐存取權(quán)限n 除上述保護(hù)方案外,還有四種存取權(quán)限:n 禁止做任何操作n 只能執(zhí)行n 只能讀n 讀/寫5.2 單一連續(xù)分配n 單一連續(xù)分配方式中,內(nèi)存分為系統(tǒng)區(qū)和用戶區(qū)。系統(tǒng)區(qū)給操作系統(tǒng)使用, 用戶區(qū)給一道用戶作業(yè)使用。n 特點(diǎn):管理簡(jiǎn)單,只需很少的軟硬件支持;但各類資源的利用率不高。0KB32KB分配給用戶的空間96KB256KB1操作系統(tǒng)作業(yè)空閑5.3分區(qū)存儲(chǔ)管理n 分區(qū)存儲(chǔ)管理是多道程序系

9、統(tǒng)中采用的一種最簡(jiǎn)單的方法。它把系統(tǒng)的內(nèi)存劃分為若干大小不等的區(qū)域,操作系統(tǒng)占一個(gè)區(qū)域,其他區(qū)域由并發(fā)進(jìn)程共享,每個(gè)進(jìn)程占一個(gè)區(qū)域。n 分區(qū)存儲(chǔ)管理分為:n 固定分區(qū)n 動(dòng)態(tài)分區(qū)5.3.1 固定分區(qū)n 固定分區(qū)(fixed-sizedpartition)存儲(chǔ)管理方法將內(nèi)存空間劃分為若干個(gè)固定大小的分區(qū),每個(gè)分區(qū)中可以裝入一道程序。分區(qū)的位置及大小在運(yùn)行期間不能改變。n 為了便于管理內(nèi)存,系統(tǒng)需要建立一張分區(qū)使用表,其中記錄系統(tǒng)中的分區(qū)數(shù)目、分區(qū)大小、分區(qū)起始地址及狀態(tài)。分區(qū)使用表例分區(qū)說(shuō)明表020KB28KB60KB92KB212KB512KB-1內(nèi)存布局圖分區(qū)號(hào)大小起始地址狀態(tài)18KB20K

10、B已分配232KB28KB已分配332KB60KB未分配4120KB92KB未分配5300KB212KB已分配操作系統(tǒng)用戶作業(yè)用戶作業(yè)用戶作業(yè)固定分區(qū)的內(nèi)存分配分區(qū)分配:當(dāng)有用戶程序要裝入時(shí),由內(nèi)存分配程序檢索分區(qū)使用表,從中找出一個(gè)能滿足要求的空閑分區(qū)分配給該程序,然后修改分區(qū)說(shuō)明表中相應(yīng)表項(xiàng)的狀態(tài);若找不到大小足夠的分區(qū), 則拒絕分配內(nèi)存。分區(qū)回收:當(dāng)程序執(zhí)行完畢不再需要內(nèi)存資源時(shí), 釋放程序占用的分區(qū),管理程序只需將對(duì)應(yīng)分區(qū) 的狀態(tài)置為未分配即可。特點(diǎn):最早的多道程序存儲(chǔ)管理方式,不能充分利用內(nèi)存,存在內(nèi)存碎片。5.3.2 動(dòng)態(tài)分區(qū)存儲(chǔ)管理n 動(dòng) 態(tài) 分 區(qū) 存 儲(chǔ) 管 理 又 稱 為

11、可 變 分 區(qū)(variable-pattition)存儲(chǔ)管理,這種存儲(chǔ)管理方法的實(shí)現(xiàn)思想是根據(jù)作業(yè)大小動(dòng)態(tài)地建立分區(qū),并使分區(qū)的大小正好適應(yīng)作業(yè)的需要。因此系統(tǒng)中分區(qū)的大小是可變的,分區(qū)的數(shù)目也是可變的。動(dòng)態(tài)分區(qū)存儲(chǔ)管理示意圖n 初始時(shí),整個(gè)用戶區(qū)是1 個(gè)空閑塊n 作業(yè)1進(jìn)入,2個(gè)分區(qū)n 作業(yè)2進(jìn)入,3個(gè)分區(qū)n 作業(yè)3進(jìn)入,4個(gè)分區(qū)n 作業(yè)1結(jié)束,4個(gè)分區(qū)n 作業(yè)3結(jié)束,3個(gè)分區(qū)n 作業(yè)2結(jié)束,1個(gè)分區(qū)用戶區(qū)作業(yè)1作業(yè)2作業(yè)3動(dòng)態(tài)分區(qū)中的數(shù)據(jù)結(jié)構(gòu)n 在動(dòng)態(tài)分區(qū)中常用的數(shù)據(jù)結(jié)構(gòu)有:n 空閑分區(qū)表。用一個(gè)空閑分區(qū)表來(lái)登記系統(tǒng)中的空閑分區(qū)。其表項(xiàng)類似于固定分區(qū)。n 空閑分區(qū)鏈。將內(nèi)存中的空閑分區(qū)以

12、鏈表方式鏈接起來(lái),構(gòu)成空閑分區(qū)鏈??臻e分區(qū)表示意圖空閑分區(qū)表024KB32KB128KB140KB248KB256KB-1內(nèi)存布局圖分區(qū)號(hào)大小起始地址18KB24KB212KB128KB38KB248KB45操作系統(tǒng)空閑 (8K)已分(96K)空閑(12K)已分(108K)空閑(8K)空閑分區(qū)鏈?zhǔn)疽鈭D空閑分區(qū)鏈024KB32KB024KB32KB128KB140KB128KB140KB248KB248KB256KB-1256KB-1內(nèi)存布局圖表頭指針操作系統(tǒng)空閑 (8K)已分(96K)空閑(12K)已分(108K)空閑(8K)操作系統(tǒng)空閑(8K)已分(96K)空閑(12K)已分(108K)空閑

13、(8K)分區(qū)分配算法n 目前常用的分區(qū)分配算法有以下幾種:n 首次適應(yīng)算法n 循環(huán)首次適應(yīng)算法n 最佳適應(yīng)算法n 最壞適應(yīng)算法首次適應(yīng)算法 first fitn 首次適應(yīng)算法又稱最先適應(yīng)算法,該算法要求空閑分區(qū)按地址遞增的次序排列。n 在進(jìn)行內(nèi)存分配時(shí),從空閑分區(qū)表(或空閑分區(qū)鏈)首開(kāi)始順序查找,直到找到第一個(gè)能滿足其大小要求的空閑分區(qū)為止。n 然后,再按照作業(yè)大小,從該分區(qū)中劃出一塊內(nèi)存空間分配給請(qǐng)求者,余下的空閑分區(qū)仍然留在空閑分區(qū)表(或空閑分區(qū)鏈)中。首次適應(yīng)算法的特點(diǎn)n 特點(diǎn):優(yōu)先利用內(nèi)存低地址端,高地址端有大空閑區(qū)。但低地址端有許多小空閑分區(qū)時(shí)會(huì)增加查找開(kāi)銷。循環(huán)首次適應(yīng)算法循環(huán)首次

14、適應(yīng)算法又稱下次適應(yīng)(next 算法,它是首次適應(yīng)算法的變形。fit)該算法在為進(jìn)程分配內(nèi)存空間時(shí),從上次找到的空閑分區(qū)的下一個(gè)空閑分區(qū)開(kāi)始查找,直到找到第一個(gè)能滿足其大小要求的空閑分區(qū)為止。然后,再按照作業(yè)大小,從該分區(qū)中劃出一塊內(nèi)存空間分配給請(qǐng)求者,余下的空閑分區(qū)仍然留在空閑分區(qū)表(或空閑分區(qū)鏈)中。循環(huán)首次適應(yīng)算法的特點(diǎn)n 特點(diǎn):使存儲(chǔ)空間的利用更加均衡,但會(huì)使系統(tǒng)缺乏大的空閑分區(qū)。最佳適應(yīng)算法 best fit最佳適應(yīng)算法要求空閑分區(qū)按容量大小遞增的次序排列。在進(jìn)行內(nèi)存分配時(shí),從空閑分區(qū)表(或空閑分區(qū)鏈)首開(kāi)始順序查找,直到找到第一個(gè)能滿足其大小要求的空閑分區(qū)為止。如果該空閑分區(qū)大于作

15、業(yè)的大小,則從該分區(qū)中劃出一塊內(nèi)存空間分配給請(qǐng)求者, 將剩余空閑區(qū)仍然留在空閑分區(qū)表(或空閑分區(qū)鏈)中。最佳適應(yīng)算法的特點(diǎn)n 按最佳適應(yīng)算法為作業(yè)分配內(nèi)存,就能把既滿足作業(yè)要求又與作業(yè)大小最接近的空閑分區(qū)分配給作業(yè)。n 特點(diǎn):保留了大的空閑區(qū)。但分割后的剩余空閑區(qū)很小。最壞適應(yīng)算法 worstfit最壞適應(yīng)算法要求空閑分區(qū)按容量大小遞減的次序排列。在進(jìn)行內(nèi)存分配時(shí), 先檢查空閑分區(qū)表(或空閑分區(qū)鏈)中的第一個(gè)空閑分區(qū), 若第一個(gè)空閑分區(qū)小于作業(yè)要求的大小, 則分配失?。环駝t從該空閑分區(qū)中劃出與作業(yè)大小相等的一塊內(nèi)存空間分配給請(qǐng)求者,余下的空閑分區(qū)仍然留在空閑分區(qū)表(或空閑分區(qū)鏈)中。最壞適應(yīng)算

16、法的特點(diǎn)n 特點(diǎn):剩下的空閑區(qū)比較大,但當(dāng)大作業(yè)到來(lái)時(shí),其存儲(chǔ)空間的申請(qǐng)往往得不到滿足。如何衡量分配算法的好壞n 對(duì)于某一個(gè)作業(yè)序列來(lái)說(shuō),若某種分配算法能將該作業(yè)序列中所有作業(yè)安置完畢,則稱該分配算法對(duì)這一作業(yè)序列合適,否則稱為不合適。例n 下表給出了某系統(tǒng)的空閑分區(qū)表,系統(tǒng)采用可變式分業(yè)序列:96K、20K、區(qū)存儲(chǔ)管理策略?,F(xiàn)有以200K。若用首次適應(yīng)算法和最佳適應(yīng)算法來(lái)處理這些作業(yè)序列,試問(wèn)哪一種算法可以滿足該作業(yè)序列的請(qǐng)求?分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4218K220K596K530K例-采用最佳適應(yīng)算法分配1n 申請(qǐng)96K,n 選中5 號(hào)分區(qū), 5

17、號(hào)分區(qū)大小與申請(qǐng)空間大小一致, 應(yīng)從空閑分區(qū)表中刪去該表項(xiàng);分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4218K220K分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4218K220K596K530K例-采用最佳適應(yīng)算法分配2n 申請(qǐng)20K,n 選中1號(hào)分區(qū),分配后 1 號(hào)分區(qū)還剩下12K;分區(qū)號(hào)大小起始地址112K100K210K150K35K200K4218K220K分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4218K220K例-采用最佳適應(yīng)算法分配3n 申請(qǐng)200K,n 選中4號(hào)分區(qū),分配后剩下18K。分區(qū)號(hào)大小起始地址112

18、K100K210K150K35K200K418K220K分區(qū)號(hào)大小起始地址112K100K210K150K35K200K4218K220K例-采用首次適應(yīng)算法分配1n 申請(qǐng)96K,n 選中4號(hào)分區(qū),進(jìn)行分配后4號(hào)分區(qū)還剩下122K;分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4122K220K596K530K分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4218K220K596K530K例-采用首次適應(yīng)算法分配2n 申請(qǐng)20K,n 選中1號(hào)分區(qū),分配后剩下12K;分區(qū)號(hào)大小起始地址112K100K210K150K35K200K4122K220K596K53

19、0K分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4122K220K596K530K例-采用首次適應(yīng)算法分配3n 申請(qǐng)200K,n 現(xiàn)有的五個(gè)分區(qū)都無(wú)法滿足要求, 該作業(yè)等待。n 顯然采用首次適應(yīng)算法進(jìn)行內(nèi)存分配, 無(wú)法滿足該作業(yè)序列的需求。分區(qū)號(hào)大小起始地址112K100K210K150K35K200K4122K220K596K530K例2n 下表給出了某系統(tǒng)的空閑分區(qū)表,系統(tǒng)采用可變式分區(qū)存儲(chǔ)管理策略。現(xiàn)有以業(yè)序列:申請(qǐng)150kb,申請(qǐng)50kb,申請(qǐng)90kb,申請(qǐng)80kbn 若用首次適應(yīng)算法和最佳適應(yīng)算法來(lái)處理這些作業(yè)序列,試問(wèn)哪一種算法可以滿足該作業(yè)序列的請(qǐng)求?分區(qū)號(hào)大

20、小起始地址1300K100K2112K500K分區(qū)分配n 以首次適應(yīng)算法及空閑鏈表為例,申請(qǐng)分區(qū)大開(kāi)始查表Y是鏈表尾?N空閑區(qū)容量x?Y容量xe?N本次無(wú)法分配,返回N繼續(xù)檢查下一項(xiàng)小為x,e是Y規(guī)定的不再分割的剩余區(qū)大小。將該分區(qū)從鏈中移出從該分區(qū)中劃出x大小將分區(qū)分配給請(qǐng)求者,修改數(shù)據(jù)結(jié)構(gòu)分區(qū)回收n 回收分區(qū)時(shí),應(yīng)將空閑區(qū)插入適當(dāng)位置,此時(shí)有以下四種:n 回收分區(qū)r上面鄰接一個(gè)空閑分區(qū)n 回收分區(qū)r下面鄰接一個(gè)空閑分區(qū)n 回收分區(qū)r上面、下面各鄰接一個(gè)空閑分區(qū)n 回收分區(qū)r不與任何空閑分區(qū)相鄰回收分區(qū)r上鄰接一個(gè)空閑分區(qū)n 此時(shí)應(yīng)將回收區(qū)r與上鄰接分區(qū)F1合并成一個(gè)連續(xù)的空閑區(qū);n 合并分

21、區(qū)的首地址為空閑區(qū)F1的首地址,n 其大小為二者之和。F1回收區(qū)回收分區(qū)r下鄰接一個(gè)空閑分區(qū)n 此時(shí)應(yīng)將回收區(qū)r與下鄰接分區(qū)F2合并成一個(gè)連續(xù)的空閑區(qū);n 合并分區(qū)的首地址為回收分區(qū)r的首地址,n 其大小為二者之和?;厥諈^(qū)F2回收分區(qū)r上下鄰接空閑分區(qū)n 此時(shí)應(yīng)將回收區(qū)r與上、下鄰接分區(qū)合并成一個(gè)連續(xù)的空閑區(qū);n 合并分區(qū)的首地址為與r 上鄰接空閑區(qū)F1的首地址,n 其大小為三者之和,n 且應(yīng)將與r下鄰接的空閑區(qū)F2從空閑分區(qū)表(或空閑分區(qū)鏈)中刪去。F1回收區(qū)F2回收分區(qū)r不與任何空閑分區(qū)相鄰n 這時(shí)應(yīng)為回收區(qū)單獨(dú)建立一個(gè)新表項(xiàng), 填寫分區(qū)大小及起始地址等信息, 并將其加入到空閑分區(qū)表(或空

22、閑分區(qū)鏈)中的適當(dāng)位置。問(wèn)題:空閑分區(qū)的個(gè)數(shù)在上述幾種情況下如何變化?作業(yè)1回收區(qū)作業(yè)2分區(qū)存儲(chǔ)管理的內(nèi)存保護(hù)n 常用的存儲(chǔ)保護(hù)方法有:n 界限寄存器n 存取權(quán)限n 存儲(chǔ)保護(hù)鍵5.3.3 可重定位分區(qū)分配n 分區(qū)存儲(chǔ)管理中,必須把作業(yè)裝入到一片連續(xù)的內(nèi)存空間中。這種分配方法能滿足多道程序設(shè)計(jì)的需要,但存在碎片問(wèn)題。n 碎片(fragmentation) 也可稱為零頭,是指內(nèi)存中無(wú)法被利用的存儲(chǔ)空間。內(nèi)部碎片和外部碎片n 內(nèi)部碎片(InternalFragmentation)是指分配給作業(yè)的存儲(chǔ)空間中未被利用的部分n 外部碎片(ExternalFragmentation)是指系統(tǒng)中無(wú)法利用的小存

23、儲(chǔ)塊。前述分區(qū)存儲(chǔ)管理方法中存在什么碎片?解決碎片問(wèn)題的辦法n 拼接:解決碎片問(wèn)題的辦法之一,即通過(guò)移動(dòng)把多個(gè)分散的小分區(qū)拼接成一個(gè)大分區(qū),也可稱為緊縮(compaction)或緊湊。n 拼接的不足是要耗費(fèi)大量處理機(jī)時(shí)間。拼接示意圖0040KB90KB40KB90KB100KB170KB160KB190KB200KB230KB256KB-1256KB-1n 拼接前拼接后操作系統(tǒng)進(jìn)程5進(jìn)程4進(jìn)程3空閑(66KB)操作系統(tǒng)進(jìn)程5空閑(10KB)進(jìn)程4空閑(30KB)進(jìn)程3空閑(26KB)拼接需要的技術(shù)支持n 拼接后程序在內(nèi)存的位置發(fā)生變化,因此需要?jiǎng)討B(tài)重定位技術(shù)支持。n 空閑區(qū)放在何處:拼接后的空

24、閑區(qū)放在何處不能一概而論,應(yīng)根據(jù)移動(dòng)信息量的多少來(lái)決定。n 拼接的時(shí)機(jī):n 回收分區(qū)時(shí)拼接:只有一個(gè)空閑區(qū),但拼接頻率過(guò)高增加系統(tǒng)開(kāi)銷。n 找不到足夠大的空閑區(qū)且系統(tǒng)空閑空間總量能滿足要求:拼接頻率小于前者,空閑區(qū)管理稍復(fù)雜。也可以只拼接部分空閑區(qū)??芍囟ㄎ环謪^(qū)分配技術(shù)n 可重定位分區(qū)分配算法與動(dòng)態(tài)分區(qū)分配算法基本相同,差別僅在于:在這種分配算法中增加了拼接功能。請(qǐng)求分配大小為x的空閑區(qū)無(wú)法分配,返回N空閑分區(qū)總和xY緊湊形成連續(xù)空閑區(qū)N有大于x的空閑分區(qū)?Y按動(dòng)態(tài)分區(qū)方式進(jìn)行分配修改有關(guān)數(shù)據(jù)結(jié)構(gòu)修改有關(guān)數(shù)據(jù)結(jié)構(gòu)返回分區(qū)號(hào)和首址5.4 伙伴系統(tǒng) buddy systemn 固定分區(qū)存儲(chǔ)管理限制

25、了內(nèi)存中的進(jìn)程數(shù),動(dòng)態(tài)分區(qū)的拼接需要大量時(shí)間,而伙伴系統(tǒng)是一種較為實(shí)用的動(dòng)態(tài)存儲(chǔ)管理辦法。n 伙伴系統(tǒng)采用伙伴算法對(duì)空閑內(nèi)存進(jìn)行管理。該方法通過(guò)不斷對(duì)分大的空閑存儲(chǔ)塊來(lái)獲得小的空閑存儲(chǔ)塊。當(dāng)內(nèi)存塊釋放時(shí),應(yīng)盡可能合并空閑塊。伙伴系統(tǒng)的內(nèi)存分配n 設(shè)系統(tǒng)初始時(shí)可供分配的空間為2m個(gè)單元。n 當(dāng)進(jìn)程申請(qǐng)大小為n的空間時(shí),設(shè)2i-1n2i, 則為進(jìn)程分配大小為2i的空間。n 如系統(tǒng)不存在大小為2i的空閑塊,則查找系統(tǒng)中是否存在大于2i的空閑塊,若找到則對(duì)其進(jìn)行對(duì)半劃分,直到產(chǎn)生大小為2i的空閑塊為止。伙伴系統(tǒng)的內(nèi)存回收n 當(dāng)一塊被分成兩個(gè)大小相等的塊時(shí),這兩塊稱為伙伴。n 當(dāng)進(jìn)程釋放存儲(chǔ)空間時(shí),應(yīng)檢

26、查釋放塊的伙伴是否空閑,若空閑則合并。這個(gè)較大的空閑塊也可能存在空閑伙伴,此時(shí)也應(yīng)合并。重復(fù)上述過(guò)程,直至沒(méi)有可以合并的伙伴為止?;锇榈刂饭絥 設(shè)某空閑塊的開(kāi)始地址為d,長(zhǎng)度為2K,其伙伴的開(kāi)始地址為:n Buddy(k,d)=d+2k,若d % 2k+1=0=d-2k,若d % 2k+1= 2kn 如果參與分配的2m個(gè)單元從a開(kāi)始,則長(zhǎng)度為2K、開(kāi)始地址為d的塊,其伙伴的開(kāi)始地址為:n Buddy(k,d)=d+2k,若(d-a)% 2k+1=0=d-2k,若(d-a)% 2k+1= 2k伙伴系統(tǒng)分配及回收例n 設(shè)系統(tǒng)中初始內(nèi)存空間大小為1MB,進(jìn)程請(qǐng)求和釋放空間的操作序列為:n 進(jìn)程A申

27、請(qǐng)200KB;B申請(qǐng)120KB;C申請(qǐng)240KB;D申請(qǐng)100KB;n 進(jìn)程B釋放;E申請(qǐng)60KB;n 進(jìn)程A、C釋放;n 進(jìn)程D釋放;進(jìn)程E釋放。分配過(guò)程示意圖0128K256K384K512K640K768K896K1M初始狀態(tài)A申請(qǐng)200 B申請(qǐng)120C申請(qǐng)240 D申請(qǐng)100B釋放E申請(qǐng)60 A釋放 C釋放D釋放E釋放A256K512KAB128K512KAB128KC256KABDC256KA128KDC256KAE64DC256K256KE64DC256K256KE64D512K256KE64128K512K伙伴系統(tǒng)的二叉樹(shù)表示可以用二叉樹(shù)表示內(nèi)存分配情況。葉結(jié)點(diǎn)表示存儲(chǔ)器中的當(dāng)前

28、分區(qū),如果兩個(gè)伙伴是葉子,則至少有一個(gè)被分配。右圖表示A(200)、B(120)、C(240)、D(100)分配之后的情況。1M512K256KAC128KBD伙伴系統(tǒng)的不足n 分配和回收時(shí)需要對(duì)伙伴進(jìn)行分拆及合并。n 存儲(chǔ)空間有浪費(fèi)。5.5 覆蓋與交換技術(shù)n 覆蓋與交換技術(shù)是在多道程序環(huán)境下用來(lái)擴(kuò)充內(nèi)存的方法。5.5.1 覆蓋技術(shù)n 所謂覆蓋技術(shù)就是把一個(gè)大程序劃分為一系列覆蓋,每個(gè)覆蓋是一個(gè)相對(duì)獨(dú)立的程序單位;n 把程序執(zhí)行時(shí)不要求同時(shí)裝入內(nèi)存的覆蓋組成一組,稱為覆蓋段;n 將一個(gè)覆蓋段分配到同一個(gè)存儲(chǔ)區(qū)中,這個(gè)存儲(chǔ)區(qū)稱為覆蓋區(qū)。n 覆蓋區(qū)的大小由覆蓋段中最大的覆蓋來(lái)確定。覆蓋示例n B、

29、C為一個(gè)覆蓋段,D、E、F為另一個(gè)覆蓋段。0A 20KB20KBB 50KBC 30KB70KB110KBF30KBD20KBE40KBn 另一種覆蓋方法只需100K:B、D、E為一個(gè)覆蓋段;F、C為另一個(gè)覆蓋段常駐部分20KB覆蓋區(qū)0 50KB覆蓋區(qū)1 40KB交換技術(shù)n 在多道程序環(huán)境下,一方面內(nèi)存中存在一些阻塞進(jìn)程占據(jù)大量的存儲(chǔ)空間;另一方面外存上有許多作業(yè)因無(wú)空閑內(nèi)存而不能進(jìn)入內(nèi)存運(yùn)行。為此引入了交換。n 交換是指將內(nèi)存中暫時(shí)不用的程序及數(shù)據(jù)換出到外存中,以騰出足夠的內(nèi)存空間, 再將已具備運(yùn)行條件的進(jìn)程或進(jìn)程所需的程序或數(shù)據(jù)從外存換入內(nèi)存中。交換空間的管理n 交換空間設(shè)置在外存交換區(qū)中

30、,交換空間管理的主要目標(biāo)是提高進(jìn)程換入/換出速度。n 交換空間采用連續(xù)分配方式,使用與動(dòng)態(tài)分區(qū)分配類似的數(shù)據(jù)結(jié)構(gòu)和分配回收算法。進(jìn)程的換出與換入n 進(jìn)程的換出:先選擇換出進(jìn)程(阻塞、優(yōu)先級(jí)低、駐留時(shí)間長(zhǎng)),再申請(qǐng)對(duì)換空間,然后啟動(dòng)磁盤寫,若成功則可釋放其內(nèi)存空間并修改數(shù)據(jù)結(jié)構(gòu)。n 進(jìn)程換入:先選擇換入進(jìn)程(就緒、換出時(shí)間長(zhǎng)),再申請(qǐng)內(nèi)存空間,然后啟動(dòng)磁盤讀。覆蓋與交換的比較n 交換技術(shù)由操作系統(tǒng)自動(dòng)完成,不需要用戶參與,而覆蓋技術(shù)需要專業(yè)的程序員給出作業(yè)各部分之間的覆蓋結(jié)構(gòu),并清楚系統(tǒng)的存儲(chǔ)結(jié)構(gòu);n 交換技術(shù)主要在不同作業(yè)之間進(jìn)行,而覆蓋技術(shù)主要在同一個(gè)作業(yè)內(nèi)進(jìn)行;n 覆蓋技術(shù)主要在早期的操作

31、系統(tǒng)中采用,而交換技術(shù)在現(xiàn)代操作系統(tǒng)中仍具有較強(qiáng)的生命力。5.6分頁(yè)存儲(chǔ)管理n 分區(qū)管理中存在碎片,而緊湊技術(shù)開(kāi)銷太大,若能取消作業(yè)對(duì)存儲(chǔ)區(qū)的連續(xù)性要求,則能較好地解決碎片問(wèn)題。分頁(yè)(paging) 存儲(chǔ)管理就是基于這一思想提出的。5.6.1分頁(yè)存儲(chǔ)管理的實(shí)現(xiàn)思想n 在分頁(yè)存儲(chǔ)管理中,將進(jìn)程的邏輯地址空間劃分成若干大小相等的頁(yè)(或稱頁(yè)面),相應(yīng)地將主存空間也劃分成與頁(yè)大小相等的塊(或稱物理塊、頁(yè)框)。在為進(jìn)程分配存儲(chǔ)空間時(shí),總是以塊為單位來(lái)分配,可以將進(jìn)程中的某一頁(yè)存放到主存的某一空閑塊中。分頁(yè)系統(tǒng)中是否有碎片?頁(yè)內(nèi)碎片:由進(jìn)程最后一頁(yè)未裝滿而形成的碎片。分頁(yè)的邏輯地址結(jié)構(gòu)n 分頁(yè)存儲(chǔ)管理系統(tǒng)

32、中, 邏輯地址由頁(yè)號(hào)(Pagenumber)和頁(yè)內(nèi)位移(Pageoffset)組成。其結(jié)構(gòu)如下所示:3112110n 若A為邏輯地址,L為頁(yè)面大小,則:P=int(A/L)n 頁(yè)號(hào):n 頁(yè)內(nèi)位移:W=A % L頁(yè) 號(hào) P頁(yè) 內(nèi) 位 移W5.6.2 頁(yè)表 page table為了在內(nèi)存中找到進(jìn)程的每個(gè)頁(yè)面所對(duì)應(yīng)的物理塊,系統(tǒng)為每個(gè)進(jìn)程建立一張頁(yè)面映象表,簡(jiǎn)稱頁(yè)表。頁(yè)表:記錄頁(yè)面在內(nèi)存中對(duì)應(yīng)物理塊的數(shù)據(jù)結(jié)構(gòu)。注意:英文Pageframe在目前國(guó)內(nèi)操作系統(tǒng)教材中翻譯的有物理塊(塊)、頁(yè)框、頁(yè)架、頁(yè)幀和幀等,讀者應(yīng)加以注意,它表示的是與一個(gè)邏輯頁(yè)相對(duì)應(yīng)的一個(gè)物理塊。頁(yè)表的作用01234567頁(yè)號(hào)塊號(hào)頁(yè)

33、表作業(yè)的地址空間內(nèi)存空間頁(yè)表的作用是什么?0214270頁(yè)1頁(yè)2頁(yè)n頁(yè)頁(yè)面大小的選擇n 頁(yè)面的大小應(yīng)適中。若頁(yè)面太大,以至和一般進(jìn)程大小相差無(wú)幾,則頁(yè)面分配為:分區(qū)分配,同時(shí)頁(yè)內(nèi)碎片也較大。若頁(yè)面太小,雖然可減少頁(yè)內(nèi)碎片,但會(huì)導(dǎo)致頁(yè)表增長(zhǎng)。因此,頁(yè)面大小應(yīng)適中,通常為2的冪,一般在512B到64KB之間。n 頁(yè)表一般存放在內(nèi)存中。也可以在頁(yè)表中設(shè)置存取控制字段,以實(shí)現(xiàn)存儲(chǔ)保護(hù)。內(nèi)存塊表n 內(nèi)存塊表用來(lái)記錄內(nèi)存中各物理塊的使用情況及未分配物理塊總數(shù)。n 存儲(chǔ)分塊表可用下述方式表示:n 位示圖:利用二進(jìn)制的一位表示一個(gè)物理塊的狀態(tài),1表示已分配,0表示未分配。所有物理塊狀態(tài)位的集合構(gòu)成位示圖。n

34、空閑存儲(chǔ)塊鏈:將所有的空閑存儲(chǔ)塊用鏈表鏈接起來(lái),利用空閑物理塊中的單元存放指向下一個(gè)物理塊的指針。位示圖例012345678910111213141501234n 位示圖占用的存儲(chǔ)空間:物理塊數(shù)/8(字節(jié))110011011101111100001111100000011111110111100000存儲(chǔ)空間的分配及回收頁(yè)面分配:計(jì)算進(jìn)程所需頁(yè)面數(shù),然后在請(qǐng)求表中登記進(jìn)程號(hào)、請(qǐng)求頁(yè)面數(shù)等。如存儲(chǔ)分塊表中有足夠的空閑塊可供進(jìn)程使用,則在系統(tǒng)中取得頁(yè)表始址,并在頁(yè)表中登記頁(yè)號(hào)及其對(duì)應(yīng)的物理塊號(hào)。否則無(wú)法分配。頁(yè)面回收:將內(nèi)存塊表中相應(yīng)的物理塊改為未分配,或?qū)⒒厥諌K加入到空閑存儲(chǔ)塊鏈中,并釋放頁(yè)表,

35、修改請(qǐng)求表中的頁(yè)表始址及狀態(tài)。5.6.3 基本地址變換機(jī)構(gòu)n 地址變換機(jī)構(gòu)的任務(wù)是實(shí)現(xiàn)邏輯地址到物理地址的變換,即將邏輯地址中的頁(yè)號(hào)轉(zhuǎn)換為內(nèi)存中的物理塊號(hào)?;镜刂纷儞Q機(jī)構(gòu)續(xù)n 頁(yè)表通常存放在內(nèi)存中,為了實(shí)現(xiàn)方便,系統(tǒng)中設(shè)置了一個(gè)頁(yè)表寄存器存放頁(yè)表在內(nèi)存的起始地址和頁(yè)表的長(zhǎng)度。n 進(jìn)程未執(zhí)行時(shí),頁(yè)表的起始地址和長(zhǎng)度存放在PCB中。當(dāng)進(jìn)程執(zhí)行時(shí),才將頁(yè)表始址和長(zhǎng)度存入頁(yè)表寄存器中。地址變換過(guò)程分頁(yè)地址變換機(jī)構(gòu)自動(dòng)地將邏輯地址分為頁(yè)號(hào)和頁(yè)內(nèi)位移;將頁(yè)號(hào)與頁(yè)表長(zhǎng)度進(jìn)行比較,如果頁(yè)號(hào)超過(guò)了頁(yè)表長(zhǎng)度,則表示本次所訪問(wèn)的地址已超越進(jìn)程的地址空間,系統(tǒng)產(chǎn)生地址越界中斷;若未出現(xiàn)越界,則由頁(yè)表始址和頁(yè)號(hào)計(jì)算出

36、相應(yīng)頁(yè)表項(xiàng)的位置,從中得到該頁(yè)的物理塊號(hào);將物理塊號(hào)與邏輯地址中的頁(yè)內(nèi)位移拼接在一起,就形成了訪問(wèn)主存的物理地址。分頁(yè)系統(tǒng)的地址變換機(jī)構(gòu)圖越界中斷邏輯地址頁(yè)表寄存器頁(yè)號(hào)01234塊號(hào)物理地址頁(yè)表注意這里的頁(yè)號(hào)字段?845223851頁(yè)表始址頁(yè)表長(zhǎng)度頁(yè)號(hào)(2)頁(yè)內(nèi)位移(452)分頁(yè)地址變換例1n 設(shè)頁(yè)面大小為1K字節(jié),作業(yè)的0、1、2頁(yè)分別存放在第2、3、8塊中。則邏輯地址2500 的頁(yè)號(hào)及頁(yè)內(nèi)地址為:n 2500/1024=2(頁(yè)號(hào));2500 %1024452(頁(yè)內(nèi)地址);n 查頁(yè)表可知第2頁(yè)對(duì)應(yīng)的物理塊號(hào)為8;n 將塊號(hào)8與頁(yè)內(nèi)地址452拼接得到物理地址為:810244528644。地址變

37、換例2n 一分頁(yè)系統(tǒng)中邏輯地址長(zhǎng)度為16位,頁(yè)面大小為1KB,且第0、1、2、3頁(yè)依次存放在物理塊3、7、11、10中?,F(xiàn)有一邏輯地址0A6FH,其二進(jìn)制表示如下:頁(yè)號(hào)000010頁(yè)內(nèi)地址1001101111n 由此可知邏輯地址0A6FH的頁(yè)號(hào)為2,該頁(yè)存放在第11號(hào)物理塊中,用十六進(jìn)制表示塊號(hào)為B,所以物理地址為:n 10111001101111 ,即2E6FH。5.6.4 具有快表的地址變換機(jī)構(gòu)n 因頁(yè)表放在主存中,故存取數(shù)據(jù)時(shí)CPU至少要訪問(wèn)兩次主存,降低了內(nèi)存訪問(wèn)速度。n 為了提高地址變換速度,可在地址變換機(jī)構(gòu)中增設(shè)一個(gè)具有并行查找能力的高速緩沖存儲(chǔ)器(又稱聯(lián)想存儲(chǔ)器或快表),用以存放

38、當(dāng)前訪問(wèn)的那些頁(yè)表項(xiàng)。n TLB(translationlook-asidebuffer):轉(zhuǎn)換后備緩沖區(qū),即快表。引入快表后的地址變換過(guò)程地址變換機(jī)構(gòu)自動(dòng)將頁(yè)號(hào)與快表中的所有頁(yè)號(hào)進(jìn)行并行比較,若其中有與此匹配的頁(yè)號(hào),則取出該頁(yè)對(duì)應(yīng)的塊號(hào),與頁(yè)內(nèi)地址拼接形成物理地址。若頁(yè)號(hào)不在快表中,則再到主存頁(yè)表中取出物理塊號(hào),與頁(yè)內(nèi)地址拼接形成物理地址。同時(shí)還應(yīng)將這次所查到的頁(yè)表項(xiàng)存入快表中,若快表已滿,則必須按某種原則淘汰出一個(gè)表項(xiàng)以騰出位置。具有聯(lián)想存儲(chǔ)器的地址變換越界中斷頁(yè)表寄存器邏輯地址頁(yè)號(hào) 塊號(hào)頁(yè)號(hào)01234塊號(hào)快表物理地址頁(yè)表此處頁(yè)表與快表有何不同?頁(yè)號(hào)頁(yè)內(nèi)位移頁(yè)表始址頁(yè)表長(zhǎng)度聯(lián)想存儲(chǔ)器的大小

39、n 由于成本關(guān)系,快表大小一般由64 1024個(gè)表項(xiàng)組成。由于局部性原理,聯(lián)想存儲(chǔ)器的命中率可達(dá)80%-90% 。有效內(nèi)存訪問(wèn)時(shí)間n 設(shè)快表命中率為p,內(nèi)存訪問(wèn)時(shí)間為m, 快表訪問(wèn)時(shí)間為n,假定忽略快表更新時(shí)間n 則內(nèi)存有效訪問(wèn)時(shí)間=n p*(n+m)+(1-p)(2m+n)n 若p=0.8,m=100ns,n=20nsn 則內(nèi)存有效訪問(wèn)時(shí)間=0.8*120+0.2*220=140ns5.6.5 多級(jí)頁(yè)表及反向頁(yè)表n 現(xiàn)代計(jì)算機(jī)系統(tǒng)都支持非常大的邏輯地址空間,致使頁(yè)表很大,用連續(xù)空間存放頁(yè)表顯然不現(xiàn)實(shí)。n 如邏輯地址32位,頁(yè)面大小4KB,則頁(yè)表項(xiàng)為1M,若每個(gè)頁(yè)表項(xiàng)占4字節(jié),則頁(yè)表共需要4MB內(nèi)存空間。n 解決方案:n 用離散方式存儲(chǔ)頁(yè)表n 僅將當(dāng)前需要的部分頁(yè)表項(xiàng)放在內(nèi)存,其余放在磁盤上,需要時(shí)調(diào)入。兩級(jí)頁(yè)表及多級(jí)頁(yè)表n 將頁(yè)表再分頁(yè),使每頁(yè)與內(nèi)存物理塊大小相同,并為它們進(jìn)行編號(hào)0、1、,同時(shí)還為離散存放的頁(yè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論