作業系統實驗4

2022-05-16 18:41:27 字數 1904 閱讀 4617

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 ...