//作業系統儲存器管理
//首次適應演算法,迴圈首次適應演算法,最優適應演算法,最壞適應演算法
//4118080036 孫天雨 電腦科學與技術本科1班
#include
"iostream"
#include
"stdlib.h"
using
namespace std;
#define free 0
#define busy 1
#define max_length 1000
//資料結構
//空閒鍊錶資料域
struct freenodedataarea
;typedef
struct freenode
*freenodelist;
//鍊錶的頭指標和尾指標
freenodelist freelinkroot =
new freenode;
//鍊錶的頭指標
freenodelist freelinktail =
new freenode;
//鍊錶的尾指標
//主要函式
intallocmemory
(int tag)
;//記憶體分配
void
free()
;//記憶體**
bool
firstfit
(int id,
int length)
;//首次適應演算法
bool
nextfit
(int id,
int length)
;//迴圈首次適應演算法
bool
bestfit
(int id,
int length)
;//最優適應演算法
bool
badfit
(int id,
int length)
;//最壞適應演算法
void
showmemory()
;//檢視分配情況
intinit()
;//進行初始化
intdestroynode()
;//銷毀節點
void
menu()
;//功能選單
bool
nextfit
(int id,
int length)
bool
badfit
(int id,
int length)
intinit()
intallocmemory
(int tag)
switch
(tag)
else
return1;
case1:
//採用迴圈首次適應演算法if(
nextfit
(id, length01)
)else
return1;
case2:
//採用最優分配演算法if(
bestfit
(id, length01)
)else
return1;
case3:
//採用最壞分配演算法if(
badfit
(id, length01)
)else
return1;
}return0;
}bool
firstfit
(int id,
int m_length)
//首次適應演算法
else
if(p-
>data.length > m_length)
//空閒區比所需記憶體大,則需要將多的記憶體作**處理
} p = p-
>next;
}free
(fa)
;//查詢分配失敗
return
false;}
bool
bestfit
(int id,
int m_length)
//最佳適應演算法,其中需要查詢最佳的存放位置
} p = p-
>next;}if
(q ==
null
)//查詢分配失敗
return
false
;else
else
//空閒區比所需記憶體大,則需要將多的記憶體作**處理}}
/*void free()//**記憶體
if (!p->next->data.flag)//與後乙個空閒區相鄰,則合併
break;
} p = p->next;
} showmemory();
}*/int
free
(int id)
//主存**
if(p-
>pre-
>data.flag != free && p-
>next-
>data.flag == free)
else p-
>next = p-
>next-
>next;}if
(p->pre-
>data.flag == free && p-
>next-
>data.flag == free)
else p-
>pre-
>next = p-
>next-
>next;}if
(p->pre-
>data.flag != free && p-
>next-
>data.flag != free)
break;}
p = p-
>next;
} cout <<
"**成功!"
<< endl;
return1;
}void
showmemory()
}void
menu()
//選單}}
intmain()
儲存器管理
通用計算機有三層儲存器 cpu暫存器,主存,輔存。為了緩和各儲存器之間處理速度的差異,在暫存器和主存之間加入了快取記憶體,而在主存和輔存之間加入了磁碟快取。模組裝入方式 1 絕對裝入方式 將目標模組裝入到記憶體事先指定的位置。記憶體的分配方式 一 連續分配方式。1 單一連續分配 只能用於單使用者單任...
儲存器管理
一 單一連續分配 分為系統區和使用者區,系統區僅提供給os使用,通常放在低位址,使用者區出系統區以外的全部記憶體空間,供使用者使用。二 固定分割槽分配 把記憶體劃分為大小不一的分割槽,有幾個分割槽便只允許幾道作業併發。會造成內碎片 內碎片 乙個分區內的剩餘空間 三 動態分割槽分配 根據程式大小需要多...
儲存器管理
1 編譯compiler 編譯程式 將使用者源 編譯成若干個目標模組。1 邏輯位址 相對位址,虛位址 使用者的程式經過彙編或編譯後形成目標 目標 中的指令位址是相對位址。一般首位址為0,其餘指令中的位址都相對於首位址來編址。不能用邏輯位址在記憶體中讀取資訊 2 實體地址 絕對位址,實位址 記憶體中儲...