freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課程設計-主存空間的分配與回收-wenkub

2022-09-12 21:05:35 本頁面
 

【正文】 實驗教程.北京 :清 華大學出版社, 2020 審核批準意見 系(教研室)主任(簽字) 摘要 在內(nèi)存初始化完成以后,內(nèi)存中就常駐有內(nèi)核映象(內(nèi)核代碼和數(shù)據(jù))。 技術參數(shù): Windows XP系統(tǒng), VC++。 課程設計 題 目: 主 存 空 間 的 分 配 與 回 收 學 生 姓 名 : 學 院 : 系 別: 專 業(yè): 班 級: 指 導 教 師 : 2020 年 12 月 30 日 學校代碼: 學 號: 202020205003 內(nèi)蒙古工業(yè)大學課程設計任務書 ( 三 ) 學院 ( 系 ): 信息學院 計算機系 課程名稱: 操作系統(tǒng)課程設計 指導教師(簽名): 專業(yè)班級: 軟件工程 09- 02班 學生姓名: 學號: 一、課程設計題目 主存空間的分配與回收 二、課程設計的目的 通過該課程設計使學生理解在不同的存儲 管理方式下,如何實現(xiàn)主存空間的分配與回收。 設計要求: 1. 設計基于空閑區(qū)說明表的可變分區(qū)分配與回收算法; 2. 或設計基于空閑區(qū)鏈表的可變分區(qū)分配與回收算法; 3. 畫出以上算法流程圖; 4. 編程實現(xiàn)算法功能; 5.編寫課程設計說明書。以后,隨著用戶程序的執(zhí)行和結(jié)束,就需要不斷地分配和釋放物理頁面。由此帶來的問題是,即使這些小塊的空閑頁面加起來足以滿足所請求的頁面, 但是要分配一個大塊的連續(xù)頁面可能就根本無法滿足。一個好的 分配器應該能夠快速地滿足各種大小的分配要求,同時不能產(chǎn)生大量的碎片浪費空間。 課程設計內(nèi)容 編程序?qū)崿F(xiàn)下述 在不同的存儲管理方式下 的主存空間的分配與回收,其中 原始數(shù)據(jù)設為 空閑區(qū)說明表 結(jié)構(gòu)體 (1).設計基于空閑區(qū)說明表的可變分區(qū)分配與回收算法; (2).或設計基于空閑區(qū)鏈表的可變分區(qū)的分配與回收; 內(nèi)蒙古工業(yè)大學 課設 2 第二章 需求分析 硬件需求 本系統(tǒng)適用于現(xiàn)用的各種類型的計算機,內(nèi)存容量建議為 128MB 以上,不必配備外部附加設備 軟件需求 VC++ 開發(fā)工具 設計需求 內(nèi)存的分配與回收是內(nèi)存管理的主要功能之一。但由于作業(yè)大大小不一,所以系統(tǒng)為作業(yè)分配內(nèi)存大小不一,在釋放時造成系統(tǒng)資源的浪費。有的分區(qū)被作業(yè)占用,有的分區(qū)空閑。 31 主存空間占用情況 表 31 空閑區(qū)說明表 其中,起始地址指出各空閑區(qū)的主存起始地址,長度指出空閑區(qū)大小。否則造成溢出,無法登記。一個分給作業(yè);另一個仍作為空閑區(qū)留在空閑區(qū)表中。 (3) 當一個作業(yè)執(zhí)行完成時,作業(yè)所占用的分區(qū)應歸還給系統(tǒng)。 /*空閑區(qū)的起始地址號 */ int size。 /*分配作業(yè)的首地址 */ int sizes。 while(c) { system(cls)。b)。order1()。a)。 if(start==1) { system(cls)。 show()。 printf(\n \1 系統(tǒng)采用最佳適應算法正在為作業(yè)分配內(nèi)存中?? \n\n)。 order()。 break。setfree()。iN。 Sleep(1*1000)。 Sleep(1*1000)。 t=getchar()。 printf(\n \1 按回車鍵返回主菜單 ~\n\n)。 case 0: if(b==0) c=0。 Sleep(2*1000)。然后該算法從所找到分區(qū)中畫出所要求的內(nèi)存長度分配給用戶,把余下的部分進行合并(如果有相鄰空閑區(qū)存在)后留在可用表中,但要修改其相應的表項。iN。返回分配給作業(yè)的主存始址。 fullblock[j].sizes=a。 } else if (freeblock[i].state==1amp。 fullblock[j].sizes=a。} if(tag==0) return 1。解決這個辦法之一就是在空閑區(qū)回收時,把不連續(xù)的空閑區(qū)集中起來。 D.釋 放區(qū)與空閑區(qū)不鄰接:將三個空閑區(qū)合并為一個空閑區(qū),新空閑區(qū)的首地址為上空閑區(qū)的首地址,大小為三個空閑區(qū)之和。 /*tagl 代表釋放區(qū)的高地址是否鄰接一個空閑區(qū) ,tag2 代表釋放區(qū)的高低地址是否都鄰接一個空閑區(qū) ,tag3 代表釋放區(qū)的低地址是否鄰接一個空閑區(qū) */ printf(\n\n 請輸入需要釋作業(yè)的首地址 :)。 scanf( %d,amp。k++) { if(fullblock[k].address==s) { if(fullblock[k].sizes==l) { fullblock[k].address=0。 break。 } } for(i=0。freeblock[i].state==1) { for(j=i+1。 freeblock[j].state==1) { freeblock[i].size=freeblock[i].size+l+freeblock[j].size。 freeblock[i].state=1。j++) { if(freeblock[j].startaddress==s+lamp。 return。 return。但是由于對 JAVA 的使用不夠熟練,所以我們就用了比較熟悉的 c 語言。應該說這是通過我們小組成員的共同努力和動腦完成的,雖然內(nèi)容并不是很復雜,但是我們覺得設計的過程相當重要,學到了很多。一切問題必須要 靠自己一點一滴的解決,而在解決的過程當中你會發(fā)現(xiàn)自己在飛速的提升。而這些問題是我在從低級的程序員向高級程序設計師過度的過程必須要解決的。 /* 空閑區(qū)大小 */ int state。 }fullblock[N]。 printf( * *\n)。 printf( * *\n)。 printf( **************************************************\n)。iN。 =freeblock[j].size。 freeblock[j].state=freeblock[i].state。 } for(i=0。j++) if(freeblock[j].state==0 amp。 =freeblock[j].state。 freeblock[j+1].startaddress=。 struct fullarea m。 jN。 fullblock[j].sizes=fullblock[i].sizes。 printf( |……………………………………………| |……………………………………………| \n)。 printf( |……………………………………………| |…………………………………………… |\n)。 printf( | | | |\n)。 for(i=0。freeblock[i].sizea) /*檢查空閑區(qū)說明表是否有滿足作業(yè)要求的空閑區(qū) */ { 內(nèi)蒙古工業(yè)大學 課設 24 freeblock[i].startaddress=freeblock[i].startaddress+a。 tag=1。amp。 tag=1。 } } voidsetfree() { int s,l,i,j,k。 /*輸入釋放區(qū)的開始地址 */ printf(\n 輸入作業(yè) 的大小 :)。kN。 } else { fullblock[k].sizes=fullblock[k].sizesl。 return。amp。amp。 } freeblock[i].size=freeblock[i].size+l。jN。 freeblock[j].size=freeblock[j].size+l。 freeblock[j].state=1。 char t。 scanf(%d,amp。 order()。 scanf(%d,amp。d++。system(cls)。 } system(cls)。 printf(\n \1 系統(tǒng)為作業(yè)分配內(nèi)存成功 !:\n\n)。system(cls)。show()。 for(i=0。 } } printf(\n \1 系統(tǒng)正在回收為作業(yè)分配的內(nèi)存中?? \n\n)。 order()。 case 3: system(cls)。 show()。) break。 printf(\n 輸入有誤 ,請重新選擇 !\n)。 /* 空閑區(qū)始址 */ int size。 int sizes。 printf( * \1 模擬的主存空間的分配與回收 \1 *\n)。 printf( * *\n)。 printf( * *\n)。 for(i=0。 j++) if(freeblock[i].startaddressfreeblock[j].startaddress) { =freeblock[j].startaddress。 freeblock[j].size=freeblock[i].size。 freeblock[i].state=。jN。 =freeblock[j].size。 freeblock[j].state=freeblock[j+1].state。 } } 內(nèi)蒙古工業(yè)大學 課設 30 void order1() { int j,i。i++) for(j=i。 fullblock[j].address=fullblock[i].address。 } } void show() /*定義打印空閑區(qū)說明表函數(shù): print()*/ { int i。 printf( | start size state | | start size |\n)。i++) { printf( | %3d %3d %3d | | %3d %3d |\n,freeblock[i].startaddress, freeblock[i].size, freeblock[i].state,fullblock[i].address, fullblock[i].sizes)。 /* tag為檢查是否有滿足作業(yè)需要的空閑區(qū)的標志 ,0 表示滿 ,1 表示未滿 */ j=b。amp。 fullblock[j].sizes=a。 } else if (freeblock[i].state==1amp。 fullblock[j].sizes=a。 } if(tag==0) { return 1。s)。 /*輸入釋放區(qū)的大小 */ for(k=0。 break。 setfree()。i++) { if(freeblock[i].startaddress+freeblock[i].size==
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1