計算機操作系統(tǒng)內(nèi)存動態(tài)分配和回收模擬實現(xiàn)_第1頁
計算機操作系統(tǒng)內(nèi)存動態(tài)分配和回收模擬實現(xiàn)_第2頁
計算機操作系統(tǒng)內(nèi)存動態(tài)分配和回收模擬實現(xiàn)_第3頁
計算機操作系統(tǒng)內(nèi)存動態(tài)分配和回收模擬實現(xiàn)_第4頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、/COPYRIGHT 2010 tragedy ring finger. ALL RIGHTS RESERVED.#include <iomanip>#include <iostream>using namespace std;/?D · ?20? ?ò ?· ?· ?20?struct empty/?D · ?±íint address_of_start; /?eê ? ?·int size_of_empty; /?Dó D?int next;int yesorno;

2、/ê ?· ?D,1 ?D ?ó DD§ Empty20;struct not_empty/ ò ?· ?· ?±íint pid;int address_of_start;int size_of_notempty;int next;int yesorno; /ê ?· ?· ? ?1 · ? ó DD§ Not_Empty20;int CountOfEmpty=1,CountOfNotEmpty=0; /ó 0 ?aê ?&

3、#234; yint Min_Size = 2; /2?é· ? ?× ?D?· ?int Max_Size = 300; /× ?ó ?300 X 300 = 90000int Num_Of_Row = 30; /?ê ?ê± ?oá ?ê yint Num_Of_Area = 20; /?D· ? o í · ?· ? ?× ?ó· ?ê yint enough(int Size_Of_NotEmpty

4、) /ê ?· ?ó D× ?1? ?D?int i;for (i=0;i<CountOfEmpty;i+) /ê× ?êêó |if (Emptyi.size_of_empty >= Size_Of_NotEmpty + Min_Size)return i;return -1;intwhere(intnum,inta)/? ò ?eê ? ?· ?anum ?óò ?±ê =?a0-1 ?ò ?ú No

5、t_Empty?D ?±ê ?aa1 ?a1 = -1 ? ú Empty?D ?±ê ?aa0 int i=0;while (i < Num_Of_Area)if(Emptyi.address_of_start= num && Emptyi.yesorno= 1)a0 = i;a1 = -1;return 0;if(Not_Emptyi.address_of_start=num&&Not_Emptyi.yesorno = 1)a0 = -1;a1 = i;return 0;i += 1;return -1

6、;int fenpei()int temp,i;CountOfNotEmpty += 1;Not_EmptyCountOfNotEmpty.yesorno = 0;for (i=0;i<CountOfNotEmpty;i+)if (Not_Emptyi.yesorno = 0)cout<<" ê ?è ?3ì ID(099),? ó ?ó D?(0"<<Max_Size<<")n"cin>>Not_Emptyi.pid>>Not_Empty

7、i.size_of_notempty;if (Not_Emptyi.pid <0 | Not_Emptyi.pid > 99)CountOfNotEmpty -= 1;cout<<"?3 ì o? 0 99n"return -1;for (int ii=0;ii<CountOfNotEmpty;ii+)if (Not_Emptyi.pid = Not_Emptyii.pid && i!= ii)CountOfNotEmpty -= 1;cout<<"?3 ì o?± ?D?&#

8、168;ò ?n"return -1;temp = enough(Not_Emptyi.size_of_notempty);if (temp >= 0) /?ò ?ü ?ú× ?ó ?D· ?Not_Emptyi.address_of_start = Emptytemp.address_of_start;Not_Emptyi.yesorno = 1;Emptytemp.address_of_start += Not_Emptyi.size_of_notempty;Emptytemp.size_of_empty

9、 -= Not_Emptyi.size_of_notempty;elseCountOfNotEmpty -= 1;cout<<"? ?ò ?× ?1?ó ?D· ?n"return -1;return 0;intfront(inti,int&a)/i?a y?ê ?úNot_Empty?D ?±ê ? a ?ó |? ±êfor(intii=0;ii<CountOfEmpty;ii+)/ è· ?¨ y?

10、34; ?°ò ?· ?ê ?· ?ê ?D· ? ?°· ?D· ? ?±êif(Not_Emptyi.address_of_start=Emptyii.address_of_start + Emptyii.size_of_empty&& Emptyii.yesorno = 1)a = ii;return 0;a=i;/ è ?1?°ò ?· ?2?ê ?D ?ò ?°ò ?&#

