第一篇:實(shí)驗(yàn)3存儲(chǔ)管理模擬
計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)
存儲(chǔ)管理模擬
實(shí)驗(yàn)三
存儲(chǔ)管理模擬
一、內(nèi)容補(bǔ)充說(shuō)明
實(shí)驗(yàn)中固定內(nèi)存分區(qū)采用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn),分區(qū)信息采用結(jié)構(gòu)體初始化實(shí)現(xiàn)。由于結(jié)構(gòu)體中含string類,VC++不能對(duì)含string類的結(jié)構(gòu)體初始化,這里采用MinGW編譯器作為程序平臺(tái)。
MinGW,即 Minimalist GNU For Windows。它是一些頭文件和端口庫(kù)的集合,該集合允許人們?cè)跊]有第三方動(dòng)態(tài)鏈接庫(kù)的情況下使用 GCC(GNU Compiler C)產(chǎn)生 Windows32 程序。實(shí)際上 MinGW 并不是一個(gè) C/C++ 編譯器,而是一套 GNU 工具集合。除開 GCC(GNU 編譯器集合)以外,MinGW 還包含有一些其他的 GNU 程序開發(fā)工具(比如 gawk bison 等等)。開發(fā) MinGW 是為了那些不喜歡工作在 Linux(FreeBSD)操作系統(tǒng)而留在 Windows 的人提供一套符合 GNU 的 GNU 工作環(huán)境。
內(nèi)存的分配采用“最先適應(yīng)算法”實(shí)現(xiàn),由于是固定分區(qū),采用該算法不僅簡(jiǎn)單,而且保證效率。
二、分析和設(shè)計(jì)
1.理論分析
初始狀態(tài)內(nèi)存中沒有作業(yè)運(yùn)行;以后每5 秒鐘隨機(jī)生成一個(gè)作業(yè),如果不能滿足作業(yè)需求(主存中沒有分區(qū)能夠容納的下),則丟棄該作業(yè)。作業(yè)以秒為單位進(jìn)行驅(qū)動(dòng),當(dāng)一個(gè)作業(yè)運(yùn)行時(shí)間結(jié)束后將釋放內(nèi)存空間。
2.總體設(shè)計(jì)
分區(qū)信息采用初始化實(shí)現(xiàn)。
作業(yè)以秒為單位進(jìn)行驅(qū)動(dòng)。
作業(yè)的生成、內(nèi)存的釋放采用永真循環(huán)實(shí)現(xiàn),當(dāng)作業(yè)全部運(yùn)行完后跳出循環(huán)。
新作業(yè)的大小和運(yùn)行時(shí)間由隨機(jī)數(shù)函數(shù)rand生成。
結(jié)構(gòu)體Job用于生成新作業(yè)時(shí)用;結(jié)構(gòu)體District是內(nèi)存分區(qū),作業(yè)分配成功后,作業(yè)的信息全部保存在District內(nèi),不再由專門的作業(yè)隊(duì)列記錄。
作業(yè)運(yùn)行時(shí)間由District[i].Remainder記錄,當(dāng)每秒驅(qū)動(dòng)一次時(shí),時(shí)間將減少一秒。當(dāng)時(shí)間減少為0時(shí),作業(yè)運(yùn)行結(jié)束,釋放內(nèi)存空間。
每分配一個(gè)作業(yè),變量Jump自加一次;每釋放一個(gè)作業(yè)時(shí)Jump自減一次。因?yàn)樽鳂I(yè)先分配、內(nèi)存后釋放,所以當(dāng)作業(yè)都運(yùn)行完時(shí)Jump必定等于初始值,這時(shí)程序跳出永真循環(huán)。
三、詳細(xì)實(shí)現(xiàn)
for(int j=0,clock=0,flag=0;1;clock++,flag=0,Sleep(1000))
//總循環(huán),永真循環(huán),flag為作業(yè)分配標(biāo)志,clock為作業(yè)產(chǎn)生時(shí)鐘,Sleep為程序步進(jìn)驅(qū)動(dòng)
{if(j //每5秒產(chǎn)生一個(gè)新作業(yè) {p=new Job; //產(chǎn)生新作業(yè) …… for(int k=0;k<10;k++) if(District_table[k].Job_size==0 && p->Job_size<=District_table[k].District_size) //如果分區(qū)未分配并且作業(yè)大小小于分區(qū)大小 {District_table[k].Job_num=j; //分配內(nèi)存,并將作業(yè)信息保存至分區(qū)信息中 …… for(int k=0;k<10;k++) if(District_table[k].Job_size!=0) //如果分區(qū)中有作業(yè)運(yùn)行 District_table[k].Remainder-=1; //程序步進(jìn)驅(qū)動(dòng),作業(yè)運(yùn)行減1 …… for(int t=0;t<10;t++)if(District_table[t].Job_size!=0 && District_table[t].Remainder==0) //如果分區(qū)中有作業(yè)運(yùn)行,并且作業(yè)已運(yùn)行完成 計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn) 存儲(chǔ)管理模擬 {District_table[t].Job_size=0; //釋放內(nèi)存 …… 四、操作界面 操作界面為命令提示符界面,實(shí)驗(yàn)截圖如下: 1.編譯、連接界面 計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn) 存儲(chǔ)管理模擬 五、心得體會(huì) 程序最后跳出永真循環(huán)是用break語(yǔ)句。原來(lái)是用goto語(yǔ)句,用break語(yǔ)句或exit語(yǔ)句應(yīng)該也是可以的,但運(yùn)行后死活都跳不出來(lái),后來(lái)不知道為什么又好了。 MinGW是一個(gè)很好的編譯器,安裝包小、程序文件小、綠色環(huán)保、速度快、效率高。另外,還有很多人性化的設(shè)計(jì),比如:現(xiàn)實(shí)代碼行數(shù)、網(wǎng)格顯示、配對(duì)括號(hào)激活時(shí)高亮顯示方便檢查、括號(hào)代碼折疊方便查看上下段程序等等??上indows Vista用戶沒福氣,幸好我是Windows XP。 六、附錄 #include using namespace std; 計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn) 存儲(chǔ)管理模擬 cout<<“/\/\/\/分區(qū)表初始化完成\/\/\/\”< //打印內(nèi)存分區(qū)內(nèi)容 cout< //總循環(huán),永真循環(huán),flag為作業(yè)分配標(biāo)志,clock為作業(yè)產(chǎn)生時(shí)鐘,Sleep為程序步進(jìn)驅(qū)動(dòng) {if(j //每5秒產(chǎn)生一個(gè)新作業(yè) {p=new Job; //產(chǎn)生新作業(yè) p->Job_size=rand()%34+1; //作業(yè)大小隨機(jī) p->Job_time=rand()%40+1; //作業(yè)運(yùn)行時(shí)間隨機(jī) cout< Job_time<<“S”< for(int k=0;k<10;k++) if(District_table[k].Job_size==0 && p->Job_size<=District_table[k].District_size) //如果分區(qū)未分配并且作業(yè)大小小于分區(qū)大小 {District_table[k].Job_num=j; //分配內(nèi)存,并將作業(yè)信息保存至分區(qū)信息中 District_table[k].Job_size=p->Job_size; District_table[k].Remainder=p->Job_time; District_table[k].District_state=“Allocated”; cout<<“↓↓↓↓↓↓↓↓↓↓分配成功,分配信息如下↓↓↓↓↓↓↓↓↓↓”< cout<<“分區(qū)號(hào)碼 分區(qū)大小 作業(yè)大小 分區(qū)狀態(tài)”< for(int t=0;t<10;t++) cout< flag=1; //分配成功 Jump+=1; //內(nèi)存中作業(yè)數(shù) break; } if(flag==0) //如果作業(yè)分配不成功 cout<<“→→→→→→→→→空間不足,分配失敗,已丟棄→→→→→→→→→”< j++; //生成作業(yè)數(shù) } for(int k=0;k<10;k++) if(District_table[k].Job_size!=0) //如果分區(qū)中有作業(yè)運(yùn)行 District_table[k].Remainder-=1; //程序步進(jìn)驅(qū)動(dòng),作業(yè)運(yùn)行減1 for(int t=0;t<10;t++) if(District_table[t].Job_size!=0 && District_table[t].Remainder==0) //如果分區(qū)中有作業(yè)運(yùn)行,并且作業(yè)已運(yùn)行完成 {District_table[t].Job_size=0; //釋放內(nèi)存 District_table[t].District_state=“Unallocated”; cout< District_table[t].Job_num=0; cout<<“分區(qū)號(hào)碼 分區(qū)大小 作業(yè)大小 分區(qū)狀態(tài)”< for(int r=0;r<10;r++) cout< Jump-=1; //內(nèi)存中作業(yè)數(shù) 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)五 存儲(chǔ)管理 一、實(shí)驗(yàn)?zāi)康?、加深?duì)操作系統(tǒng)存儲(chǔ)管理的理解、能過(guò)模似頁(yè)面調(diào)試算法,加深理解操作系統(tǒng)對(duì)內(nèi)存的高度管理 二、總的設(shè)計(jì)思想、環(huán)境語(yǔ)言、工具等總的設(shè)計(jì)思想: 1、編寫函數(shù)計(jì)算并輸出下述各種算法的命中率 ① OPT頁(yè)面置換算法 OPT所選擇被淘汰的頁(yè)面是已調(diào)入內(nèi)存,且在以后永不使用的,或是在最長(zhǎng)時(shí)間內(nèi)不再被訪問的頁(yè)面。因此如何找出這樣的頁(yè)面是該算法的關(guān)鍵??蔀槊總€(gè)頁(yè)面設(shè)置一個(gè)步長(zhǎng)變量,其初值為一足夠大的數(shù),對(duì)于不在內(nèi)存的頁(yè)面,將其值重置為零,對(duì)于位于內(nèi)存的頁(yè)面,其值重置為當(dāng)前訪問頁(yè)面與之后首次出現(xiàn)該頁(yè)面時(shí)兩者之間的距離,因此該值越大表示該頁(yè)是在最長(zhǎng)時(shí)間內(nèi)不再被訪問的頁(yè)面,可以選擇其作為換出頁(yè)面。② FIFO頁(yè)面置換算法 FIFO總是選擇最先進(jìn)入內(nèi)存的頁(yè)面予以淘汰,因此可設(shè)置一個(gè)先進(jìn)先出的忙頁(yè)幀隊(duì)列,新調(diào)入內(nèi)存的頁(yè)面掛在該隊(duì)列的尾部,而當(dāng)無(wú)空閑頁(yè)幀時(shí),可從該隊(duì)列首部取下一個(gè)頁(yè)幀作為空閑頁(yè)幀,進(jìn)而調(diào)入所需頁(yè)面。③ LRU頁(yè)面置換算法 LRU是根據(jù)頁(yè)面調(diào)入內(nèi)存后的使用情況進(jìn)行決策的,它利用“最近的過(guò)去”作為“最近的將來(lái)”的近似,選擇最近最久未使用的頁(yè)面予以淘汰。該算法主要借助于頁(yè)面結(jié)構(gòu)中的訪問時(shí)間time來(lái)實(shí)現(xiàn),time記錄了一個(gè)頁(yè)面上次的訪問時(shí)間,因此,當(dāng)須淘汰一個(gè)頁(yè)面時(shí),選擇處于內(nèi)存的頁(yè)面中其time值最小的頁(yè)面,即最近最久未使用的頁(yè)面予以淘汰。 ④ LFU頁(yè)面置換算法 LFU要求為每個(gè)頁(yè)面配置一個(gè)計(jì)數(shù)器(即頁(yè)面結(jié)構(gòu)中的counter),一旦某頁(yè)被訪問,則將其計(jì)數(shù)器的值加1,在需要選擇一頁(yè)置換時(shí),則將選擇其計(jì)數(shù)器值最小的頁(yè)面,即內(nèi)存中訪問次數(shù)最少的頁(yè)面進(jìn)行淘汰。⑤ NUR頁(yè)面置換算法 NUR要求為每個(gè)頁(yè)面設(shè)置一位訪問位(該訪問位仍可使用頁(yè)面結(jié)構(gòu)中的counter表示),當(dāng)某頁(yè)被訪問時(shí),其訪問位counter置為1。需要進(jìn)行頁(yè)面置換時(shí),置換算法從替換指針開始(初始時(shí)指向第一個(gè)頁(yè)面)順序檢查處于內(nèi)存中的各個(gè)頁(yè)面,如果其訪問位為0,就選擇該頁(yè)換出,否則替換指針下移繼續(xù)向下查找。如果內(nèi)存中的所有頁(yè)面掃描完畢未找到訪問位為0的頁(yè)面,則將替換指針重新指向第一個(gè)頁(yè)面,同時(shí)將內(nèi) 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 存中所有頁(yè)面的訪問位置0,當(dāng)開始下一輪掃描時(shí),便一定能找到counter為0的頁(yè)面。 2、在主函數(shù)中生成要求的指令序列,并將其轉(zhuǎn)換成頁(yè)地址流;在不同的內(nèi)存容量下調(diào)用上述函數(shù)使其計(jì)算并輸出相應(yīng)的命中率。 環(huán)境語(yǔ)言:Linux下的GNU 編譯環(huán)境 三、數(shù)據(jù)結(jié)構(gòu)與模塊說(shuō)明 程序中用到的數(shù)據(jù)結(jié)構(gòu)、類型定義及主要的函數(shù)原型如下: 1、數(shù)據(jù)結(jié)構(gòu) (1)頁(yè)面結(jié)構(gòu) typedef struct{ int pn, pfn, counter, time;} pl_type;pl_type pl[total_vp];其中pn為頁(yè)面號(hào)(頁(yè)號(hào)),pfn為頁(yè)幀號(hào)(物理塊號(hào)),counter為一個(gè)周期內(nèi)訪問該頁(yè)面的次數(shù),time為訪問時(shí)間;pl[total_vp]為頁(yè)面結(jié)構(gòu)數(shù)組,由于共有320條指令,每頁(yè)可裝入10條指令,因此虛頁(yè)長(zhǎng)total_vp的值為32。 (2)頁(yè)幀控制結(jié)構(gòu) struct pfc_struct{ int pn, pfn;struct pfc_struct *next;};typedef struct pfc_struct pfc_type;pfc_type pfc[total_vp], *freepf_head, *busypf_head, *busypf_tail;其中pfc[total_vp]定義用戶進(jìn)程的頁(yè)幀控制結(jié)構(gòu)數(shù)組,在該實(shí)驗(yàn)中,用戶內(nèi)存工作區(qū)是動(dòng)態(tài)變化的,最多可達(dá)到用戶進(jìn)程的虛頁(yè)數(shù)目,即32個(gè)物理塊。 *freepf_head為空閑頁(yè)幀頭的指針 *busypf_head為忙頁(yè)幀頭的指針 *busypf_tail忙頁(yè)幀尾的指針 2、變量定義 (1)int a[total_instruction]: 指令流數(shù)組(2)int diseffect: 頁(yè)面失效次數(shù) (3)int page[total_instruction]: 每條指令所屬頁(yè)面號(hào) (4)int offset[total_instruction]: 每頁(yè)裝入10條指令后取模運(yùn)算得出的頁(yè)內(nèi)偏移地址(5)int total_pf: 用戶進(jìn)程的內(nèi)存頁(yè)幀數(shù) 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 3、主要函數(shù) (1)void initialize(int): 初始化函數(shù) 該函數(shù)主要對(duì)頁(yè)面結(jié)構(gòu)數(shù)組pl和頁(yè)幀結(jié)構(gòu)數(shù)組pfc進(jìn)行初始化,如置頁(yè)面結(jié)構(gòu)中的頁(yè)面號(hào)pn,初始化頁(yè)幀號(hào)pfn為空,訪問次數(shù)counter為0,訪問時(shí)間time為-1;同樣對(duì)頁(yè)幀數(shù)組進(jìn)行初始化,形成一個(gè)空閑頁(yè)幀隊(duì)列。 (2)void OPT(int): 計(jì)算使用最佳頁(yè)面算法時(shí)的命中率 (3)void FIFO(int): 計(jì)算使用先進(jìn)先出頁(yè)面置換算法時(shí)的命中率(4)void LRU(int): 計(jì)算使用最近最久未使用頁(yè)面置換算法時(shí)的命中率(5)void LFU(int): 計(jì)算使用最少使用置換算法時(shí)的命中率(6)void NUR(int): 計(jì)算使用最近未使用置換算法時(shí)的命中率 四、主要算法的設(shè)計(jì)與實(shí)現(xiàn) void FIFO(int total_pf)/*先進(jìn)先出頁(yè)面置換算法*/ { int i,j;pfc_type *p;initialize(total_pf);busypf_head=busypf_tail=NULL;for(i=0;i if(pl[page[i]].pfn==INVALID)/*頁(yè)面失效*/ { diseffect=diseffect+1; if(freepf_head==NULL)/*無(wú)空閑頁(yè)幀*/ { } p=freepf_head->next;//有空閑頁(yè)幀 freepf_head->next=NULL;freepf_head->pn=page[i];/* 將所需頁(yè)面調(diào)入空閑頁(yè)幀 */ pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)/* 若忙頁(yè)幀隊(duì)列為空,則將其頭尾指針都指向剛調(diào)入頁(yè)p=busypf_head->next;pl[busypf_head->pn].pfn=INVALID;//將忙頁(yè)幀隊(duì)首頁(yè)面作為換出頁(yè)面 freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;//忙頁(yè)幀頭指針后移 面所在的頁(yè)幀 */ 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 busypf_head=busypf_tail=freepf_head;else{ //否則,將剛調(diào)入頁(yè)面所在的頁(yè)幀掛在忙頁(yè)幀隊(duì)列尾部 } freepf_head=p;//空閑頁(yè)幀頭指針后移 busypf_tail->next=freepf_head;busypf_tail=freepf_head;} } printf(“FIFO:%6.4f ”,1-(float)diseffect/320);} void LRU(int total_pf)/*最近最久未使用頁(yè)面置換算法*/ { int i,j;int min,minj,present_time;initialize(total_pf);present_time=0;for(i=0;i if(pl[page[i]].pfn==INVALID)/*頁(yè)面失效*/ { diseffect++;if(freepf_head==NULL)/*無(wú)空閑頁(yè)幀*/ { min=32767;for(j=0;j } freepf_head=&pfc[pl[minj].pfn];//騰出一個(gè)單元 pl[minj].pfn=INVALID;pl[minj].time=-1;freepf_head->next=NULL;if(min>pl[j].time && pl[j].pfn!=INVALID){ } min=pl[j].time;minj=j;面*/ } pl[page[i]].pfn=freepf_head->pfn;//有空閑頁(yè)面,改為有效 pl[page[i]].time=present_time;//修改頁(yè)面的訪問時(shí)間 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 } freepf_head=freepf_head->next;//減少一個(gè)free 頁(yè)面 else pl[page[i]].time=present_time;//命中則修改該單元的訪問時(shí)間 present_time++;} printf(“LRU:%6.4f ”,1-(float)diseffect/320);} void NUR(int total_pf)/* 最近未使用頁(yè)面置換算法 */ { int i,j,dp,cont_flag,old_dp;initialize(total_pf);dp=0;for(i=0;i if(pl[page[i]].pfn==INVALID)/*頁(yè)面失效*/ { diseffect++;if(freepf_head==NULL)/*無(wú)空閑頁(yè)幀*/ { cont_flag=TRUE;old_dp=dp;while(cont_flag){ if(pl[dp].counter==0&&pl[dp].pfn!=INVALID) cont_flag=FALSE;//找到位于內(nèi)存且未被訪問的頁(yè)面 else { dp++; if(dp==total_vp)dp=0;//將替換指針重新指向第一個(gè)頁(yè)面 if(dp==old_dp) {/* 若內(nèi)存中所有頁(yè)面掃描完畢未找到訪問位為0的頁(yè)面,將內(nèi)存中所有頁(yè)面的訪問位置0 */ } freepf_head=&pfc[pl[dp].pfn];//騰出一個(gè)單元 } } for(j=0;j pl[j].counter=0; 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 } pl[dp].pfn=INVALID;freepf_head->next=NULL; } pl[page[i]].pfn=freepf_head->pfn;//有空閑頁(yè)面,改為有效 freepf_head=freepf_head->next;//減少一個(gè)free 頁(yè)面 else pl[page[i]].counter=1;//命中則將訪問位置1 if(i%clear_period==0)//清零周期到,將所有訪問位清零 { for(j=0;j } } } void OPT(int total_pf)/* 最佳頁(yè)面置換算法 */ { int i,j,max,maxpage,d,dist[total_vp];initialize(total_pf);for(i=0;i for(j=0;j } d=1;/* 對(duì)于位于內(nèi)存且在當(dāng)前訪問頁(yè)面之后將再次被訪問的頁(yè)面,dist重置為當(dāng)前頁(yè) 面與之后首次出現(xiàn)該頁(yè)面時(shí)兩者之間的距離 */ for(j=i+1;j dist[j]=32767;printf(“NUR:%6.4f ”,1-(float)diseffect/320); else //不在內(nèi)存的頁(yè)面該變量則置為0 dist[j]=0; 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 } } if(pl[page[j]].pfn!=INVALID && dist[page[j]]==32767) dist[page[j]]=d; d++;max=-1;//查找dist變量值最大的頁(yè)面作為換出頁(yè)面 for(j=0;j } freepf_head=&pfc[pl[maxpage].pfn];//騰出一個(gè)單元 freepf_head->next=NULL;pl[maxpage].pfn=INVALID;if(max } max=dist[j];maxpage=j; } } pl[page[i]].pfn=freepf_head->pfn;//有空閑頁(yè)面,改為有效 freepf_head=freepf_head->next;//減少一個(gè)free 頁(yè)面 printf(“OPT:%6.4f ”,1-(float)diseffect/320);} void LFU(int total_pf)/* 最少使用頁(yè)面置換算法 */ { int i,j,min,minpage;initialize(total_pf);for(i=0;i min=32767;for(j=0;j if(min>pl[j].counter&&pl[j].pfn!=INVALID){ 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 } } } min=pl[j].counter;minpage=j;pl[j].counter=0; freepf_head=&pfc[pl[minpage].pfn];//騰出一個(gè)單元 pl[minpage].pfn=INVALID;freepf_head->next=NULL; pl[page[i]].pfn=freepf_head->pfn;//有空閑頁(yè)面,改為有效 pl[page[i]].counter++;//增加頁(yè)面訪問次數(shù) freepf_head=freepf_head->next;//減少一個(gè)free 頁(yè)面 } else pl[page[i]].counter++;//命中增加頁(yè)面訪問次數(shù) } printf(“LFU:%6.4f ”,1-(float)diseffect/320);} 五、運(yùn)行結(jié)果 本實(shí)驗(yàn)的運(yùn)行結(jié)果如下圖所示(以O(shè)PT、FIFO、LRU為例): 從上述結(jié)果可知,隨著內(nèi)存頁(yè)面數(shù)的增加,三種算法的訪問命中率逐漸增大。在內(nèi)存頁(yè)面數(shù)為4~25個(gè)頁(yè)面之間時(shí),三種算法的命中率大致在56%至88%之間變化,但是,OPT算法和其他兩種算法之間的差別一般在6~12個(gè)百分點(diǎn)左右。在內(nèi)存頁(yè)面為25~32個(gè)頁(yè)面時(shí),由于用戶進(jìn)程的所有指令基本上都已裝入內(nèi)存,從而命中率增加較大,各種算法之間的差別不大。 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告 比較上述三種算法,OPT算法的命中率最高,LRU算法和FIFO算法的命中率則較為接近。 六、總結(jié) 經(jīng)過(guò)測(cè)試結(jié)果完全正常。經(jīng)過(guò)編寫和學(xué)習(xí)讓我對(duì)操作系統(tǒng)方面的知識(shí)更深一步的得到了理解和鞏固。讓我在今后的學(xué)習(xí)中可以更好的去理解和體會(huì)。 第四章 存儲(chǔ)管理習(xí)題 一、選擇題 1、存儲(chǔ)分配解決多道作業(yè)(A)的劃分問題。為了解決靜態(tài)和動(dòng)態(tài)存儲(chǔ)分配,需采用地址重定位 ,即把(B)變換成(C),靜態(tài)重定位由(D)實(shí)現(xiàn),動(dòng)態(tài)重定位由(E)實(shí)現(xiàn)。 A:① 地址空間 ② 符號(hào)名空間 ③ 主存空間 ④ 虛擬空間 B、C:① 頁(yè)面地址 ② 段地址 ③ 邏輯地址 ④ 物理地址 ⑤ 外存地址 ⑥ 設(shè)備地址 D~E:① 硬件地址變換機(jī)構(gòu) ② 執(zhí)行程序 ③ 匯編程序 ④ 連接裝入程序 ⑤ 調(diào)試程序 ⑥ 編譯程序 ⑦ 解釋程序 2、提高主存利用率主要是通過(guò)(A)功能實(shí)現(xiàn)的。(A)的基本任務(wù)是為每道程序做(B);使每道程序能在不受干擾的環(huán)境下運(yùn)行,主要是通過(guò)(C)功能實(shí)現(xiàn)的。 A、C:① 主存分配 ② 主存保護(hù) ③ 地址映射 ④ 主存擴(kuò)充 B:① 邏輯地址到物理地址的變換; ② 內(nèi)存與外存間的交換; ③ 允許用戶程序的地址空間大于內(nèi)存空間; ④ 分配內(nèi)存 3、由固定分區(qū)方式發(fā)展為分頁(yè)存儲(chǔ)管理方式的主要推動(dòng)力是(A);由分頁(yè)系統(tǒng)發(fā)展為分段系統(tǒng),進(jìn)而以發(fā)展為段頁(yè)式系統(tǒng)的主要?jiǎng)恿Ψ謩e是(B)。A~B:① 提高主存的利用率; ② 提高系統(tǒng)的吞吐量; ③ 滿足用戶需要; ④ 更好地滿足多道程序運(yùn)行的需要; ⑤ 既滿足用戶要求,又提高主存利用率。 4、靜態(tài)重定位是在作業(yè)的(A)中進(jìn)行的,動(dòng)態(tài)重定位是在作業(yè)的(B)中進(jìn)行的。 A、B:① 編譯過(guò)程; ② 裝入過(guò)程; ③ 修改過(guò)程; ④ 執(zhí)行過(guò)程 8、對(duì)外存對(duì)換區(qū)的管理應(yīng)以(A)為主要目標(biāo),對(duì)外存文件區(qū)的管理應(yīng)以(B)為主要目標(biāo)。 A、B:① 提高系統(tǒng)吞吐量; ② 提高存儲(chǔ)空間的利用率;③ 降低存儲(chǔ)費(fèi)用; ④ 提高換入換出速度。9、從下列關(guān)于虛擬存儲(chǔ)器的論述中,選出一條正確的論述。 ① 要求作業(yè)運(yùn)行前,必須全部裝入內(nèi)存,且在運(yùn)行中必須常駐內(nèi)存; ② 要求作業(yè)運(yùn)行前,不必全部裝入內(nèi)存,且在運(yùn)行中不必常駐內(nèi)存; ③ 要求作業(yè)運(yùn)行前,不必全部裝入內(nèi)存,但在運(yùn)行中必須常駐內(nèi)存; ④ 要求作業(yè)運(yùn)行前,必須全部裝入內(nèi)存,且在運(yùn)行中不必常駐內(nèi)存; 13、在請(qǐng)求分頁(yè)系統(tǒng)中有著多種置換算法:⑴ 選擇最先進(jìn)入內(nèi)存的頁(yè)面予以淘汰的算法稱為(A);⑵ 選擇在以后不再使用的頁(yè)面予以淘汰的算法稱為(B);⑶ 選擇自上次訪問以來(lái)所經(jīng)歷時(shí)間最長(zhǎng)的頁(yè)面予淘汰的算法稱為(C); A~D:① FIFO算法; ② OPT算法; ③ LRU算法; ④ NRN算法; ⑤ LFU算法。 14、靜態(tài)鏈接是在(A)到某段程序時(shí)進(jìn)行的,動(dòng)態(tài)鏈接是在(B)到某段程序時(shí)進(jìn)行的。 A、B:① 編譯; ② 裝入; ③ 調(diào)用; ④ 緊湊。 15、一個(gè)計(jì)算機(jī)系統(tǒng)的虛擬存儲(chǔ)器的最大容量是由(A)確定的,其實(shí)際容量是由(B)確定的。 A、B:① 計(jì)算機(jī)字長(zhǎng); ② 內(nèi)存容量; ③ 硬盤容量;④ 內(nèi)存和硬盤容量之和; ⑤ 計(jì)算機(jī)的地址結(jié)構(gòu)。18、以動(dòng)態(tài)分區(qū)式內(nèi)存管理中,傾向于優(yōu)先使用低址部分空閑區(qū)的算法是(A);能使內(nèi)存空間中空閑區(qū)分布較均勻的算法是(B);每次分配時(shí)把既能滿足要求,又是最小的空閑區(qū)分配給進(jìn)程的算法是(C)。 A~C:① 最佳適應(yīng)法; ② 最壞適應(yīng)法; ③ 首次適應(yīng)法; ④ 循環(huán)適應(yīng)法。 19、某虛擬存儲(chǔ)器的用戶編程空間共32個(gè)頁(yè)面,每頁(yè)1KB,主存為16KB。假定某時(shí)刻該用戶頁(yè)表中已調(diào)入主存的頁(yè)面的虛頁(yè)號(hào)和物理頁(yè)號(hào)對(duì)照表如下: 虛頁(yè)號(hào)物理頁(yè)號(hào) 05 110 24 37 則下面與虛地址相對(duì)應(yīng)的物理地址為(若主存中找不到,即為頁(yè)失效) 虛地址 物理地址 0A5C(H) (A) 1A5C(H) (B) 這里,(H)表示十六進(jìn)制。虛擬存儲(chǔ)器的功能由(C)完成。 A、B: ① 頁(yè)失效; ② 1E5C(H); ③ 2A5C(H); ④ 165C(H); ⑤ 125C(H); ⑥ 1A5C(H)。 C: ① 硬件; ② 軟件; ③ 軟硬件結(jié)合。 二、填空題 1、使每道程序能在內(nèi)存中“各得其所”是通過(guò)_內(nèi)存分配_功能實(shí)現(xiàn)的;保證每道程序在不受干擾的環(huán)境下運(yùn)行,是通過(guò)內(nèi)存保護(hù)_功能實(shí)現(xiàn)的;為緩和內(nèi)存緊張的情況而將內(nèi)存中暫時(shí)不能運(yùn)行的進(jìn)程調(diào)至外存,這是通過(guò)_對(duì)換_功能實(shí)現(xiàn)的;能讓較大的用戶程序在較小的內(nèi)存空間中運(yùn)行,是通過(guò)_內(nèi)存擴(kuò)充_功能實(shí)現(xiàn)的。 3、在連續(xù)分配方式中可通過(guò)_緊湊_來(lái)減少內(nèi)存零頭,但此時(shí)必須將有關(guān)程序和數(shù)據(jù)進(jìn)行_重定位_;而_動(dòng)態(tài)重定位_是一種允許作業(yè)在運(yùn)行中、在內(nèi)存中進(jìn)行移動(dòng)的技術(shù)。 4、分段保護(hù)中的越界檢查是通過(guò)_段表寄存器_中存放的_段表長(zhǎng)度_和段表中的_段長(zhǎng)_實(shí)現(xiàn)。 8、在分頁(yè)系統(tǒng)中若頁(yè)面較小,雖有利于_提高內(nèi)存利用率_,但會(huì)引起_頁(yè)表太長(zhǎng)_;而頁(yè)面較大,雖有利于_頁(yè)表長(zhǎng)度_,但會(huì)引起_頁(yè)內(nèi)碎片增大_。 9、在分頁(yè)系統(tǒng)中的地址結(jié)構(gòu)可分為_頁(yè)號(hào)_和_頁(yè)內(nèi)偏移量_兩部分;在分段系統(tǒng)中的地址結(jié)構(gòu)可分為_段號(hào)_和_段內(nèi)偏移量_兩部分。 10、在分頁(yè)系統(tǒng)中,必須設(shè)置頁(yè)表,其主要作用是實(shí)現(xiàn)_頁(yè)號(hào)_到_物理塊號(hào)_的映射。 11、在分頁(yè)系統(tǒng)中進(jìn)行地址變換時(shí),應(yīng)將頁(yè)表寄存器中的_頁(yè)表起始地址_和_頁(yè)號(hào)_進(jìn)行相加,得到該頁(yè)的頁(yè)表項(xiàng)位置,從中可得到_物理塊號(hào)_。 12、在兩級(jí)頁(yè)表結(jié)構(gòu)中,第一級(jí)是_頁(yè)表目錄_,其中每一項(xiàng)用于存放相應(yīng)的_頁(yè)表首址_。 13、在分頁(yè)系統(tǒng)中為實(shí)現(xiàn)地址變換而設(shè)置了頁(yè)表寄存器,其中存放了 _頁(yè)表起始地址_和_頁(yè)表長(zhǎng)度_。 15、在頁(yè)表中最基本的數(shù)據(jù)項(xiàng)是_物理塊號(hào)_;在段表中最基本的數(shù)據(jù)項(xiàng)是_段的內(nèi)存起始地址_和_段長(zhǎng)_。 20、在作業(yè)_裝入_時(shí)進(jìn)行的鏈接稱為靜態(tài)鏈接;在作業(yè)運(yùn)行中_調(diào)用_時(shí)進(jìn)行的鏈接稱為動(dòng)態(tài)鏈接。 22、為實(shí)現(xiàn)存儲(chǔ)器的虛擬,除了需要有一定容量的內(nèi)存和相當(dāng)容量的外存外,還需有_地址變換機(jī)構(gòu)_和_缺頁(yè)中斷機(jī)構(gòu)_的硬件支持。 25、在請(qǐng)求分頁(yè)系統(tǒng)中的調(diào)頁(yè)策略有_預(yù)調(diào)頁(yè)策略_,它是以預(yù)測(cè)為基礎(chǔ);另一種是_請(qǐng)求調(diào)頁(yè)策略_,由于較易實(shí)現(xiàn),故目前用得較多。 三、問答題 1、存儲(chǔ)管理的 主要功能是什么? 2、解釋下列與存儲(chǔ)管理有關(guān)的名詞:地址空間與存儲(chǔ)空間;邏輯地址與物理地址;虛地址與實(shí)地址;地址再定位;虛擬存儲(chǔ)器。 3、什么是請(qǐng)求頁(yè)式管理?能滿足用戶那些需要? 4、請(qǐng)求頁(yè)式管理中有哪幾種常用的頁(yè)面淘汰算法?試比較它們的優(yōu)缺點(diǎn)。 5、什么是虛擬存儲(chǔ)器,其特點(diǎn)是什么?為什么從邏輯上說(shuō)采用虛擬存儲(chǔ)器能擴(kuò)大內(nèi)存存儲(chǔ)空間? 6、簡(jiǎn)述什么是內(nèi)存的覆蓋和交換技術(shù)??jī)烧哂惺裁磪^(qū)別? 7、你認(rèn)為內(nèi)存管理和外存管理有哪些異同點(diǎn)? 8、用哪些方式將程序裝入內(nèi)存?它們分別適用于什么場(chǎng)合? 9、在進(jìn)行程序鏈接時(shí),應(yīng)完成哪些工作? 11、為什么要引入動(dòng)態(tài)重定位?如何實(shí)現(xiàn)? 12、分頁(yè)式和分段式內(nèi)存管理有什么區(qū)別?怎樣才能實(shí)現(xiàn)共享和保護(hù)? 13、在系統(tǒng)中引入對(duì)換后帶有哪些好處 ? 14、對(duì)于如下的頁(yè)面訪問序列:,2,3,4,1,2,5,1,2,3,4,5 當(dāng)內(nèi)存塊數(shù)量分別為 3 和 4 時(shí),試問:使用 FIFO、LRU 置換算法產(chǎn)生的缺頁(yè)中斷是多少?(所有內(nèi)存開始時(shí)都是空的,凡第一次用到的頁(yè)面都產(chǎn)生一次缺頁(yè)中斷) 15、某虛擬存儲(chǔ)器的用戶編程空間共 321KB,內(nèi)存為16KB。假定某時(shí)刻一用戶頁(yè)表中已調(diào)入內(nèi)存的頁(yè)面的頁(yè)號(hào)和物理塊號(hào)的對(duì)照表如下: 頁(yè)號(hào) 物理塊號(hào)5 10 4 7 則邏輯地址 0A5C(H)所對(duì)應(yīng)的物理地址是什么? 16、某段表內(nèi)容如下: 段號(hào) 段首地址 段長(zhǎng)度 0 120K 40K 760K 30K 480K 20K 370K 20K 一邏輯地址為(2,154)的實(shí)際物理地址為多少? 答 案 一、選擇題 1、A:③ B:③ C:④ D:④ E:① 2、A:① B:④ C:② 3、A:① B:⑤ 4、A:② B:④ 5、A:① B:③ C:④ 6、A:③ B:④ C:① 7、A:① B:② C:④ D:① 8、A:④ B:② 9、④ 10、A:③ B:④ C:② D:⑤ 11、A:③ B:④ 12、A:② B:③ C:④ 13、A:① B:② C:③ 14、A:② B:③ 15、A:⑤ B:④ 16、② ⑥ 17、A:② B:⑤ C:③ 18、A:③ B:④ C:① 19、A:⑤ B:① C:③ 二、填空題 1、內(nèi)存分配、內(nèi)存保護(hù)、對(duì)換、內(nèi)存擴(kuò)充。 2、地址遞增、空閑區(qū)大小遞增。 3、緊湊、重定位、動(dòng)態(tài)重定位。 4、段表寄存器、段表長(zhǎng)度、段長(zhǎng)。 6、阻塞、優(yōu)先級(jí)最低、就緒且換出、在外存中駐留最久。 7、進(jìn)程、頁(yè)面、分段。 8、提高內(nèi)存利用率、頁(yè)表太長(zhǎng)、頁(yè)表長(zhǎng)度、頁(yè)內(nèi)碎片增大。 9、頁(yè)號(hào)、頁(yè)內(nèi)偏移量、段號(hào)、段內(nèi)偏移量。 10、頁(yè)號(hào)、物理塊號(hào)。 11、頁(yè)表始址、頁(yè)號(hào)、物理塊號(hào)。 12、頁(yè)表目錄、頁(yè)表首址。 13、頁(yè)表始址、頁(yè)表長(zhǎng)度。 15、物理塊號(hào)、段的內(nèi)存始址、段長(zhǎng)。 16、物理、系統(tǒng)管理、邏輯、用戶。 20、裝入、調(diào)用 21、多次性、對(duì)換性、請(qǐng)求調(diào)頁(yè)(段)和頁(yè)(段)置換。 22、地址變換機(jī)構(gòu)、缺頁(yè)中斷機(jī)構(gòu)。 25、預(yù)調(diào)頁(yè)策略、請(qǐng)求調(diào)頁(yè)策略。 問答題 1.答: ⑴、內(nèi)存區(qū)域的分配和管理:通過(guò)建表、查表、改表和回收登錄內(nèi)存使用情況,系統(tǒng)或用戶申請(qǐng)內(nèi)存時(shí)按選定的分配算法確定分區(qū)等,保證分配和回收; ⑵、內(nèi)存的擴(kuò)充技術(shù):使用虛擬存儲(chǔ)或自動(dòng)覆蓋技術(shù)提供比實(shí)際內(nèi)存更大的空間; ⑶、內(nèi)存的保護(hù)技術(shù):各道作業(yè)、任務(wù)或進(jìn)程在自己所屬區(qū)域中運(yùn)行,不破壞別的作業(yè)或不被“別人”破壞,更不要破壞整個(gè)系統(tǒng)工作。 2、⑴、目標(biāo)程序所在的空間稱為地址空間,即程序員用來(lái)訪問信息所用的一系列地址單元的集合。由內(nèi)存中一系列存儲(chǔ)單元所限定的地址范圍稱為內(nèi)存空間或存儲(chǔ)空間。 ⑵、:用戶程序經(jīng)編譯之后的每個(gè)目標(biāo)模塊都是以0為基地址順序編址,這種地址叫相對(duì)地址或邏輯地址。內(nèi)存中各物理存儲(chǔ)單元的地址是從統(tǒng)一的基地址順序編址,它是數(shù)據(jù)在內(nèi)存中的實(shí)際存儲(chǔ)地址,這種地址叫絕對(duì)地址或物理地址。 ⑶、:虛地址即用戶程序地址,實(shí)地址即內(nèi)存中實(shí)際存儲(chǔ)地址。 ⑷、重定位是把邏輯地址轉(zhuǎn)變?yōu)閮?nèi)存的物理地址的過(guò)程。根據(jù)重定位時(shí)機(jī)的不同,又分為靜態(tài)重定位(裝入內(nèi)存時(shí)重定位)和動(dòng)態(tài)重定位(程序執(zhí)行時(shí)重定位)。 ⑸、虛擬存儲(chǔ)器是一種存儲(chǔ)管理技術(shù),用以完成用小的內(nèi)存實(shí)現(xiàn)在大的虛空間中程序的運(yùn)行工作。它是由操作系統(tǒng)提供的一個(gè)假想的特大存儲(chǔ)器。但是虛擬存儲(chǔ)器的容量并不是無(wú)限的,它由計(jì)算機(jī)的地址結(jié)構(gòu)長(zhǎng)度所確定,另外虛存容量的擴(kuò)大是以犧牲CPU工作時(shí)間以及內(nèi)、外存交換時(shí)間為代價(jià)的。 3.答:把內(nèi)存和用戶邏輯地址空間都分成同樣大小的塊分別稱為實(shí)頁(yè)和虛頁(yè),利用頁(yè)表建立起虛頁(yè)和實(shí)頁(yè)的聯(lián)系,通過(guò)地址變換將虛頁(yè)的邏輯地址轉(zhuǎn)換成實(shí)頁(yè)的物理地址。頁(yè)式系統(tǒng)的邏輯地址分為頁(yè)號(hào)和頁(yè)內(nèi)位移量。頁(yè)表包括頁(yè)號(hào)和塊號(hào)數(shù)據(jù)項(xiàng),它們一一對(duì)應(yīng)。根據(jù)邏輯空間的頁(yè)號(hào),查找頁(yè)表對(duì)應(yīng)項(xiàng)找到對(duì)應(yīng)的塊號(hào),塊號(hào)乘以塊長(zhǎng),加上位移量就形成存儲(chǔ)空間的物理地址。每個(gè)作業(yè)的邏輯地址空間是連續(xù)的,重定位到內(nèi)存空間后就不一定連續(xù)了。 此外,頁(yè)表中還包括特征位(指示該頁(yè)面是否在內(nèi)存中)、外存地址、修改位(該頁(yè)的內(nèi)容在內(nèi)存中是否修改過(guò))等。 頁(yè)式存儲(chǔ)管理在動(dòng)態(tài)地址轉(zhuǎn)換過(guò)程中需要確定某一頁(yè)是否已經(jīng)調(diào)入主存。若調(diào)入主存,則可直接將虛地址轉(zhuǎn)換為實(shí)地址,如果該頁(yè)未調(diào)入主存,則產(chǎn)生缺頁(yè)中斷,以裝入所需的頁(yè)。 能滿足用戶擴(kuò)大內(nèi)存的需求,動(dòng)態(tài)頁(yè)式管理提供了內(nèi)存與外存統(tǒng)一管理的虛存實(shí)現(xiàn)方式;內(nèi)存利用率高;不要求作業(yè)連續(xù)存放,有效解決“碎片問題”。 4.答:有 4種常用的頁(yè)面淘汰算法: ⑴、先進(jìn)先出法(FIFO):先進(jìn)入內(nèi)存的頁(yè)先被換出內(nèi)存。它設(shè)計(jì)簡(jiǎn)單,實(shí)現(xiàn)容易,但遇到常用的頁(yè)效率低。 ⑵、最近最少使用頁(yè)面先淘汰(LRU):離當(dāng)前時(shí)間最近一段時(shí)間內(nèi)最久沒有使用過(guò)的頁(yè)面先淘汰。這種算法其實(shí)是照顧循環(huán)多的程序,其它則不能提高效率,且實(shí)現(xiàn)時(shí)不太容易。 ⑶、最近沒有使用頁(yè)面先淘汰(NUR):是LRU的一種簡(jiǎn)化算法,“0”“1”分別表示某頁(yè)沒被訪問或被訪問。它較易于實(shí)現(xiàn),開銷也較少。 ⑷、最優(yōu)淘汰算法(OPT):系統(tǒng)預(yù)測(cè)作業(yè)今后要訪問的頁(yè)面,淘汰頁(yè)是將來(lái)不被訪問的頁(yè)面或者在最長(zhǎng)時(shí)間后才被訪問的頁(yè)面。它保證有最少的缺頁(yè)率,但它實(shí)現(xiàn)困難,只能通過(guò)理論分析用來(lái)衡量其它算法的優(yōu)劣。 5.答:虛擬存儲(chǔ)器是由操作系統(tǒng)提供的一個(gè)假想的特大存儲(chǔ)器,是操作系統(tǒng)采用內(nèi)外存的交換技術(shù)邏輯上提供對(duì)物理內(nèi)存的擴(kuò)充。采用虛擬存儲(chǔ)器技術(shù)時(shí),操作系統(tǒng)根據(jù)程序執(zhí)行的情況,隨機(jī)對(duì)每個(gè)程序進(jìn)行換入、換出,用戶卻沒有察覺,得到了一個(gè)比真實(shí)內(nèi)存空間大得多的地址空間。所以從邏輯上說(shuō)采用虛擬存儲(chǔ)器能擴(kuò)大內(nèi)存存儲(chǔ)空間。 6.答:在多道系統(tǒng)中,對(duì)換是指系統(tǒng)把內(nèi)存中暫時(shí)不能運(yùn)行的某部分作業(yè)寫入外存交換區(qū),騰出空間,把外存交換區(qū)中具備運(yùn)行條件的指定作業(yè)調(diào)入內(nèi)存。對(duì)換是以時(shí)間來(lái)?yè)Q取空間,減少對(duì)換的信息量和時(shí)間是設(shè)計(jì)時(shí)要考慮的問題。 由于CPU在某一時(shí)刻只能執(zhí)行一條指令,所以一個(gè)作業(yè)不需要一開始就全裝入內(nèi)存,于是將作業(yè)的常駐部分裝入內(nèi)存,而讓那些不會(huì)同時(shí)執(zhí)行的部分共享同一塊內(nèi)存區(qū),后調(diào)入共享區(qū)的內(nèi)容覆蓋前面調(diào)入的內(nèi)容,這就是內(nèi)存的覆蓋技術(shù)。 兩者的區(qū)別主要有:交換技術(shù)由操作系統(tǒng)自動(dòng)完成,不需要用戶參與,而覆蓋技術(shù)需要專業(yè)的程序員給出作業(yè)各部分之間的覆蓋結(jié)構(gòu),并清楚系統(tǒng)的存儲(chǔ)結(jié)構(gòu);交換技術(shù)主要在不同作業(yè)之間進(jìn)行,而覆蓋技術(shù)主要在同一個(gè)作業(yè)內(nèi)進(jìn)行;另外覆蓋技術(shù)主要在早期的操作系統(tǒng)中采用,而交換技術(shù)在現(xiàn)代操作系統(tǒng)中仍具有較強(qiáng)的生命力。 7.答:相同點(diǎn):它們都要提供給用戶方便的方法來(lái)進(jìn)行分配和管理存儲(chǔ)空間,都有自己的分配算法。它們都要考慮保護(hù)問題,使作業(yè)或文件不被破壞。 不同點(diǎn):內(nèi)存管理還要使用擴(kuò)充技術(shù)以增大虛擬空間。外存管理提供給用戶鍵盤命令及系統(tǒng)調(diào)用的控制操作。 8.答:區(qū)式:為支持多道程序運(yùn)行而設(shè)計(jì)的一種最簡(jiǎn)單的存儲(chǔ)管理方式。早期操作系統(tǒng)的存儲(chǔ)管理中使用較普遍。 頁(yè)式:利用劃分大小相等的虛頁(yè)和實(shí)頁(yè)存儲(chǔ)。它允許程序的存儲(chǔ)空間是不連續(xù)的,提高了內(nèi)存的利用率。 段式:擁護(hù)程序被劃分成有邏輯意義的段。它便于段的共享及新數(shù)據(jù)的增長(zhǎng)。 9.答:應(yīng)進(jìn)行各邏輯段的合并及地址重定位,及將邏輯地址轉(zhuǎn)變?yōu)槲锢淼刂贰?/p> 最近最久未使用算法 LRU: 選擇內(nèi)存中最久未使用的頁(yè)面被置換。這是局部性原理的合理近似,性能接近最佳算法。該算法必須對(duì)每個(gè)頁(yè)面都設(shè)置有關(guān)的訪問記錄項(xiàng),而且每次訪問都必須更新這些記錄。 最不經(jīng)常使用算法 LFU :選擇到當(dāng)前時(shí)間為止被訪問次數(shù)最少的頁(yè)面被置換。這只要在頁(yè)表中給每一頁(yè)增設(shè)一個(gè)訪問計(jì)數(shù)器即可實(shí)現(xiàn),當(dāng)該頁(yè)被訪問時(shí),計(jì)數(shù)器加,當(dāng)發(fā)生一次缺頁(yè)中斷時(shí),則淘汰計(jì)數(shù)值最小的那一頁(yè),并將所有的計(jì)數(shù)器清零。 最近沒有使用頁(yè)面置換算法 NUR :從那些最近一個(gè)時(shí)期內(nèi)未被訪問的頁(yè)中任選一頁(yè)淘汰。在頁(yè)表中增設(shè)一個(gè)訪問位來(lái)實(shí)現(xiàn),當(dāng)某頁(yè)被訪問時(shí),訪問位置 1,否則置 0。系統(tǒng)周期性地對(duì)引用位清零。當(dāng)需淘汰一頁(yè)時(shí),從那些訪問位為零的頁(yè)中任選一頁(yè)淘汰。 11、答:靜態(tài)重定位是在鏈接裝入時(shí)一次集中完成的地址轉(zhuǎn)換,但它要求連續(xù)的一片區(qū)域,且重定位后不能移動(dòng),不利于內(nèi)存空間的有效使用。所以要引入動(dòng)態(tài)重定位,它是靠硬件地址變換部分實(shí)現(xiàn)的。通常采用重定位寄存器等實(shí)現(xiàn)。 12.答:分頁(yè)式是將線性地址空間直接分成大小相同的頁(yè)進(jìn)行存儲(chǔ),段式則是根據(jù)用戶有邏輯意義的程序模塊劃分地址空間。頁(yè)的共享是使相關(guān)進(jìn)程的邏輯空間中的頁(yè)指向相同的內(nèi)存塊,若頁(yè)中既有共享的部分又有不共享的部分則不好實(shí)現(xiàn)。頁(yè)面保護(hù)必須設(shè)置存儲(chǔ)保護(hù)鍵指明對(duì)其內(nèi)容的存取權(quán)限。實(shí)現(xiàn)頁(yè)(段)的共享是指某些作業(yè)的邏輯頁(yè)號(hào)(段號(hào))對(duì)應(yīng)同一物理頁(yè)號(hào)(內(nèi)存中該段的起始地址)。頁(yè)(段)的保護(hù)往往需要對(duì)共享的頁(yè)面(段)加上某種訪問權(quán)限的限制,如不能修改等;或設(shè)置地址越界檢查,對(duì)于頁(yè)內(nèi)地址(段內(nèi)地址)大于頁(yè)長(zhǎng)(段長(zhǎng))的存取,產(chǎn)生保護(hù)中斷。因?yàn)轫?yè)的劃分沒有邏輯意義,故共享和保護(hù)不便實(shí)現(xiàn)。段的共享一般是硬件實(shí)現(xiàn),要比頁(yè) 的共享容易的多。段的保護(hù)可由存儲(chǔ)保護(hù)鍵和界限寄存器實(shí)現(xiàn)。 13、能將內(nèi)存中暫時(shí)不運(yùn)行的進(jìn)程或暫時(shí)不用的程序和數(shù)據(jù),換到外存上,以騰出足夠的內(nèi)存空間,把已具備運(yùn)行條件的進(jìn)程或進(jìn)程所需的程序和數(shù)據(jù)換入內(nèi)存,從而大大地提高了內(nèi)存的利用率.FIFO 淘汰算法: 內(nèi)存塊為 3 時(shí),缺頁(yè)中斷(或稱缺頁(yè)次數(shù)、頁(yè)面故障)為 9 ;內(nèi)存塊為 4 時(shí),缺頁(yè)中斷為 10 。(這似乎是一個(gè)奇怪的現(xiàn)象,同時(shí)也告訴我們,操作系統(tǒng)是一個(gè)復(fù)雜的機(jī)構(gòu),直觀是靠不住的?。?/p> LRU 淘汰算法: 內(nèi)存塊為 3 時(shí),缺頁(yè)中斷為 10 ;內(nèi)存塊為 4 時(shí),缺頁(yè)中斷為 8。 答:邏輯地址 0A5CH)所對(duì)應(yīng)的二進(jìn)制表示形式是:0000 10 10 0101 1100,由于1K=2 10,下劃線部分前的編碼為000010,表示該邏輯地址對(duì)應(yīng)的頁(yè)號(hào)為3查頁(yè)表,得到物理塊號(hào)是4(十進(jìn)制),即物理塊地址為:0001 00 10 0000 0000,拼接塊內(nèi)地址0000 00 00 0101 1100,得0001 00 10 0101 1100,即125C(H)。 答:邏輯地址(2154)表示段號(hào)為2,即段首地址為480K,154為單元號(hào),則實(shí)際物理地址為480K+154。 鋼材的存儲(chǔ)管理 建筑材料的種類包括:鋼材、水泥、砂、石、木材、瀝青、合成樹脂、塑料等 下面我主要介紹的是鋼材的存儲(chǔ)管理: 1、鋼材進(jìn)場(chǎng)時(shí),必須進(jìn)行資料驗(yàn)收、數(shù)量驗(yàn)收和質(zhì)量驗(yàn)收。 2、資料驗(yàn)收:鋼材進(jìn)場(chǎng)時(shí),必須附有蓋鋼廠鮮章或經(jīng)銷商鮮章的包括爐號(hào)、化學(xué)成分、力學(xué)性能等指標(biāo)的質(zhì)量證明書,同采購(gòu)計(jì)劃、標(biāo)牌、發(fā)票、過(guò)磅單等核對(duì)相符。 3、數(shù)量驗(yàn)收必須兩人參與,通過(guò)過(guò)磅、點(diǎn)件、檢尺換算等方式進(jìn)行,目前盤條常用的是過(guò)磅方式,直條、型鋼、鋼管則采用點(diǎn)件、檢尺換算方式居多;檢尺方式主要便于操作,但從合理性來(lái)講,只適用于國(guó)標(biāo)材,不適用于非標(biāo)材,有條件應(yīng)全部采用過(guò)磅方式,但過(guò)磅驗(yàn)收必須與標(biāo)牌重量及檢尺重量核對(duì),一般不超過(guò)標(biāo)牌重量或檢尺計(jì)重,因此采購(gòu)議價(jià)時(shí)應(yīng)明確過(guò)磅價(jià)或檢尺價(jià)。驗(yàn)收后填制《材料進(jìn)場(chǎng)計(jì)量檢測(cè)原始記錄表》。 4、質(zhì)量驗(yàn)收:先通過(guò)眼看手摸和簡(jiǎn)單工具檢查鋼材表面是否有缺陷,規(guī)格尺寸是否相符、銹蝕情況是否嚴(yán)重等,然后通知質(zhì)檢(試驗(yàn))人員按規(guī)定抽樣送檢,檢驗(yàn)結(jié)果與國(guó)家標(biāo)準(zhǔn)對(duì)照判定其質(zhì)量是否合格。 5、進(jìn)入現(xiàn)場(chǎng)的鋼材應(yīng)入庫(kù)入棚保管,尤其是優(yōu)質(zhì)鋼材、小規(guī)格鋼材、鍍鋅管、板及電線管等;若條件所限,只能露天存放時(shí),應(yīng)做好上蓋下墊,保持場(chǎng)地干燥。 6、入場(chǎng)鋼材應(yīng)按品種、規(guī)格、材質(zhì)分別堆放,尤其是外觀尺寸相同而材質(zhì)不同的材料,如Ⅱ、Ⅲ螺紋鋼筋,優(yōu)質(zhì)鋼材等,并掛牌標(biāo)識(shí)。 7、鋼材收料后要及時(shí)填制收料單,同時(shí)作好材質(zhì)書臺(tái)帳登記,發(fā)料時(shí)應(yīng)在領(lǐng)料單備注欄內(nèi)注明批號(hào)和使用部位。 以上就是我對(duì)鋼材存儲(chǔ)管理的全部了解。。 RHCA-1 企業(yè)存儲(chǔ)管理 本文檔由東方瑞通提供 課程介紹: RHCA是Red Hat認(rèn)證架構(gòu)師的簡(jiǎn)稱,是紅帽推出的最頂級(jí)認(rèn)證,毋庸置疑,RHCA證書是目前業(yè)界最難獲取,也是最具含金量的認(rèn)證,各大企業(yè)都在求賢若渴,RHCA培訓(xùn)課程能滿足企業(yè)對(duì)系統(tǒng)部署和管理的苛刻要求,目前在全球通過(guò)的人數(shù)150人左右,國(guó)內(nèi)通過(guò)人數(shù)不到30人,獲得該認(rèn)證,意味著您已邁入高薪行列并獲得尊重。RHCA課程主要面向那些負(fù)責(zé)部署和管理大型企業(yè)環(huán)境中眾多系統(tǒng)的高級(jí)Linux系統(tǒng)管理員提供深入的實(shí)際操作培訓(xùn)。 獲得RHCA的證書需要先參加RHCA五門課程的學(xué)習(xí):RH401,RH436,RH423,RH442,RHS333,然后參加EX401,EX436,EX423,EX442,EXS333五門考試,需要提醒大家的是,考試全部都是在實(shí)際環(huán)境中的動(dòng)手操作考試,考試全部完成后,您將成為一名擁有RHCA證書的人,在世人面前證明你的實(shí)力.適合人群: RHCA培訓(xùn)企業(yè)存儲(chǔ)管理(RH436)課程適合已經(jīng)獲得RHCE證書或達(dá)到RHCE水平的專業(yè)人士,想進(jìn)一步提升在該領(lǐng)域的技能和競(jìng)爭(zhēng)力;正在從事Linux等相關(guān)工作的系統(tǒng)集成商或Linux高級(jí)工程師、系統(tǒng)架構(gòu)師.培訓(xùn)目標(biāo): RHCA培訓(xùn)企業(yè)存儲(chǔ)管理(RH436)培訓(xùn)目標(biāo): 使用紅帽集群套件和全局文件系統(tǒng)?(GFS) 在集群計(jì)算環(huán)境中實(shí)施高可用性(故障切換)服務(wù) 如何在大型網(wǎng)絡(luò)中心布署企業(yè)級(jí)共享的文件系統(tǒng) 課程大綱: RHCA培訓(xùn)企業(yè)存儲(chǔ)管理(RH436)課程大綱: 第一章 數(shù)據(jù)管理、存儲(chǔ)及集群技術(shù) 1.1.數(shù)據(jù)存儲(chǔ)規(guī)劃 1.2.設(shè)計(jì)需考慮事項(xiàng) 1.3.集群技術(shù) 1.4.RHEL存儲(chǔ)模型 1.5.卷管理 1.6.SAN技術(shù) 1.7.光纖通道 1.8.ISCSI 1.9.NPS 1.10.ACPI 1.11.網(wǎng)絡(luò)集群節(jié)點(diǎn) 1.12.多路徑 第二章 udev 2.1.udev概覽 2.2.HAL 2.3.udev 2.4.配置udev 2.5.查找udev匹配鍵值 2.6.udev規(guī)則鍵值 2.7.udev規(guī)則替換 2.8.udev規(guī)則示例 第三章 ISCSI配置 3.1.ISCSI驅(qū)動(dòng) 3.2.ISCSI訪問控制 3.3.ISCI設(shè)備名稱和掛載 3.4.配置ISCSI目標(biāo)服務(wù)器 3.5.配置ISCSI客戶端 3.6.ISCSI驗(yàn)證配置 3.7.管理ISCSI目標(biāo)連接 第四章 高級(jí)RAID 4.1.RAID0 4.2.RAID1 4.3.RAID5 4.4.RAID5奇偶校驗(yàn)和數(shù)據(jù)分布 4.5.RAID分布算法 4.6.RAID6 4.7.RAID6奇偶校驗(yàn)和數(shù)據(jù)分布 4.8.RAID10 4.9.條帶參數(shù) 4.10./proc/mdstat 4.11./etc/mdadm.conf 4.12.增加RAID5的磁盤數(shù)量 4.13.RAID的熱備盤共享 4.14.寫位圖 4.15.RAID1的寫位圖 4.16.RAID數(shù)據(jù)檢查 第五章 設(shè)備映射和多路徑 5.1.設(shè)備映射 5.2.設(shè)備映射表 5.3.映射目標(biāo) 5.4.LVM2快照 5.5.LVM2快照示例 5.6.設(shè)備映射多路徑總攬 5.7.在光纖存儲(chǔ)上設(shè)置多路徑 5.8.多路徑和ISCSI 5.9。多路徑配置 5.10.多路徑信息查詢 第六章 紅帽集群套件總覽 6.1.高可用性 6.2.紅帽集群套件 6.3.集群的優(yōu)點(diǎn) 6.4.集群配置系統(tǒng) 6.5.紅帽集群管理 6.6.conga計(jì)劃 6.7.luci和ricci 6.8.集群資源管理 6.9.集群邏輯卷管理器(CLVM) 6.10.分布式鎖管理(DLM) 6.11.配置集群 6.12.配置集群考慮的因素 第七章集群節(jié)點(diǎn)選舉和集群管理 7.1.CMAN集群管理器 7.2.RHEL5集群架構(gòu) 7.3.集群選舉節(jié)點(diǎn) 7.4.集群法定選舉示例 7.5.兩個(gè)節(jié)點(diǎn)的集群 7.6.CCS tools 第八章隔離和故障轉(zhuǎn)移 8.1.隔離 8.2.沒有隔離時(shí)的情況 8.3.隔離代理 8.4.隔離設(shè)備 8.5.故障轉(zhuǎn)換域和服務(wù)限制 8.6.故障轉(zhuǎn)換域和優(yōu)先級(jí) 8.7.NFS集群的故障轉(zhuǎn)換域要考慮的因素 8.8.clusvcadm 第九章仲裁盤 9.1.仲裁盤 9.2.仲裁盤通訊 9.3.仲裁盤心跳和狀態(tài) 9.4.仲裁盤配置 9.5.使用仲裁盤使集群工作 9.6.兩個(gè)節(jié)點(diǎn)的仲裁盤 第十章rgmanager 10.1.資源組管理 10.2.集群資源配置 10.3.停止啟動(dòng)資源的順序 10.4.NFS集群資源示例 10.5.資源恢復(fù) 10.6.集群狀態(tài)檢查 10.7.集群SNMP代理 10.8.在各個(gè)節(jié)點(diǎn)上啟動(dòng)或停止集群 第十一章 全局文件系統(tǒng)和集群邏輯卷管理 11.1.全局文件系統(tǒng)(GFS) 11.2.GFS限制 11.3.共享和分布式文件系統(tǒng) 11.4.集群邏輯卷管理 11.5.CLVM配置 11.6.創(chuàng)建GFS 11.7.鎖管理 11.8.分布式鎖管理 11.9.掛載GFS 11.10.GFS日志 11.11.增加GFS 11.12.GFS可調(diào)參數(shù) 11.13.GFS磁盤配額 11.14.GFS的ACL訪問控制權(quán)限 11.15.CDPN第二篇:操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)介紹
第三篇:第四章 存儲(chǔ)管理習(xí)題
第四篇:鋼材的存儲(chǔ)管理
第五篇:RHCA-1 企業(yè)存儲(chǔ)管理