OS_可變分區的存儲管理:C++實現

1、實驗目的:ios

  1. 加深對可變分區存儲管理的理解;
  2. 提升用C語言編制大型系統程序的能力,特別是掌握C語言編程的難點:指針和指針做爲函數參數;
  3. 掌握用指針實現鏈表和在鏈表上的基本操做。
    2、實驗內容:
    參照教材P123-P125的內容,編寫一個C程序,用char *malloc(unsigned size)函數向系統申請一次內存空間(如size=1000,單位爲字節),用循環首次適應算法、最佳適應算法和最壞適應算法,模擬可變分區存儲管理,實現對內存區的分配和回收管理。
    3、實驗要求:
  4. 分配函數addr=(char *)lmalloc(unsigned size)和釋放函數lfree(unsigned size,char *addr)的參數size和addr,要以鍵盤命令的形式輸入,每次分配和釋放後顯示空閒分區表。
  5. 空閒分區表可採用結構數組的形式(最低要求)或雙向鏈表的形式。

以上爲實驗的要求接下來來探討如何的去實現,這裏我用的是codeblocks加上notepad++,結合了不少人的代碼,慢慢從小白蛻化····>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
物理分割算法

#include<stdio.h>#include<stdlib.h>#include<iostream>#include<iomanip>
咱們引入這些庫函數,要使用到malloc、cout、cin等等,我是從c轉型的因此可能或許有些許的不一樣吧編程

假定咱們的內存的分區可用空間爲1000kb 那麼咱們須要定義一些預處理
#define maxsize 1000這個應該均可以看懂我就不過多的敘述了數組

定義數據結構
//結構的定義
typedef struct freePart{//空閒分區
long size;//分區的大小
long add;//分區的地址
int state;//狀態
}elemType;
typedef struct twoNode{//雙向鏈表
elemType data;
struct twoNode *pri;//前趨
struct twoNode *nex;//後驅
}twoNode,*linkTwoList;數據結構

typedef struct T{//排序的鏈表結構(單)
linkTwoList p;
struct T *next;
}T;函數

linkTwoList tou;//頭節點
linkTwoList wei;//尾節點
T *headtou;指針

這些的定義咱們能夠參考一下書上的講解,首先假設咱們都實現了咱們在main中須要怎麼去寫咱們的代碼呢?
咱們得初始化咱們的代碼,由於咱們的內存分區是由雙向鏈表中的結構體實現的,因此咱們首先得初始化咱們的雙向鏈表,頭節點不須要指向任何東西,尾部的節點須要pri頭節點,指向1000的空閒區,最後連接上一個null,這樣咱們的第一個就作好了。這個是咱們的想法,具體的實現,以後再講解。
當咱們初始化完了以後咱們會想着去顯示在控制檯上,那麼咱們也能夠將咱們的顯示給定義爲一個函數(方法),那麼如何的去實現呢?
咱們以前並未說明分區號由於咱們是從0開始讓它自動的遞加code

相關文章
相關標籤/搜索