儲存器管理

2021-10-07 06:34:51 字數 3074 閱讀 1221

//作業系統儲存器管理

//首次適應演算法,迴圈首次適應演算法,最優適應演算法,最壞適應演算法

//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 實體地址 絕對位址,實位址 記憶體中儲...