11、183; ?ê ?ò ?· ? ?ò y?ê ?ê ?úò ?· ?return -1;intback(inti,int&a)/i?a y?ê ?úNot_Empty?D ?±ê ? a ?ó |? ±êfor (int ii= 0;ii<CountOfEmpty;ii+)if(Emptyii.address_of_start=Not_Emptyi.address_of_start + Not_Emptyi.size_of

12、_notempty && Emptyii.yesorno = 1)a = ii;return 0;a = i;return -1;void swap(int i ,int j,int sign)if (sign = 0)empty temp;temp = Emptyi;Emptyi = Emptyj;Emptyj = temp;elsenot_empty temp;temp = Not_Emptyi;Not_Emptyi =Not_Emptyj;Not_Emptyj = temp;void decrease_CountOfEmpty()int i;for (i=0;i<C

13、ountOfEmpty;i+)if (Emptyi.yesorno = 0)swap(i,CountOfEmpty-1,0);CountOfEmpty -= 1;break;void decrease_CountOfNotEmpty()int i;for (i=0;i<CountOfNotEmpty;i+)if (Not_Emptyi.yesorno = 0)swap(i,CountOfNotEmpty-1,1);CountOfNotEmpty -= 1;break;int huishou()int pid,i,a,b;cout<<" ê ?è

14、?ò a?ê ? ?3ì o?"<<endl;cin>>pid;for (i=0;i<CountOfNotEmpty;i+)if (Not_Emptyi.pid = pid)if (front(i,a) = 0) / y?ê ?· ?° ?ê ?D· ?Emptya.size_of_empty += Not_Emptyi.size_of_notempty;Not_Emptyi.yesorno = 0;if (back(i,b) = 0) / y?ê ?oó

15、 ?ê ?D· ?Emptya.size_of_empty+=Emptyb.size_of_empty;Emptyb.yesorno = 0;/? ú ? ? ê ?oó ?decrease_CountOfNotEmpty();decrease_CountOfEmpty();else / y?ê ?· ?oó ?· ?,? ò oó ?ê ?ò ?· ?· ?/? ú ? ê ?oó ?/? ú ?

16、0; ? ê ?oó ? údecrease_CountOfNotEmpty();else / y?ê ?· ?° ?· ?,? ò ?° ?ê ?ò ?· ?· ?if (back(i,b) = 0) / y?ê ?oó ?ê ?D· ?Emptyb.address_of_start=Not_Emptyi.address_of_start;Emptyb.size_of_empty+=Not_Emptyi.size_of_no

17、tempty;Emptyb.yesorno = 1;Not_Emptyi.yesorno = 0;/? ú ?ú ? ? ê ?oó ? ú ?/? ú ? ? ê ?oó ?decrease_CountOfNotEmpty();else / y?ê ?· ?oó ?· ?,? ò oó ?ê ?ò ?· ?· ?a = -1;for(intii=0;ii<CountOfEmpty;ii+)/?y?y?y?y?

18、y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?y?yif(Emptyii.yesorno=0)/? òò ?ó ? ?D· ?±í ?±í· ?a ?è ?1?ó Dó ? ?íà ?ó ?D· ?± í ?ó D?a = ii;break;if (a = -1)CountOfEmpty+=1;/? òò ?ó ? ?D&#

19、183; ?±í ?±í· ?a ?è ?1?ó Dó ? ?íà ?ó ?D· ?±í ?ó D?a=CountOfEmpty-1;/? ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?

20、52; ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü ?ü?ú ?Emptya.address_of_start = Not_Emptyi.address_of_start;Emptya.size_of_empty = Not_Emptyi.size_of_notempty;Emptya.yesorno = 1;Not_Emptyi.yesorno = 0;/? ú ?ú/? &

21、#250;? ê ?oó?/? ú ?ú ?ú?ú ?ú/ ?ú ?ú?údecrease_CountOfNotEmpty();/CountOfNotEmpty-=1;? ê ?oóè ?ò ?· ?· ?ê y?ò ? ? ?ê ? ?ó |? é ?áê 1?Doí· ?ê yá ?± ?ò 2?

22、7; ?return 0;void qsort_empty_address_of_start(empty a,int low,int high)int i = low,j = high;empty temp=alow;while(i<j)while(i<j&&temp.address_of_start<=aj.address_of_start)j-;if(i<j)ai = aj;i+;while (i<j && ai.address_of_start < temp.address_of_start)i+;if(i<j)a

23、j = ai;j-;ai = temp;if(low<i) qsort_empty_address_of_start(a,low,i-1);if(i<high) qsort_empty_address_of_start(a,j+1,high);void show()int a2,num = 0,i,count = 0,times=0;cout<<"n*MemoryState*n"<<endl;while (count < Max_Size)where(num,a);if (a0 > a1)for (i=0;i<Empty

24、a0.size_of_empty;i+)cout<<"?e"count += 1;if (count)% Num_Of_Row = 0)cout<<endl;num += Emptya0.size_of_empty;elsecout<<setw(2)<<Not_Emptya1.pid;count += 1;if (count)% Num_Of_Row = 0)cout<<endl;for (i=1;i<Not_Emptya1.size_of_notempty;i+)cout<<"?"count += 1;if (count)% Num_Of_Row = 0)cout<<endl;num += Not_Emptya1.size_of_notempty;times += 1;cout<<endl;void show_empty()int i;cout<<"n?D· ?á D±í n&qu

溫馨提示

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

最新文檔

評論

0/150

提交評論