作業系統 實驗四

2022-05-26 04:00:12 字數 3110 閱讀 6563

實驗四主存空間的分配和**

1.1.實驗目的

用高階語言完成乙個主存空間的分配和**程式,以加深對動態分割槽分配方式及其演算法的理解。

1.2.實驗要求

採用連續分配方式之動態分割槽分配儲存管理,使用首次適應演算法、迴圈首次適應演算法、最佳適應演算法和最壞適應演算法4種演算法完成設計。

(1)**設計乙個作業申請佇列以及作業完成後的釋放順序,實現主存的分配和**。採用分割槽說明表進行。

(2)或在程式執行過程,由使用者指定申請與釋放。

(3)設計乙個空閒區說明表,以儲存某時刻主存空間占用情況。

把空閒區說明表的變化情況以及各作業的申請、釋放情況顯示。

根據指定的實驗課題,完成設計、編碼和除錯工作,完成實驗報告

可以選用visual c++作為開發環境。也可以選用windows下的vb,cb或其他視覺化環境,利用各種控制項較為方便。自主選擇實驗環境。

1 #include2 #include3 #include

4 #include/*

含ma l l o c ( ) 的標頭檔案*/5

#define max 24

6#define memory 512

7#define ossize 100

8struct

partition;

17 typedef struct

partition part;

18int memorysize(part *mem,part *head);

19void init(part *mem,part *head);

20void input(part *mem,part *head);

21void output(part *mem,part *head);

22void recycle(part *mem,part *head);

23void commemory(part *mem,part *head);

24void

main() 51}

52}53//

初始化54

void init(part *mem,part *head)

75//

**作業

76void recycle(part *mem,part *head)

7789

else92}

93if(mem==null)else

101while(mem!=null)

102 mem=mem->next;

103104

}105

//計算分配後剩餘的記憶體

106int memorysize(part *mem,part *head)

107116 mem=mem->next;

117}

118 memsize=memory-memsize;

119return

memsize;

120}

121//

合併空記憶體塊

122void commemory(part *mem,part *head)

133}

134 mem=mem->next;

135}

136}

137138

139void input(part *mem,part *head)

162else

165}

166if(q==null)

167break

;

168}

169170

171while(1

)185

else

188}

189if(q!=null)else

195}

196197

198/*}*/

199200 q=(struct partition*)malloc(sizeof(struct partition));/*

新節點*/

201 strcpy(p->pn,"

------");

202/*

q->size=memorysize(mem,head);

*/203 q->size=mem->size-p->size;

204 q->begin=mem->end;

205 q->end=q->size+q->begin;

206 q->status='f'

;207 q->next=null;

208209 p->next=q;

210 mem->next=p;

211 mem=p;

212}

213214

215void output(part *mem,part *head)

232 mem=mem->next;

233}

234235

//已經分配區列印

236 printf("

\n已分配\n");

237 printf("

程序名\t開始\t大小\t狀態\n");

238 mem=head;

239while(mem!=null)

240mem=mem->next;

251}

252253

//列印全部

254 printf("

\n全部\n");

255 printf("

程序名\t開始\t大小\t狀態\n");

作業系統實驗四

學習如何利用管道機制 訊息緩衝佇列 共享儲存區機制進行程序間的通訊,並加深對上述通訊機制的理解。1 了解系統呼叫pipe 的功能和實現過程。2 編寫一c語言程式,使其用管道來實現父子程序間通訊。子程序向父程序傳送字串 is sending a message to parent 父程序則從管道中讀出...

作業系統 實驗四

include stdio.h include stdlib.h struct used table 10 已分配區表 struct temp,free table 10 空閒區表 void allocate char str 8 float leg void sort void reclaim c...

作業系統實驗四

題目 利用銀行家演算法寫乙個系統安全性檢測程式 要求對關鍵步驟進行注釋 判定如下系統的安全性。已知系統有5個程序p0 p1 p2 p3 p4,三類資源a b c,當前時刻可用資源向量a 0,0,0 各程序對資源的需求和占用情況如表所示,請問此時系統是否處於安全狀態?表1 程序需求資源情況表 如下 i...