作業系統實驗 動態分割槽管理

2021-10-12 02:24:58 字數 4195 閱讀 4976

(1)動態分割槽管理的主存分配模擬系統的設計—最先適應法、最佳適應法、最壞適應法(選擇1~3種),模擬實現記憶體的分配**;

(2)能夠輸入給定的記憶體大小,程序的個數,每個程序所需記憶體空間的大小等;

(3)能夠選擇分配或**操作;並能顯示完成記憶體分配或**後記憶體空間的使用情況;

(4)能夠顯示程序在記憶體的儲存位址、大小等 //

#include

#include

"service.h"

using

namespace std;

intmain()

}}datastruct.h 檔案

#pragma once

#include

using

namespace std;

/** 資料結構定義檔案

*///分割槽表

struct ram

;//可用表

struct freeram

;//程序表

struct process

;

service.cpp檔案

#include

"service.h"

#include

#include

"datastruct.h"

#include

"partition.h"

#include

"processm.h"

using

namespace std;

//資料層物件

partition par;

//記憶體管理

processm pro;

//程序管理

/** 列印分割槽表

*/void

prirams()

/** 列印可用表

*/void

prifreerams()

/** 列印程序請求表

*/void

prirequestpros()

/** 初始化記憶體

*/void

initpars()

/** 向請求表中新增程序

*/void

addpros()

}/** 根據方式獲取區號

* way:使用的方法 0:最先適應法; 1:最佳適應法; 2:最壞適應法

* len: 程序長度

* return:區號 (-1:無可用區)

*/int

getpartnum

(int way,

int len)if(

0==way)

elseif(

1==way)

else

}return-1

;}/** 分配程序

* way:使用的方法 0:最先適應法; 1:最佳適應法; 2:最壞適應法

*/void

distributepros

(int way)}}

//更新程序請求表

pro.

upadaterequest()

;}/** 讓使用者選擇分配的方法

*/void

choosedisway()

/** 讓使用者選擇要釋放的分割槽

*/void

releasepars()

partition.cpp 檔案

/***************************************

類的成員變數

int totalram = 0; //給定的記憶體

int partitionnum = 0; //分割槽個數

int freenum = 0;//空閒分割槽個數

ram* toalram=null;//分割槽表

freeram freeram[100]; //空閒(可用)區表

*********/

#include

"partition.h"

using

namespace std;

/** 初始化記憶體

* totalram: 記憶體大小

*/void partition::

initram

(int totalram)

/** 初始化分割槽的區號

*/void partition::

initpartno()

partitionnum = i;}/*

* 更新空閒分割槽,每次改變分割槽表的時候,都需要更新空閒分割槽

*/void partition::

upadtefreeram()

freenum =0;

//找出所有空閒區

for(ram* p=toalram;p!=

null

;p=p-

>next)}}

/** 從可用表中查詢第乙個符合條件的分割槽

* len: 可用區的長度大於len

*/int partition::

serarchfreeram

(int len)

}return-1

;}/** 向指定的分割槽中,分配程序

* partno:分區區號

* pro: 需要分配的程序

* return: true 分配成功 ,false 分配失敗

*/bool partition::

distributeprocess

(int partno, process pro)

else}}

return

false;}

/** 將可用表進行遞減排序

*/void partition::

ascendingorder()

}}}/*

* 將可用表進行遞減排序

*/void partition::

decreasingorder()

}}}/*

* 釋放指定分割槽

* partno:要釋放的分割槽的區號

*/void partition::

releasepartition

(int partno)

}//處理**區與空閒區鄰接

neatendebris()

;}/** 整理記憶體

* 當釋放分割槽後,呼叫該函式用於處理空閒區與**取鄰接的情況*/

void partition::

neatendebris()

else

}else

}//跟新可用區

upadtefreeram()

;}/** 列印分割槽表

*/void partition::

printram()

cout << endl;}/*

* 列印可用表

*/void partition::

printfreeram()

}/** 交換a與b的值,

*用於可用表排序的工具函式

*/void partition::

change

(int

& a,

int& b)

processm.cpp檔案

/****************************

類的成員變數:

process prorequest[100]; //程序請求表

int processnum = 0;//請求表中程序個數

**********************************/

#include

"processm.h"

#include

using

namespace std;

/** 新增程序到程序請求表中

*/void processm::

addprocess

(process pro)

/** 列印請求表

*/void processm::

printrequest()

}/** 更新程序請求表

*/void processm::

upadaterequest()

} processnum = k;

}

作業系統實驗三 動態分割槽儲存管理

一 目的與任務 目的 熟悉並掌握動態分割槽分配的各種演算法,熟悉並掌握動態分割槽中分割槽 的各種情況,並能夠實現分割槽合併。任務 用高階語言模擬實現動態分割槽儲存管理。二 內容 要求與安排 1 實驗內容 分割槽分配演算法至少實現首次適應演算法 最佳適應演算法和最壞適應演算法中的至少一種。熟悉並掌握各...

作業系統實驗三 可變分割槽儲存管理

一.實驗目的和要求 通過這次實驗,加深對記憶體管理的認識,進一步掌握記憶體的分配 演算法的思想。二.實驗目的和要求 編寫程式模擬實現記憶體的動態分割槽法儲存管理。記憶體空閒區使用自由鏈管理,採用最壞適應演算法從自由鏈中尋找空閒區進行分配,記憶體 時假定不做與相鄰空閒區的合併。假定系統的記憶體共640...

作業系統實驗之動態分割槽分配演算法

設計程式模擬四種動態分割槽分配演算法 首次適應演算法 迴圈首次適應演算法 最佳適應演算法和最壞適應演算法的工作過程。假設記憶體中空閒分割槽個數為n,空閒分割槽大小分別為p1,pn,在動態分割槽分配過程中需要分配的程序個數為m m n 它們需要的分割槽大小分別為s1,sm,分別利用四種動態分割槽分配演...