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

正文內容

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

2025-08-23 21:05本頁面

【導讀】使學生初步具有研究、設計、編制和調試操作系統(tǒng)模塊的能力。2.或設計基于空閑區(qū)鏈表的可變分區(qū)分配與回收算法;3.畫出以上算法流程圖;4.編程實現(xiàn)算法功能;5.編寫課程設計說明書。組連續(xù)的頁面而建立一種穩(wěn)定、高效的分配策略。頻繁地請求和釋放不同大小的一組連續(xù)頁面,必然導致。在已分配的內存塊中分散許多小塊的空閑頁面。Linux采用著名的伙伴系統(tǒng)算法來解決外碎片問題。意,在Linux中,CPU不能按物理地址來訪問存儲空間,而必須使用虛擬地址;因此,再介紹用戶進程虛存區(qū)間的建立。一個好的分配器應該能夠快速地滿足各種大小的分配要求,同時不能產生大量?;跀?shù)據(jù)結構中的伙伴系統(tǒng)的分配與回收思想給出了一個有效的算

  

【正文】 *\n)。 printf( * *\n)。 printf( * *\n)。 printf( * *\n)。 printf( **************************************************\n)。 } void order() { int j,i。 struct freearea m。 for(i=0。iN。i++) for(j=i。 jN。 j++) if(freeblock[i].startaddressfreeblock[j].startaddress) { =freeblock[j].startaddress。 =freeblock[j].size。 =freeblock[j].state。 freeblock[j].startaddress=freeblock[i].startaddress。 freeblock[j].size=freeblock[i].size。 freeblock[j].state=freeblock[i].state。 freeblock[i].startaddress=。 freeblock[i].size=。 freeblock[i].state=。 } for(i=0。iN。i++) for(j=0。jN。j++) if(freeblock[j].state==0 amp。amp。 freeblock[j+1].state==1) { =freeblock[j].startaddress。 =freeblock[j].size。 =freeblock[j].state。 freeblock[j].startaddress=freeblock[j+1].startaddress。 freeblock[j].size=freeblock[j+1].size。 freeblock[j].state=freeblock[j+1].state。 freeblock[j+1].startaddress=。 freeblock[j+1].size=。 freeblock[j+1].state=。 } } 內蒙古工業(yè)大學 課設 30 void order1() { int j,i。 struct fullarea m。 for(i=0。iN。i++) for(j=i。 jN。 j++) if(fullblock[i].addressfullblock[j].address) { =fullblock[j].address。 =fullblock[j].sizes。 fullblock[j].address=fullblock[i].address。 fullblock[j].sizes=fullblock[i].sizes。 fullblock[i].address=。 fullblock[i].sizes=。 } } void show() /*定義打印空閑區(qū)說明表函數(shù): print()*/ { int i。 printf( |……………………………………………| |……………………………………………| \n)。 printf( | 空閑區(qū)說明表 | | 已分配區(qū)表 |\n)。 printf( | | | |\n)。 printf( | start size state | | start size |\n)。 printf( |……………………………………………| |……………………………………………| \n)。 for(i=0。iN。i++) { printf( | %3d %3d %3d | | %3d %3d |\n,freeblock[i].startaddress, freeblock[i].size, freeblock[i].state,fullblock[i].address, fullblock[i].sizes)。 printf( | | | |\n)。 } printf( |…………………………………………… |內蒙古工業(yè)大學 課設 31 |……………………………………………| \n)。 } int alloc(int a,int b) /*定義為作業(yè)分配主存空間的函數(shù) alloc(),a 為作業(yè)申請量 */ { int i,j,tag=0。 /* tag為檢查是否有滿足作業(yè)需要的空閑區(qū)的標志 ,0 表示滿 ,1 表示未滿 */ j=b。 for(i=0。iN。i++) if(freeblock[i].state==1amp。amp。freeblock[i].sizea) /*檢查空閑區(qū)說明表是否有滿足作業(yè)要求的空閑區(qū) */ { freeblock[i].startaddress=freeblock[i].startaddress+a。 freeblock[i].size=freeblock[i].sizea。 fullblock[j].address=freeblock[i].startaddressa。 fullblock[j].sizes=a。 tag=1。 /*有滿足條件的空閑區(qū)時 ,tag 置 1*/ return freeblock[i].startaddressa。 break。 } else if (freeblock[i].state==1amp。amp。freeblock[i].size==a) { freeblock[i].state=0。 fullblock[j].address=freeblock[i].startaddress。 fullblock[j].sizes=a。 tag=1。 /*有滿足條件的空閑區(qū)時 ,tag 置 1*/ return freeblock[i].startaddress。 /*返回為作業(yè)分配的主存地址 */ break。 } if(tag==0) { return 1。 } } 內蒙古工業(yè)大學 課設 32 void setfree() /*定 義主存回收函數(shù): setfree()*/ { int s,l,i,j,k。 /*tagl 代表釋放區(qū)的高地址是否鄰接一個空閑區(qū) ,tag2 代表釋放區(qū)的高低地址是否都鄰接一個空閑區(qū) ,tag3 代表釋放區(qū)的低地址是否鄰接一個空閑區(qū) */ printf(\n\n 請輸入需要釋作業(yè)的首地址 :)。 scanf(%d,amp。s)。 /*輸入釋放區(qū)的開始地址 */ printf(\n 輸入作業(yè)的大小 :)。 scanf( %d,amp。l)。 /*輸入釋放區(qū)的大小 */ for(k=0。kN。k++) { if(fullblock[k].address==s) { if(fullblock[k].sizes==l) { fullblock[k].address=0。 fullblock[k].sizes=0。 break。 } else { fullblock[k].sizes=fullblock[k].sizesl。 break。 } } if(k==N1) { printf(\n 輸入釋放作業(yè)開始地址不存在,請重新輸入 !)。 setfree()。 return。 } } for(i=0。iN。i++) { if(freeblock[i].startaddress+freeblock[i].size==samp。amp。freeblock[i].state==1) { for(j=i+1。jN。j++) { if(freeblock[j].startaddress==s+lamp。amp。 freeblock[j].state==1) 內蒙古工業(yè)大學 課設 33 { freeblock[i].size=freeblock[i].size+l+freeblock[j].size。 freeblock[j].state=0。 return。 } freeblock[i].size=freeblock[i].size+l。 freeblock[i].state=1。 return。 } } else { for(j=0。jN。j++) { if(freeblock[j].startaddress==s+lamp。amp。 freeblock[j].state==1) { freeblock[j].startaddress=s。 freeblock[j].size=freeblock[j].size+l。 return。 } else { if(freeblock[j].state==0) { freeblock[j].size=l。 freeblock[j].startaddress=s。 freeblock[j].state=1。 return。 } } } } } } void main() 內蒙古工業(yè)大學 課設 34 { int i,b,a,d=0,c=1。 int start。 char t。 while(c) { system(cls)。 muen()。 printf( 請選擇操作編號 :)。 scanf(%d,amp。b)。 switch(b) { case 1: system(cls)。 printf(\n 系統(tǒng)原有內存空閑區(qū)分表和已分配表區(qū)如下 :\n\n)。 order()。order1()。show()。 printf(\n 請輸入作業(yè)申請量 :)。 scanf(%d,amp。a)。 order()。 start=alloc(a,d)。d++。 if(start==1) { system(cls)。 printf(\n \1 內存中沒有符合的空閑區(qū)可供分配 !等待釋放內存中 ~~\n)。 Sleep(1*1000)。system(cls)。 show()。 setfree()。 break。 } system(cls)。 printf(\n \1 系統(tǒng)采用最佳適應算法正在為作業(yè)分配內存中?? \n\n)。 Sleep(1*1000)。syst
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1