




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.1 存儲(chǔ)器的層次結(jié)構(gòu)存儲(chǔ)器的層次結(jié)構(gòu) 4.2程序的裝入和鏈接程序的裝入和鏈接 4.3 連續(xù)連續(xù)分配存儲(chǔ)管理分配存儲(chǔ)管理方式方式4.4 對(duì)換對(duì)換4.5基分頁(yè)存儲(chǔ)管理方式基分頁(yè)存儲(chǔ)管理方式4.6基本分段存儲(chǔ)管理方式基本分段存儲(chǔ)管理方式4.1 存儲(chǔ)器的層次結(jié)構(gòu)存儲(chǔ)器的層次結(jié)構(gòu) 4.1.1 4.1.1 多級(jí)存儲(chǔ)器結(jié)構(gòu)多級(jí)存儲(chǔ)器結(jié)構(gòu)輔存輔存主存主存CPU寄存器寄存器通用計(jì)算機(jī)存儲(chǔ)層次通用計(jì)算機(jī)存儲(chǔ)層次可執(zhí)行存儲(chǔ)器,在時(shí)鐘周可執(zhí)行存儲(chǔ)器,在時(shí)鐘周期內(nèi)使用指令進(jìn)行訪問,期內(nèi)使用指令進(jìn)行訪問,是電子動(dòng)作。是電子動(dòng)作。通過通過I/O設(shè)備實(shí)現(xiàn)訪設(shè)備實(shí)現(xiàn)訪問,是問,是I/O動(dòng)作。動(dòng)作。圖圖4-1 完整完整 計(jì)算
2、機(jī)系統(tǒng)存儲(chǔ)層次示意計(jì)算機(jī)系統(tǒng)存儲(chǔ)層次示意 寄存器高速緩存主存磁盤緩存磁盤可移動(dòng)存儲(chǔ)介質(zhì)CPU寄存器主存輔存由由OS管理,管理,斷電信斷電信息丟失息丟失設(shè)備設(shè)備控制控制內(nèi)內(nèi)快快慢慢速度速度容量容量小小大大由由OS管理,管理,斷電信斷電信息丟失息丟失快快慢慢容量容量小小大大設(shè)備設(shè)備控制控制由由OS管理,管理,斷電信斷電信息丟失息丟失快快慢慢容量容量小小大大4.1.2 4.1.2 主存儲(chǔ)器與寄存器主存儲(chǔ)器與寄存器 1 1主存儲(chǔ)器主存儲(chǔ)器 內(nèi)存內(nèi)存 主存主存 可執(zhí)行存儲(chǔ)器可執(zhí)行存儲(chǔ)器 用于保存進(jìn)程運(yùn)行時(shí)的程序和數(shù)據(jù)。用于保存進(jìn)程運(yùn)行時(shí)的程序和數(shù)據(jù)。 微機(jī)系統(tǒng)一般為數(shù)百微機(jī)系統(tǒng)一般為數(shù)百M(fèi)B到數(shù)到數(shù)GB
3、,嵌入式計(jì)算機(jī),嵌入式計(jì)算機(jī)系統(tǒng)一般僅有幾十系統(tǒng)一般僅有幾十KB到幾到幾MB。 CPU只能從主存儲(chǔ)器中取得指令和數(shù)據(jù)。只能從主存儲(chǔ)器中取得指令和數(shù)據(jù)。 主存訪問速度遠(yuǎn)低于主存訪問速度遠(yuǎn)低于CPU執(zhí)行指令的速度,為緩執(zhí)行指令的速度,為緩和這一矛盾,引入了寄存器和高速緩存。和這一矛盾,引入了寄存器和高速緩存。 2 2寄存器(寄存器(CPUCPU寄存器)寄存器) 寄存器訪問速度最快,完全能與寄存器訪問速度最快,完全能與CPU同步,價(jià)格同步,價(jià)格十分昂貴,容量很小。十分昂貴,容量很小。 寄存器的長(zhǎng)度一般以字寄存器的長(zhǎng)度一般以字(word)為單位。為單位。 微機(jī)系統(tǒng),寄存器可能有幾十個(gè)甚至上百個(gè);而微機(jī)
4、系統(tǒng),寄存器可能有幾十個(gè)甚至上百個(gè);而嵌入式計(jì)算機(jī)系統(tǒng)一般僅有幾個(gè)到幾十個(gè)。嵌入式計(jì)算機(jī)系統(tǒng)一般僅有幾個(gè)到幾十個(gè)。 寄存器用于加速存儲(chǔ)器的訪問速度,如用地址寄寄存器用于加速存儲(chǔ)器的訪問速度,如用地址寄存器加快地址轉(zhuǎn)換速度等。存器加快地址轉(zhuǎn)換速度等。 4.1.3 4.1.3 高速緩存和磁盤緩存高速緩存和磁盤緩存 1 1高速緩存高速緩存 容量和訪問速度都介于寄存器和內(nèi)存之間。容量和訪問速度都介于寄存器和內(nèi)存之間。 程序執(zhí)行的程序執(zhí)行的局部性原理局部性原理:程序在執(zhí)行時(shí)在一較短程序在執(zhí)行時(shí)在一較短的時(shí)間內(nèi),程序的執(zhí)行僅局限于某個(gè)部分的時(shí)間內(nèi),程序的執(zhí)行僅局限于某個(gè)部分。 根據(jù)局部性原理可將主存中一些
5、經(jīng)常訪問的信息根據(jù)局部性原理可將主存中一些經(jīng)常訪問的信息存放在高速緩存中,從而減少訪問主存儲(chǔ)器的次數(shù),存放在高速緩存中,從而減少訪問主存儲(chǔ)器的次數(shù),提高程序執(zhí)行速度。提高程序執(zhí)行速度。 高速緩存分高速緩存分L1L1,L2L2,L3L3級(jí)。級(jí)。 思考:靠近思考:靠近CPUCPU的是哪一級(jí)的是哪一級(jí)? ?多級(jí)多級(jí)CACHECACHE的容量哪的容量哪個(gè)大、速度哪個(gè)快?個(gè)大、速度哪個(gè)快? 2 2磁盤緩存磁盤緩存 磁盤訪問速度遠(yuǎn)低于主存的訪問速度,因此將頻磁盤訪問速度遠(yuǎn)低于主存的訪問速度,因此將頻繁使用的一部分磁盤數(shù)據(jù)和信息,暫時(shí)存放在磁盤繁使用的一部分磁盤數(shù)據(jù)和信息,暫時(shí)存放在磁盤緩存中,可減少訪問磁
6、盤的次數(shù)。緩存中,可減少訪問磁盤的次數(shù)。 磁盤緩存本身并不是一種實(shí)際存在的存儲(chǔ)介質(zhì)磁盤緩存本身并不是一種實(shí)際存在的存儲(chǔ)介質(zhì)。 主存也可以看做是輔存的高速緩存主存也可以看做是輔存的高速緩存:輔存中的數(shù)輔存中的數(shù)據(jù)必須復(fù)制到主存方能使用;反之,數(shù)據(jù)也必須先據(jù)必須復(fù)制到主存方能使用;反之,數(shù)據(jù)也必須先存在主存中,才能輸出到輔存。存在主存中,才能輸出到輔存。 思考:思考:1.磁盤緩存到底是硬盤的一部分還是內(nèi)存磁盤緩存到底是硬盤的一部分還是內(nèi)存的一部分?的一部分? 2.判斷對(duì)錯(cuò):一個(gè)文件的數(shù)據(jù)可能出現(xiàn)在存儲(chǔ)判斷對(duì)錯(cuò):一個(gè)文件的數(shù)據(jù)可能出現(xiàn)在存儲(chǔ)器層次的不同級(jí)別中。器層次的不同級(jí)別中。4.2程序的裝入和鏈
7、接程序的裝入和鏈接 將用戶源程序變成可執(zhí)行程序,通常要經(jīng)過:將用戶源程序變成可執(zhí)行程序,通常要經(jīng)過: 1.1.編譯:由編譯程序編譯:由編譯程序(Compiler)將用戶源代碼編譯將用戶源代碼編譯成成若干個(gè)目標(biāo)模塊若干個(gè)目標(biāo)模塊(Object Module); 2.2.鏈接鏈接:由鏈接程序:由鏈接程序(Linker)將編譯后形成的一組將編譯后形成的一組目標(biāo)模塊,以及它們所需要的目標(biāo)模塊,以及它們所需要的庫(kù)函數(shù)庫(kù)函數(shù)鏈接在一起,形鏈接在一起,形成一個(gè)完整的成一個(gè)完整的裝入模塊裝入模塊(Load Module); 3.3.裝入裝入:由裝入程序:由裝入程序(Loader)將裝入模塊裝入內(nèi)存。將裝入模塊
8、裝入內(nèi)存。圖圖4-2對(duì)用戶程序的處理步驟對(duì)用戶程序的處理步驟 庫(kù)鏈接程序裝入模塊裝入程序編譯程序產(chǎn)生的目標(biāo)模塊第一步第二步第三步內(nèi)存4.2.14.2.1程序的裝入程序的裝入程序的裝入程序的裝入1絕對(duì)裝入方式絕對(duì)裝入方式2靜態(tài)可重定位裝入方式靜態(tài)可重定位裝入方式3動(dòng)態(tài)運(yùn)行時(shí)裝入方式動(dòng)態(tài)運(yùn)行時(shí)裝入方式將目標(biāo)模塊整體裝入到內(nèi)存中事先指定的將目標(biāo)模塊整體裝入到內(nèi)存中事先指定的位置。位置??筛鶕?jù)內(nèi)存的情況將裝入模塊一次性整體裝可根據(jù)內(nèi)存的情況將裝入模塊一次性整體裝入到適當(dāng)位置。入到適當(dāng)位置。 1絕對(duì)裝入方式絕對(duì)裝入方式(Absolute Loading Mode) 前提條件:知道程序?qū)Ⅰv留在內(nèi)存的什么位
9、置。前提條件:知道程序?qū)Ⅰv留在內(nèi)存的什么位置。 過程:編譯程序直接產(chǎn)生過程:編譯程序直接產(chǎn)生絕對(duì)地址絕對(duì)地址的目標(biāo)代碼的目標(biāo)代碼即程序中的邏輯地址與實(shí)際內(nèi)存地址完全相同。即程序中的邏輯地址與實(shí)際內(nèi)存地址完全相同。 思考:采用該方式還需要對(duì)程序和數(shù)據(jù)的地址進(jìn)思考:采用該方式還需要對(duì)程序和數(shù)據(jù)的地址進(jìn)行修改嗎?行修改嗎? 程序中所使用的絕對(duì)地址,既可在編譯或匯編時(shí)程序中所使用的絕對(duì)地址,既可在編譯或匯編時(shí)給出,也可由程序員直接賦予。給出,也可由程序員直接賦予。 絕對(duì)裝入方式只適用于單絕對(duì)裝入方式只適用于單道程序環(huán)境道程序環(huán)境。 2可重定位裝入方式可重定位裝入方式(Relocation Loadin
10、g Mode) 多道程序環(huán)境下,不可能預(yù)知目標(biāo)模塊應(yīng)放在內(nèi)存的多道程序環(huán)境下,不可能預(yù)知目標(biāo)模塊應(yīng)放在內(nèi)存的何處,因此目標(biāo)模塊的起始地址是從何處,因此目標(biāo)模塊的起始地址是從0開始的,程序中的開始的,程序中的其它地址也都是相對(duì)于起始地址。其它地址也都是相對(duì)于起始地址。 此時(shí)應(yīng)根據(jù)內(nèi)存的當(dāng)前情況采用此時(shí)應(yīng)根據(jù)內(nèi)存的當(dāng)前情況采用可重定位可重定位裝入方式,裝入方式,將裝入模塊裝入到內(nèi)存的適當(dāng)位置。將裝入模塊裝入到內(nèi)存的適當(dāng)位置。 重定位:裝入時(shí)對(duì)目標(biāo)程序中重定位:裝入時(shí)對(duì)目標(biāo)程序中指令和數(shù)據(jù)指令和數(shù)據(jù)的修改過程。的修改過程。 地址變換通常是在裝入時(shí)一次完成的,以后不再改變。地址變換通常是在裝入時(shí)一次完
11、成的,以后不再改變。 優(yōu)點(diǎn):可將裝入模塊裝入到內(nèi)存中任何允許的位置優(yōu)點(diǎn):可將裝入模塊裝入到內(nèi)存中任何允許的位置 缺點(diǎn):一旦裝入則不允許程序再移動(dòng)位置。缺點(diǎn):一旦裝入則不允許程序再移動(dòng)位置。圖圖4-3作業(yè)裝入內(nèi)存時(shí)的情況作業(yè)裝入內(nèi)存時(shí)的情況LOAD 1,2500365LOAD 1,2500365100001100012500150005000250010000作業(yè)地址空間內(nèi)存空間思考:如何將相對(duì)地址思考:如何將相對(duì)地址改為絕對(duì)地址?改為絕對(duì)地址?例如,用戶程例如,用戶程序序05000,將該用戶程序?qū)⒃撚脩舫绦蜓b入到內(nèi)存的裝入到內(nèi)存的1000015000號(hào)單元。號(hào)單元。3.3.動(dòng)態(tài)運(yùn)行時(shí)動(dòng)態(tài)運(yùn)行時(shí)
12、裝入裝入方式方式(Dynamic Run-time Loading)(Dynamic Run-time Loading) 由于運(yùn)行過程中目標(biāo)模塊在內(nèi)存中的位置可能要由于運(yùn)行過程中目標(biāo)模塊在內(nèi)存中的位置可能要經(jīng)常改變,此時(shí)就應(yīng)采用動(dòng)態(tài)運(yùn)行時(shí)裝入的方式。經(jīng)常改變,此時(shí)就應(yīng)采用動(dòng)態(tài)運(yùn)行時(shí)裝入的方式。 裝入時(shí)不轉(zhuǎn)換地址而是在運(yùn)行時(shí)才轉(zhuǎn)換裝入時(shí)不轉(zhuǎn)換地址而是在運(yùn)行時(shí)才轉(zhuǎn)換。 硬件機(jī)制:硬件機(jī)制:重定位寄存器重定位寄存器。優(yōu)點(diǎn):優(yōu)點(diǎn):1.裝入內(nèi)存時(shí)地址不做任何修改,因而裝入后裝入內(nèi)存時(shí)地址不做任何修改,因而裝入后可以再搬遷??梢栽侔徇w。如進(jìn)程掛起、激活如進(jìn)程掛起、激活。 2.可實(shí)現(xiàn)多個(gè)目標(biāo)模塊存放在不連續(xù)
13、的內(nèi)存中。可實(shí)現(xiàn)多個(gè)目標(biāo)模塊存放在不連續(xù)的內(nèi)存中。 動(dòng)態(tài)運(yùn)行時(shí)裝入動(dòng)態(tài)運(yùn)行時(shí)裝入+動(dòng)態(tài)運(yùn)行時(shí)鏈接動(dòng)態(tài)運(yùn)行時(shí)鏈接 4.2.24.2.2程序的鏈接程序的鏈接程程序序的的鏈鏈接接靜態(tài)鏈接靜態(tài)鏈接:動(dòng)態(tài)鏈接動(dòng)態(tài)鏈接程序進(jìn)入內(nèi)存之前程序進(jìn)入內(nèi)存之前,將各目標(biāo)模塊及所將各目標(biāo)模塊及所需的庫(kù)函數(shù)鏈接成一個(gè)完整的裝配模需的庫(kù)函數(shù)鏈接成一個(gè)完整的裝配模塊,不可再分。塊,不可再分。裝入時(shí)動(dòng)裝入時(shí)動(dòng)態(tài)鏈接態(tài)鏈接:運(yùn)行時(shí)動(dòng)運(yùn)行時(shí)動(dòng)態(tài)鏈接態(tài)鏈接:將編譯后的一組目標(biāo)模將編譯后的一組目標(biāo)模塊,在裝入內(nèi)存時(shí)邊裝塊,在裝入內(nèi)存時(shí)邊裝入邊鏈接。入邊鏈接。在程序執(zhí)行中需要某些目標(biāo)在程序執(zhí)行中需要某些目標(biāo)模塊時(shí),才將其進(jìn)行鏈接。模塊
14、時(shí),才將其進(jìn)行鏈接。1 1靜態(tài)鏈接方式靜態(tài)鏈接方式(Static Linking)(Static Linking) (1) 修改相對(duì)地址。修改相對(duì)地址。 每個(gè)目標(biāo)模塊中使用的都是相對(duì)地址即其起始每個(gè)目標(biāo)模塊中使用的都是相對(duì)地址即其起始地址都為地址都為0。鏈接成一個(gè)裝入模塊時(shí),原模塊起始地。鏈接成一個(gè)裝入模塊時(shí),原模塊起始地址不再是址不再是0,須修改相對(duì)地址。須修改相對(duì)地址。 (2)變換外部調(diào)用符號(hào)。變換外部調(diào)用符號(hào)。 將每個(gè)模塊的外部調(diào)用符號(hào)變換為相對(duì)地址將每個(gè)模塊的外部調(diào)用符號(hào)變換為相對(duì)地址。 事先進(jìn)行鏈接所形成的一個(gè)完整的裝入模塊,稱事先進(jìn)行鏈接所形成的一個(gè)完整的裝入模塊,稱為為可執(zhí)行文件
15、可執(zhí)行文件。 裝入模塊不再拆開,要運(yùn)行時(shí)一次性裝入內(nèi)存。裝入模塊不再拆開,要運(yùn)行時(shí)一次性裝入內(nèi)存。圖圖 4-4程序鏈接示意圖程序鏈接示意圖 模塊 ACALL B;Return;0L-1模塊 BCALL C;Return;0M-1模塊 CReturn;0N-10模塊 AJSR“L”Return;L-1模塊 BJSR“LM”Return;LL+M-1L+ML+M+N-1模塊 CReturn;(a) 目標(biāo)模塊(b) 裝入模塊2.2.裝入時(shí)動(dòng)態(tài)鏈接裝入時(shí)動(dòng)態(tài)鏈接(Load-time Dynamic Linking)(Load-time Dynamic Linking) 目標(biāo)模塊裝入內(nèi)存時(shí)邊裝入邊鏈接:
16、裝入目標(biāo)模目標(biāo)模塊裝入內(nèi)存時(shí)邊裝入邊鏈接:裝入目標(biāo)模塊時(shí),若發(fā)生一個(gè)外部模塊調(diào)用事件,將找出相應(yīng)塊時(shí),若發(fā)生一個(gè)外部模塊調(diào)用事件,將找出相應(yīng)的外部目標(biāo)模塊裝入內(nèi)存,并修改相對(duì)地址。裝入的外部目標(biāo)模塊裝入內(nèi)存,并修改相對(duì)地址。裝入時(shí)動(dòng)態(tài)鏈接方式有以下優(yōu)點(diǎn):時(shí)動(dòng)態(tài)鏈接方式有以下優(yōu)點(diǎn): (1) 便于修改和更新。便于修改和更新。 未裝入內(nèi)存前,修改或更新目標(biāo)模塊較為容易。未裝入內(nèi)存前,修改或更新目標(biāo)模塊較為容易。 (2)便于實(shí)現(xiàn)對(duì)目標(biāo)模塊的共享。便于實(shí)現(xiàn)對(duì)目標(biāo)模塊的共享。 OSOS很容易將一個(gè)目標(biāo)模塊鏈接到幾個(gè)應(yīng)用模塊很容易將一個(gè)目標(biāo)模塊鏈接到幾個(gè)應(yīng)用模塊上,實(shí)現(xiàn)多個(gè)應(yīng)用程序?qū)υ撃K的共享。上,實(shí)現(xiàn)多
17、個(gè)應(yīng)用程序?qū)υ撃K的共享。 靜態(tài)鏈接、裝入時(shí)鏈接的缺點(diǎn):靜態(tài)鏈接、裝入時(shí)鏈接的缺點(diǎn):1)1)整個(gè)運(yùn)行期間模塊都不能改變,實(shí)際應(yīng)用時(shí)希整個(gè)運(yùn)行期間模塊都不能改變,實(shí)際應(yīng)用時(shí)希望當(dāng)某個(gè)模塊出錯(cuò)時(shí)可獨(dú)立修改再裝入模塊。望當(dāng)某個(gè)模塊出錯(cuò)時(shí)可獨(dú)立修改再裝入模塊。2)2)每次運(yùn)行時(shí)裝入模塊都是相同的,實(shí)際運(yùn)行時(shí)每次運(yùn)行時(shí)裝入模塊都是相同的,實(shí)際運(yùn)行時(shí)有些模塊運(yùn)行后期才用或者可能根本用不到,造有些模塊運(yùn)行后期才用或者可能根本用不到,造成內(nèi)存空間浪費(fèi)。成內(nèi)存空間浪費(fèi)。3 3運(yùn)行時(shí)動(dòng)態(tài)鏈接運(yùn)行時(shí)動(dòng)態(tài)鏈接(Run-time Dynamic Linking)(Run-time Dynamic Linking)將所有
18、可能要運(yùn)行的模塊都全部裝入內(nèi)存,并將所有可能要運(yùn)行的模塊都全部裝入內(nèi)存,并在裝入時(shí)全部鏈接在一起是低效的。在裝入時(shí)全部鏈接在一起是低效的。 比如:錯(cuò)誤處理目標(biāo)模塊,如果程序在整個(gè)運(yùn)行比如:錯(cuò)誤處理目標(biāo)模塊,如果程序在整個(gè)運(yùn)行過程中都不出現(xiàn)錯(cuò)誤,則顯然就不會(huì)用到該模塊。過程中都不出現(xiàn)錯(cuò)誤,則顯然就不會(huì)用到該模塊。 對(duì)裝入時(shí)鏈接方式改進(jìn)即運(yùn)行時(shí)動(dòng)態(tài)鏈接方式對(duì)裝入時(shí)鏈接方式改進(jìn)即運(yùn)行時(shí)動(dòng)態(tài)鏈接方式。 執(zhí)行過程中,調(diào)用哪個(gè)模塊則由執(zhí)行過程中,調(diào)用哪個(gè)模塊則由OSOS找到該模塊把找到該模塊把它鏈接到調(diào)用者模塊上并將之裝入內(nèi)存。它鏈接到調(diào)用者模塊上并將之裝入內(nèi)存。 優(yōu)點(diǎn)優(yōu)點(diǎn): :加快程序裝入過程;節(jié)省大量
19、內(nèi)存空間。加快程序裝入過程;節(jié)省大量?jī)?nèi)存空間。 4.3連續(xù)分配方式連續(xù)分配方式 連連續(xù)續(xù)分分配配1.單一連續(xù)分配單一連續(xù)分配4.動(dòng)態(tài)重定位分區(qū)分配動(dòng)態(tài)重定位分區(qū)分配2.固定分區(qū)分配固定分區(qū)分配3.可變分區(qū)分配可變分區(qū)分配4.3.14.3.1單一連續(xù)分配單一連續(xù)分配最簡(jiǎn)單的一種存儲(chǔ)管理方式。最簡(jiǎn)單的一種存儲(chǔ)管理方式。只能用于只能用于單用戶單用戶、單任務(wù)單任務(wù)的操作系統(tǒng)中的操作系統(tǒng)中。內(nèi)內(nèi)存存系統(tǒng)區(qū)系統(tǒng)區(qū):系統(tǒng)區(qū)僅提供給:系統(tǒng)區(qū)僅提供給OS使用,通常是放使用,通常是放在內(nèi)存的低址部分在內(nèi)存的低址部分用戶區(qū)用戶區(qū):用戶區(qū)是指除系統(tǒng)區(qū)以外的全部?jī)?nèi)存:用戶區(qū)是指除系統(tǒng)區(qū)以外的全部?jī)?nèi)存空間,提供給用戶使用
20、??臻g,提供給用戶使用。4.3.24.3.2固定分區(qū)固定分區(qū)分配分配 1 1劃分分區(qū)的方法:劃分分區(qū)的方法: 將用戶區(qū)分成固定數(shù)量的幾個(gè)分區(qū)將用戶區(qū)分成固定數(shù)量的幾個(gè)分區(qū), ,每個(gè)分區(qū)存每個(gè)分區(qū)存放一個(gè)用戶程序。放一個(gè)用戶程序。 (1) 分區(qū)大小相等。分區(qū)大小相等。 缺點(diǎn)缺點(diǎn): :不靈活,若程序太小造成內(nèi)存空間浪費(fèi);不靈活,若程序太小造成內(nèi)存空間浪費(fèi); 程序太大無法則裝入。程序太大無法則裝入。 適用范圍:利用計(jì)算機(jī)去控制多個(gè)相同對(duì)象(所適用范圍:利用計(jì)算機(jī)去控制多個(gè)相同對(duì)象(所需的內(nèi)存空間相等)的場(chǎng)合。例如,冶煉爐爐溫群需的內(nèi)存空間相等)的場(chǎng)合。例如,冶煉爐爐溫群控系統(tǒng)??叵到y(tǒng)。 (2) (2
21、) 分區(qū)大小不等。分區(qū)大小不等。 把用戶區(qū)劃分成含有多個(gè)較小的分區(qū)、適量的把用戶區(qū)劃分成含有多個(gè)較小的分區(qū)、適量的中等分區(qū)及少量的大分區(qū)。根據(jù)程序的大小分配適中等分區(qū)及少量的大分區(qū)。根據(jù)程序的大小分配適當(dāng)?shù)姆謪^(qū)。當(dāng)?shù)姆謪^(qū)。 2 2內(nèi)存分配內(nèi)存分配 (1)(1)將分區(qū)按大小進(jìn)行排隊(duì)并建立分區(qū)使用表。將分區(qū)按大小進(jìn)行排隊(duì)并建立分區(qū)使用表。 (2)(2)要裝入時(shí)由內(nèi)存分配程序檢索該表要裝入時(shí)由內(nèi)存分配程序檢索該表: : 若找到能滿足要求的、尚未分配的分區(qū)則分配若找到能滿足要求的、尚未分配的分區(qū)則分配并修改狀態(tài)置;并修改狀態(tài)置; 若未找則拒絕分配內(nèi)存。若未找則拒絕分配內(nèi)存。圖圖 4-54-5固定分區(qū)使
22、用表固定分區(qū)使用表 操作系統(tǒng)作業(yè)A作業(yè)B作業(yè)C24 KB32 KB64 KB128 KB256 KB分區(qū)號(hào) 大小/KB 起址/KB 狀態(tài)11220已分配23232已分配36464已分配4128128未分配(b) 存儲(chǔ)空間分配情況(a) 分區(qū)說明表4.3.34.3.3動(dòng)態(tài)分區(qū)動(dòng)態(tài)分區(qū)( (可變分區(qū)可變分區(qū)) )分配分配 根據(jù)進(jìn)程的實(shí)際需要為之分配內(nèi)存空間。根據(jù)進(jìn)程的實(shí)際需要為之分配內(nèi)存空間。 實(shí)現(xiàn)過程需解決三個(gè)問題:實(shí)現(xiàn)過程需解決三個(gè)問題:1.1.分區(qū)分配中的數(shù)據(jù)結(jié)構(gòu);分區(qū)分配中的數(shù)據(jù)結(jié)構(gòu);2.2.分區(qū)分配算法分區(qū)分配算法;3.3.分區(qū)的分配與回收。分區(qū)的分配與回收。 1.1.分區(qū)分配中的數(shù)據(jù)結(jié)
23、構(gòu)分區(qū)分配中的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)須配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)用來描述系統(tǒng)須配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)用來描述空閑分區(qū)空閑分區(qū)和和已分配分區(qū)已分配分區(qū)的情況,為分配提供依據(jù)。常用的有的情況,為分配提供依據(jù)。常用的有以下兩種形式:以下兩種形式: (1)(1)空閑分區(qū)表??臻e分區(qū)表。 每個(gè)空閑分區(qū)占一個(gè)表目,表目包括分區(qū)序號(hào)、每個(gè)空閑分區(qū)占一個(gè)表目,表目包括分區(qū)序號(hào)、分區(qū)始址及分區(qū)的大小等數(shù)據(jù)項(xiàng)。分區(qū)始址及分區(qū)的大小等數(shù)據(jù)項(xiàng)。(2)(2)空閑分區(qū)鏈。單向鏈表、空閑分區(qū)鏈。單向鏈表、雙向鏈表雙向鏈表。 在每個(gè)分區(qū)的首尾部重復(fù)設(shè)置狀態(tài)位和分區(qū)大小;在每個(gè)分區(qū)的首尾部重復(fù)設(shè)置狀態(tài)位和分區(qū)大小;首部設(shè)置前向指針;尾部設(shè)置后向指針
24、。首部設(shè)置前向指針;尾部設(shè)置后向指針。圖圖4-64-6空閑鏈結(jié)構(gòu)空閑鏈結(jié)構(gòu) 前向指針0N個(gè)字節(jié)可用后向指針0N+2N+2i結(jié)點(diǎn)結(jié)點(diǎn)3 3分區(qū)分配操作:分配、回收分區(qū)分配操作:分配、回收1)1)分配內(nèi)存分配內(nèi)存 假設(shè)假設(shè)u.size:u.size:請(qǐng)求的分區(qū)大小;請(qǐng)求的分區(qū)大??; m.size:m.size:表中每個(gè)空閑分區(qū)的大小;表中每個(gè)空閑分區(qū)的大??; size:size:是事先規(guī)定的不再切割的剩余分區(qū)的大小。是事先規(guī)定的不再切割的剩余分區(qū)的大小。 若若m.size-u.sizesize,m.size-u.sizesize,不再切割將整個(gè)分區(qū)不再切割將整個(gè)分區(qū)分配分配, , 分配區(qū)的首址返回
25、給調(diào)用者;分配區(qū)的首址返回給調(diào)用者; 否則,從該分區(qū)中按請(qǐng)求的大小劃分出一塊內(nèi)否則,從該分區(qū)中按請(qǐng)求的大小劃分出一塊內(nèi)存空間分配出去,余下部分仍留在空閑分區(qū)鏈存空間分配出去,余下部分仍留在空閑分區(qū)鏈( (表表) )中。中。從頭開始查表檢索完否?m.sizeu.size?m.size-u.sizesize?從該分區(qū)中劃出u.size大小的分區(qū)將該分區(qū)分配給請(qǐng)求者修改有關(guān)數(shù)據(jù)結(jié)構(gòu)返回返回繼續(xù)檢索下一個(gè)表項(xiàng)將該分區(qū)從鏈中移出YNNYYN2) 2) 回收內(nèi)存回收內(nèi)存 從空閑區(qū)鏈從空閑區(qū)鏈( (表表) )中找到相應(yīng)的插入點(diǎn),此時(shí)可能出中找到相應(yīng)的插入點(diǎn),此時(shí)可能出現(xiàn)以下四種情況之一:現(xiàn)以下四種情況之一:
26、 (1)(1)回收區(qū)與插入點(diǎn)的前一個(gè)空閑分區(qū)回收區(qū)與插入點(diǎn)的前一個(gè)空閑分區(qū)F1F1相鄰接。相鄰接。方法:將回收區(qū)與插入點(diǎn)的前一分區(qū)合并,修改其前方法:將回收區(qū)與插入點(diǎn)的前一分區(qū)合并,修改其前一分區(qū)一分區(qū)F1F1的大小。的大小。前向指針0N個(gè)字節(jié)可用后向指針0N+2N+2F1回收區(qū)回收區(qū)已分配已分配 (2) 回收分區(qū)與插入點(diǎn)的后一空閑分區(qū)回收分區(qū)與插入點(diǎn)的后一空閑分區(qū)F2相鄰接。相鄰接。方法:將兩分區(qū)合并,用回收區(qū)的首址作為新空閑區(qū)的方法:將兩分區(qū)合并,用回收區(qū)的首址作為新空閑區(qū)的首址,大小為兩者之和。首址,大小為兩者之和。前向指針0N個(gè)字節(jié)可用后向指針0N+2N+2F2回收區(qū)回收區(qū)已分配已分配
27、F2F2已分配已分配F2 (3) (3)回收區(qū)同時(shí)與插入點(diǎn)的前、后兩個(gè)分區(qū)鄰接?;厥諈^(qū)同時(shí)與插入點(diǎn)的前、后兩個(gè)分區(qū)鄰接。方法:將三個(gè)分區(qū)合并使用方法:將三個(gè)分區(qū)合并使用F1F1表項(xiàng)和表項(xiàng)和F1F1首址,取消首址,取消F2F2的表項(xiàng),新分區(qū)大小為三者之和。的表項(xiàng),新分區(qū)大小為三者之和。前向指針0N個(gè)字節(jié)可用后向指針0N+2N+2F2回收區(qū)回收區(qū)已分配已分配F2F2F1F2F1 (4) 回收區(qū)既不與回收區(qū)既不與F1鄰接,又不與鄰接,又不與F2鄰接。鄰接。方法:為回收區(qū)單獨(dú)建立一新表項(xiàng),填寫回收區(qū)的方法:為回收區(qū)單獨(dú)建立一新表項(xiàng),填寫回收區(qū)的首址和大小,根據(jù)首址插入到空閑鏈中適當(dāng)位置。首址和大小,根
28、據(jù)首址插入到空閑鏈中適當(dāng)位置。前向指針0N個(gè)字節(jié)可用后向指針0N +2N +2回收區(qū)回收區(qū)已分配已分配F2已分配已分配已分配已分配分分區(qū)區(qū)分分配配算算法法2.分類分類搜索分搜索分配算法配算法1.順序順序搜索分搜索分配算法配算法NFFFWF:QF:鏈表按空閑區(qū)地址鏈表按空閑區(qū)地址從低到高排序從低到高排序BF:鏈表按空閑區(qū)容量從鏈表按空閑區(qū)容量從小到大排序小到大排序容量相等的空閑區(qū)容量相等的空閑區(qū)組成一個(gè)鏈表組成一個(gè)鏈表鏈表按空閑區(qū)容量從鏈表按空閑區(qū)容量從大到小排序大到小排序1 1. .首次首次適應(yīng)算法適應(yīng)算法(first fit) (first fit) FF FF 空閑分區(qū)鏈以地址遞增的次序鏈
29、接。空閑分區(qū)鏈以地址遞增的次序鏈接。 每次從鏈?zhǔn)组_始順序查找,若找到第一個(gè)大小合適的每次從鏈?zhǔn)组_始順序查找,若找到第一個(gè)大小合適的空閑分區(qū),按作業(yè)的大小從該分區(qū)中劃出相應(yīng)內(nèi)存空間,空閑分區(qū),按作業(yè)的大小從該分區(qū)中劃出相應(yīng)內(nèi)存空間,余下的空閑分區(qū)仍留在空閑鏈中。余下的空閑分區(qū)仍留在空閑鏈中。 若從鏈?zhǔn)字敝伶溛捕疾荒苷业揭粋€(gè)能滿足要求的分區(qū),若從鏈?zhǔn)字敝伶溛捕疾荒苷业揭粋€(gè)能滿足要求的分區(qū),則內(nèi)存分配失敗、則內(nèi)存分配失敗、返回鏈?zhǔn)追祷劓準(zhǔn)住?優(yōu)點(diǎn):高址部分大空閑區(qū)較多。為以后到達(dá)的大作業(yè)預(yù)優(yōu)點(diǎn):高址部分大空閑區(qū)較多。為以后到達(dá)的大作業(yè)預(yù)留了空間。留了空間。 缺點(diǎn):低址部分留下許多碎片;每次查找又都是
30、從低址缺點(diǎn):低址部分留下許多碎片;每次查找又都是從低址部分開始,查找效率低;找到的不一定最合適。部分開始,查找效率低;找到的不一定最合適。 4.3.4 基于順序搜索的動(dòng)態(tài)分區(qū)分配算法基于順序搜索的動(dòng)態(tài)分區(qū)分配算法以空閑分區(qū)鏈為例以空閑分區(qū)鏈為例2.2.循環(huán)循環(huán)首次適應(yīng)算法首次適應(yīng)算法(next fit) (next fit) NFNF 分配內(nèi)存空間時(shí),從上次找到的空閑分區(qū)的下分配內(nèi)存空間時(shí),從上次找到的空閑分區(qū)的下一個(gè)空閑分區(qū)開始查找。一個(gè)空閑分區(qū)開始查找。 實(shí)現(xiàn)方法:實(shí)現(xiàn)方法: 設(shè)置設(shè)置起始查尋指針:起始查尋指針:用于指示下一次起始查用于指示下一次起始查尋的空閑分區(qū),找到后,調(diào)整起始查尋指針
31、;尋的空閑分區(qū),找到后,調(diào)整起始查尋指針; 采用循環(huán)查找方式。采用循環(huán)查找方式。 優(yōu)點(diǎn):內(nèi)存中的空閑分區(qū)分布得更均勻;減少優(yōu)點(diǎn):內(nèi)存中的空閑分區(qū)分布得更均勻;減少了查找空閑分區(qū)時(shí)的開銷。了查找空閑分區(qū)時(shí)的開銷。 缺點(diǎn):缺乏大的空閑分區(qū)。缺點(diǎn):缺乏大的空閑分區(qū)。 3.3.最佳最佳適應(yīng)算法適應(yīng)算法(best fit) (best fit) BFBF 找能滿足要求的最小的空閑分區(qū)分配。找能滿足要求的最小的空閑分區(qū)分配。 空閑分區(qū)空閑分區(qū)按容量從小到大鏈接按容量從小到大鏈接。 第一次找到的滿足要求的空閑區(qū)必然是最佳的。第一次找到的滿足要求的空閑區(qū)必然是最佳的。 優(yōu)點(diǎn):對(duì)每個(gè)進(jìn)程而言都是最合適的。優(yōu)點(diǎn):
32、對(duì)每個(gè)進(jìn)程而言都是最合適的。 缺點(diǎn):每次分配后所切割下來的剩余部分總是最缺點(diǎn):每次分配后所切割下來的剩余部分總是最小的,存儲(chǔ)器中碎片過多。小的,存儲(chǔ)器中碎片過多。 4.4.最壞最壞適應(yīng)算法適應(yīng)算法(worst fit) (worst fit) WFWF 空閑分區(qū)按容量從大到小鏈接??臻e分區(qū)按容量從大到小鏈接。 分配時(shí)總是挑最大的空閑區(qū)分配。分配時(shí)總是挑最大的空閑區(qū)分配。 優(yōu)點(diǎn):產(chǎn)生碎片的幾率最小,查找效率較高。優(yōu)點(diǎn):產(chǎn)生碎片的幾率最小,查找效率較高。 缺點(diǎn):存儲(chǔ)器中缺乏大的空閑分區(qū)。缺點(diǎn):存儲(chǔ)器中缺乏大的空閑分區(qū)。 WFWF算法對(duì)中、小作業(yè)有利,算法對(duì)中、小作業(yè)有利,1.1.快速快速適應(yīng)算法適
33、應(yīng)算法(quick fit)(quick fit) 系統(tǒng)中有多個(gè)空閑分區(qū)鏈表,每個(gè)鏈表中分區(qū)容量相系統(tǒng)中有多個(gè)空閑分區(qū)鏈表,每個(gè)鏈表中分區(qū)容量相等。等。 沒有相等容量的分區(qū)放在特殊空閑區(qū)鏈表中。沒有相等容量的分區(qū)放在特殊空閑區(qū)鏈表中。 內(nèi)存中設(shè)立索引表,每一個(gè)表項(xiàng)對(duì)應(yīng)一種空閑分區(qū)類內(nèi)存中設(shè)立索引表,每一個(gè)表項(xiàng)對(duì)應(yīng)一種空閑分區(qū)類型,并記錄該類型鏈表表頭的指針。型,并記錄該類型鏈表表頭的指針。 空閑分區(qū)的分類是根據(jù)進(jìn)程常用的空間大小進(jìn)行劃分,空閑分區(qū)的分類是根據(jù)進(jìn)程常用的空間大小進(jìn)行劃分,如如2KB2KB、4KB4KB、8KB8KB等。等。 如如7KB7KB這樣的空閑區(qū),既可以放在這樣的空閑區(qū),既
34、可以放在8KB8KB的鏈表中,也可的鏈表中,也可以放在特殊空閑區(qū)鏈表中以放在特殊空閑區(qū)鏈表中4.3.54.3.5 基于索引搜索的動(dòng)態(tài)分區(qū)分配算法基于索引搜索的動(dòng)態(tài)分區(qū)分配算法 優(yōu)點(diǎn):查找效率高;分配時(shí)不對(duì)分區(qū)分割,優(yōu)點(diǎn):查找效率高;分配時(shí)不對(duì)分區(qū)分割,能保留大的分區(qū),也不會(huì)產(chǎn)生內(nèi)存碎片。能保留大的分區(qū),也不會(huì)產(chǎn)生內(nèi)存碎片。缺點(diǎn):分區(qū)歸還主存時(shí)算法復(fù)雜,系統(tǒng)開銷缺點(diǎn):分區(qū)歸還主存時(shí)算法復(fù)雜,系統(tǒng)開銷較大。為進(jìn)程所分配的一個(gè)分區(qū)中,存在空間較大。為進(jìn)程所分配的一個(gè)分區(qū)中,存在空間浪費(fèi)。浪費(fèi)。 是典型的以空間換時(shí)間的作法。是典型的以空間換時(shí)間的作法。2.2.伙伴系統(tǒng)伙伴系統(tǒng) 固定分區(qū):限制了活動(dòng)進(jìn)程
35、的數(shù)目,當(dāng)進(jìn)程大小與固定分區(qū):限制了活動(dòng)進(jìn)程的數(shù)目,當(dāng)進(jìn)程大小與空閑分區(qū)大小不匹配時(shí),內(nèi)存空間利用率很低??臻e分區(qū)大小不匹配時(shí),內(nèi)存空間利用率很低。 動(dòng)態(tài)分區(qū):算法復(fù)雜,回收時(shí)需要進(jìn)行分區(qū)合并,動(dòng)態(tài)分區(qū):算法復(fù)雜,回收時(shí)需要進(jìn)行分區(qū)合并,系統(tǒng)開銷較大。系統(tǒng)開銷較大。 伙伴系統(tǒng)是對(duì)以上兩種方式的折衷?;锇橄到y(tǒng)是對(duì)以上兩種方式的折衷?;锇橄到y(tǒng)規(guī)定,伙伴系統(tǒng)規(guī)定,無論已分配分區(qū)或空閑分區(qū),其大無論已分配分區(qū)或空閑分區(qū),其大小均為小均為2 2的的k k次冪次冪,lkmlkm。 假設(shè)系統(tǒng)開始運(yùn)行時(shí),整個(gè)內(nèi)存區(qū)是一個(gè)大小為假設(shè)系統(tǒng)開始運(yùn)行時(shí),整個(gè)內(nèi)存區(qū)是一個(gè)大小為2 2m m的的空閑分區(qū)??臻e分區(qū)。 將空
36、閑分區(qū)根據(jù)大小進(jìn)行分類,對(duì)每一類相同將空閑分區(qū)根據(jù)大小進(jìn)行分類,對(duì)每一類相同大小的空閑分區(qū)設(shè)立一個(gè)雙向鏈表。大小的空閑分區(qū)設(shè)立一個(gè)雙向鏈表。1.1.分配:分配: 若需要大小為若需要大小為n n的空間,找的空間,找2 2i-1i-1n2=TLS=TL,表示訪問越界,于是產(chǎn)生越,表示訪問越界,于是產(chǎn)生越界中斷信號(hào);若未越界,則根據(jù)段表的始址和該段的段界中斷信號(hào);若未越界,則根據(jù)段表的始址和該段的段號(hào),計(jì)算出該段對(duì)應(yīng)段表項(xiàng)的位置,從中讀出該段在內(nèi)號(hào),計(jì)算出該段對(duì)應(yīng)段表項(xiàng)的位置,從中讀出該段在內(nèi)存的起始地址存的起始地址; ; 2) 2)再檢查段內(nèi)地址再檢查段內(nèi)地址d d是否超過該段的段長(zhǎng)是否超過該段的
37、段長(zhǎng)SLSL。若超。若超過,發(fā)出越界中斷信號(hào);若未越界,則將該段的基址過,發(fā)出越界中斷信號(hào);若未越界,則將該段的基址d d與段內(nèi)地址相加,即可得到要訪問的內(nèi)存物理地址。與段內(nèi)地址相加,即可得到要訪問的內(nèi)存物理地址。圖圖4-184-18分段系統(tǒng)的地址變換過程分段系統(tǒng)的地址變換過程 控制寄存器段表始址段表長(zhǎng)度2100段號(hào)S越界1 K段長(zhǎng)600段號(hào)01236 K4 K5002008 K9200基址位移量W82928K82928692主存物理地址有效地址像分頁(yè)系統(tǒng)一樣,當(dāng)段表放在內(nèi)存中時(shí),每要訪問像分頁(yè)系統(tǒng)一樣,當(dāng)段表放在內(nèi)存中時(shí),每要訪問一個(gè)數(shù)據(jù),一個(gè)數(shù)據(jù),都須訪問兩次內(nèi)存都須訪問兩次內(nèi)存,從而極大
38、地降低了計(jì)算,從而極大地降低了計(jì)算機(jī)的速率。解決的方法也和分頁(yè)系統(tǒng)類似,再增設(shè)一個(gè)機(jī)的速率。解決的方法也和分頁(yè)系統(tǒng)類似,再增設(shè)一個(gè)聯(lián)想存儲(chǔ)器聯(lián)想存儲(chǔ)器,用于保存最近常用的段表項(xiàng)。由于一般情,用于保存最近常用的段表項(xiàng)。由于一般情況是段比頁(yè)大,因而段表項(xiàng)的數(shù)目比頁(yè)表項(xiàng)的數(shù)目少,況是段比頁(yè)大,因而段表項(xiàng)的數(shù)目比頁(yè)表項(xiàng)的數(shù)目少,其所需的聯(lián)想存儲(chǔ)器也相對(duì)較小,便可以顯著地減少存其所需的聯(lián)想存儲(chǔ)器也相對(duì)較小,便可以顯著地減少存取數(shù)據(jù)的時(shí)間,比起沒有地址變換的常規(guī)存儲(chǔ)器的存取取數(shù)據(jù)的時(shí)間,比起沒有地址變換的常規(guī)存儲(chǔ)器的存取速度來僅慢約速度來僅慢約10%10%15%15%。 4 4分頁(yè)和分段的主要區(qū)別分頁(yè)和分
39、段的主要區(qū)別由上所述不難看出,分頁(yè)和分段系統(tǒng)有許多相似之由上所述不難看出,分頁(yè)和分段系統(tǒng)有許多相似之處。比如,兩者都采用離散分配方式,且都要通過地址處。比如,兩者都采用離散分配方式,且都要通過地址映射機(jī)構(gòu)來實(shí)現(xiàn)地址變換。但在概念上兩者完全不同,映射機(jī)構(gòu)來實(shí)現(xiàn)地址變換。但在概念上兩者完全不同,主要表現(xiàn)在下述三個(gè)方面。主要表現(xiàn)在下述三個(gè)方面。(1) (1) 頁(yè)是信息的頁(yè)是信息的物理物理單位,單位,分頁(yè)是為實(shí)現(xiàn)離散分配分頁(yè)是為實(shí)現(xiàn)離散分配方式,以消減內(nèi)存的外零頭方式,以消減內(nèi)存的外零頭,提高內(nèi)存的利用率。或者,提高內(nèi)存的利用率?;蛘哒f,分頁(yè)僅僅是由于說,分頁(yè)僅僅是由于系統(tǒng)管理的需要系統(tǒng)管理的需要而不
40、是用戶的需要。而不是用戶的需要。段則是信息的段則是信息的邏輯邏輯單位,它含有一組其意義相對(duì)完整的單位,它含有一組其意義相對(duì)完整的信息。分段的目的是為了能更好地滿足用戶的需要。信息。分段的目的是為了能更好地滿足用戶的需要。 (2) (2) 頁(yè)的頁(yè)的大小固定且由系統(tǒng)決定大小固定且由系統(tǒng)決定,由系統(tǒng)把邏輯地,由系統(tǒng)把邏輯地址劃分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分,是由機(jī)器硬件實(shí)現(xiàn)的,址劃分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分,是由機(jī)器硬件實(shí)現(xiàn)的,因而在系統(tǒng)中只能有一種大小的頁(yè)面;而段的長(zhǎng)度卻不因而在系統(tǒng)中只能有一種大小的頁(yè)面;而段的長(zhǎng)度卻不固定,決定于用戶所編寫的程序,通常由固定,決定于用戶所編寫的程序,通常由編譯程序編譯程
41、序在對(duì)在對(duì)源程序進(jìn)行編譯時(shí),根據(jù)信息的性質(zhì)來劃分。源程序進(jìn)行編譯時(shí),根據(jù)信息的性質(zhì)來劃分。(3) (3) 分頁(yè)分頁(yè)的作業(yè)地址空間是的作業(yè)地址空間是一維一維的,即單一的線性的,即單一的線性地址空間,程序員只需利用一個(gè)記憶符,即可表示一個(gè)地址空間,程序員只需利用一個(gè)記憶符,即可表示一個(gè)地址;而地址;而分段分段的作業(yè)地址空間則是的作業(yè)地址空間則是二維二維的,程序員在標(biāo)的,程序員在標(biāo)識(shí)一個(gè)地址時(shí),既需給出段名,又需給出段內(nèi)地址。識(shí)一個(gè)地址時(shí),既需給出段名,又需給出段內(nèi)地址。 4.5.34.5.3信息共享信息共享分段系統(tǒng)的一個(gè)突出優(yōu)點(diǎn),是易于實(shí)現(xiàn)段的共享,。分段系統(tǒng)的一個(gè)突出優(yōu)點(diǎn),是易于實(shí)現(xiàn)段的共享,。
42、在分頁(yè)系統(tǒng)中,遠(yuǎn)不如分段系統(tǒng)來得方便。在分頁(yè)系統(tǒng)中,遠(yuǎn)不如分段系統(tǒng)來得方便。 例如,有一個(gè)多用戶系統(tǒng),可同時(shí)接納例如,有一個(gè)多用戶系統(tǒng),可同時(shí)接納4040個(gè)用戶,個(gè)用戶,他們都執(zhí)行一個(gè)文本編輯程序他們都執(zhí)行一個(gè)文本編輯程序(Text Editor)(Text Editor)。如果文。如果文本編輯程序有本編輯程序有160 KB160 KB的代碼和另外的代碼和另外40 KB40 KB的數(shù)據(jù)區(qū),則的數(shù)據(jù)區(qū),則總共需有總共需有 8 MB8 MB的內(nèi)存空間來支持的內(nèi)存空間來支持4040個(gè)用戶。如果個(gè)用戶。如果160 160 KBKB的代碼是的代碼是可重入可重入的的(Reentrant)(Reentran
43、t),則無論是在分頁(yè)系,則無論是在分頁(yè)系統(tǒng)還是在分段系統(tǒng)中,該代碼都能被共享,在內(nèi)存中只統(tǒng)還是在分段系統(tǒng)中,該代碼都能被共享,在內(nèi)存中只需保留一份文本編輯程序的副本,此時(shí)所需的內(nèi)存空間需保留一份文本編輯程序的副本,此時(shí)所需的內(nèi)存空間僅為僅為1760 KB(401760 KB(4040+160)40+160),而不是,而不是8000 KB8000 KB。 假定每個(gè)頁(yè)面的大小為假定每個(gè)頁(yè)面的大小為4 KB4 KB,那么,那么,160 KB160 KB的代碼的代碼將占用將占用4040個(gè)頁(yè)面,數(shù)據(jù)區(qū)占個(gè)頁(yè)面,數(shù)據(jù)區(qū)占1010個(gè)頁(yè)面。為實(shí)現(xiàn)代碼的共個(gè)頁(yè)面。為實(shí)現(xiàn)代碼的共享,應(yīng)在每個(gè)進(jìn)程的頁(yè)表中都建立享,
44、應(yīng)在每個(gè)進(jìn)程的頁(yè)表中都建立4040個(gè)頁(yè)表項(xiàng),它們的個(gè)頁(yè)表項(xiàng),它們的物理塊號(hào)都是物理塊號(hào)都是21#21#60#60#。在每個(gè)進(jìn)程的頁(yè)表中,還須為。在每個(gè)進(jìn)程的頁(yè)表中,還須為自己的數(shù)據(jù)區(qū)建立頁(yè)表項(xiàng),它們的物理塊號(hào)分別是自己的數(shù)據(jù)區(qū)建立頁(yè)表項(xiàng),它們的物理塊號(hào)分別是61#61#70#70#、71#71#80#80#、81#81#90#90#,等等。圖,等等。圖4-194-19是是分頁(yè)系統(tǒng)中共享分頁(yè)系統(tǒng)中共享editoreditor的示意圖。的示意圖。 圖圖4-194-19分頁(yè)系統(tǒng)中共享分頁(yè)系統(tǒng)中共享editoreditor的示意圖的示意圖 ed 1ed 2ed 40data 1data 10進(jìn)程121
45、22606170頁(yè)表ed 1ed 2ed 40data 1data 10進(jìn)程22122607180ed 1ed 2ed 40data 1data 10data 1data 10主存021226061707180頁(yè)表在分段系統(tǒng)中,實(shí)現(xiàn)共享則容易得多,只需在每個(gè)在分段系統(tǒng)中,實(shí)現(xiàn)共享則容易得多,只需在每個(gè)進(jìn)程的段表中為文本編輯程序設(shè)置一個(gè)段表項(xiàng)。圖進(jìn)程的段表中為文本編輯程序設(shè)置一個(gè)段表項(xiàng)。圖4-204-20是分段系統(tǒng)中共享是分段系統(tǒng)中共享editoreditor的示意圖。的示意圖。 圖 4-20分段系統(tǒng)中共享editor的示意圖 editor進(jìn)程1data 1進(jìn)程2editordata 2段表段長(zhǎng)
46、基址16080402401608040380editordata 1data 280240280380420可重入代碼可重入代碼(Reentrant Code)(Reentrant Code)又稱為又稱為“純代純代碼碼”(Pure Code)(Pure Code),是一種允許多個(gè)進(jìn)程同時(shí)訪問的代碼。,是一種允許多個(gè)進(jìn)程同時(shí)訪問的代碼。為使各個(gè)進(jìn)程所執(zhí)行的代碼完全相同,絕對(duì)不允許可重為使各個(gè)進(jìn)程所執(zhí)行的代碼完全相同,絕對(duì)不允許可重入代碼在執(zhí)行中有任何改變。入代碼在執(zhí)行中有任何改變。 可重入代碼不允許任何進(jìn)程對(duì)它進(jìn)行修改。但事實(shí)上,可重入代碼不允許任何進(jìn)程對(duì)它進(jìn)行修改。但事實(shí)上,大多數(shù)代碼在執(zhí)行時(shí)
47、都可能有些改變,例如,用于控制大多數(shù)代碼在執(zhí)行時(shí)都可能有些改變,例如,用于控制程序執(zhí)行次數(shù)的變量以及指針、信號(hào)量及數(shù)組等。程序執(zhí)行次數(shù)的變量以及指針、信號(hào)量及數(shù)組等。 為此,在每個(gè)進(jìn)程中,都必須配以為此,在每個(gè)進(jìn)程中,都必須配以局部數(shù)據(jù)區(qū)局部數(shù)據(jù)區(qū),把在,把在執(zhí)行中可能改變的部分拷貝到該數(shù)據(jù)區(qū),這樣,程序在執(zhí)行中可能改變的部分拷貝到該數(shù)據(jù)區(qū),這樣,程序在執(zhí)行時(shí),只需對(duì)該數(shù)據(jù)區(qū)執(zhí)行時(shí),只需對(duì)該數(shù)據(jù)區(qū)( (屬于該進(jìn)程私有屬于該進(jìn)程私有) )中的內(nèi)容進(jìn)中的內(nèi)容進(jìn)行修改,并不去改變共享的代碼,這時(shí)的可共享代碼即行修改,并不去改變共享的代碼,這時(shí)的可共享代碼即成為可重入碼。成為可重入碼。 4.6.44.6.4段頁(yè)式存儲(chǔ)管理方式段頁(yè)式存儲(chǔ)管理方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健身私教課程合同及退款協(xié)議
- Unit 1 My classroom (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 10《傳統(tǒng)美德 源遠(yuǎn)流長(zhǎng)》 教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治五年級(jí)上冊(cè)統(tǒng)編版
- 2025屆高考生物備考教學(xué)設(shè)計(jì):第六章 遺傳的分子基礎(chǔ) 課時(shí)2 DNA分子的結(jié)構(gòu)、復(fù)制及基因的本質(zhì)
- Module 2 Unit 2 There are lots of beautiful lakes in China(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)英語(yǔ)六年級(jí)上冊(cè)
- Module 10 Unit 2 教學(xué)設(shè)計(jì) 2024-2025學(xué)年外研版九年級(jí)英語(yǔ)上冊(cè)
- 白坪鄉(xiāng)農(nóng)貿(mào)市場(chǎng)施工合同
- 框架建筑合同范本
- 11 白樺 第一課時(shí) 教學(xué)設(shè)計(jì) -2023-2024學(xué)年語(yǔ)文四年級(jí)下冊(cè)統(tǒng)編版
- 土地承包合同范本個(gè)人
- 高中轉(zhuǎn)學(xué)申請(qǐng)書
- 2025年企業(yè)合伙聯(lián)營(yíng)框架協(xié)議模板(2篇)
- 中國(guó)電信行業(yè)人工智能行業(yè)市場(chǎng)調(diào)研及投資規(guī)劃建議報(bào)告
- 2025年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 水幕噴淋系統(tǒng)的工作原理與應(yīng)用
- 2024年山東海洋集團(tuán)有限公司社會(huì)招聘考試真題
- 小學(xué)生拗九節(jié)課件
- 《感冒中醫(yī)治療》課件
- 2023湖南文藝出版社五年級(jí)音樂下冊(cè)全冊(cè)教案
- 中職數(shù)學(xué)單招一輪總復(fù)習(xí)《集合》復(fù)習(xí)課件
- 閩教版(2020版)六年級(jí)下冊(cè)信息技術(shù)整冊(cè)教案
評(píng)論
0/150
提交評(píng)論