1.1.實驗目的
用高階語言完成乙個主存空間的分配和**程式,以加深對動態分割槽分配方式及其演算法的理解。
1.2.實驗要求
採用連續分配方式之動態分割槽分配儲存管理,使用首次適應演算法、迴圈首次適應演算法、最佳適應演算法和最壞適應演算法4種演算法完成設計。
(1)**設計乙個作業申請佇列以及作業完成後的釋放順序,實現主存的分配和**。採用分割槽說明表進行。
(2)或在程式執行過程,由使用者指定申請與釋放。
(3)設計乙個空閒區說明表,以儲存某時刻主存空間占用情況。
把空閒區說明表的變化情況以及各作業的申請、釋放情況顯示。
根據指定的實驗課題,完成設計、編碼和除錯工作,完成實驗報告。
可以選用visual c++作為開發環境。也可以選用windows下的vb,cb或其他視覺化環境,利用各種控制項較為方便。自主選擇實驗環境。
#include
#include
#include
#define max 24
struct partition*free_table=null,*place; //
已分配分割槽表,空閒分割槽表
typedef struct
table frtable;
//空間分割槽鍊錶初始化
frtable *init(frtable *tb)
//主存分配函式,為作業job分配大小為xk的分割槽空間
void allocate(char job,float xk,int
choice)
if (choice==2
)
else
k=1; }
else
//選擇最適合空間
tb=tb->relink;
}tb=place;
}if (tb->length>=xk&&tb->flag==0
)
if (tb->length-xk<=minisize)
else
tb=tb->relink;}}
if (0==k)
}//主存**函式,**作業job所占用的分割槽空間
void reclaim(char job,int
choice)
}while(tb!=link);
bool1=(null==tb->frlink||tb->frlink==tb->relink)? 1:tb->frlink->flag;
bool2=(null==tb->relink||tb->frlink==tb->relink)? 1:tb->relink->flag;
if (bool1&&bool2)
else
if ((null==tb->frlink||1==tb->frlink->flag)&&0==tb->relink->flag)
else
if (0==tb->frlink->flag&&1==tb->relink->flag)
else
if (0==tb->frlink->flag&&0==tb->relink->flag)
}//顯示空間分割槽鍊錶
void display(frtable *tb,int
choice)
while(temp!=tb);}//
主函式int
總結:難,不是一般的難
1681035 作業系統實驗4
一 前期準備工作 二 頁面訪問序列隨機生成說明 三 輸入輸出函式 四 頁面置換演算法 五 實驗結果截圖 六 完整源 為什麼會有頁面置換演算法?圖5.虛擬記憶體和物理記憶體以及磁碟的對映關係 由圖5可以看出,虛擬記憶體實際上可以比物理記憶體大。當訪問虛擬記憶體時,會訪問mmu 記憶體管理單元 去匹配對...
作業系統實驗
一 實驗目的 理解vi的三種執行模式及其切方法。學會使用vi的各種操作命令進行文字檔案的編輯。用vi編寫linux下c程式,會用gcc編譯。二 實驗環境 一台裝有linux的機器 這裡預設是red hat linux 9 系統裡面有gcc編譯器。三 實驗內容 寫出主要的內容 首先用合法使用者登入系統...
作業系統實驗
分析bootloader進入保護模式的過程。在剛進入bootloader的時候,最先執行的操作分別為關閉中斷 清除eflags的df位以及將ax,ds,es,ss暫存器初始化為0 globl start start code16 cli 關中斷 cld 清除方向標誌 xorw ax,ax ax清0 ...