實驗四主存空間的分配和**
1.1.實驗目的
用高階語言完成乙個主存空間的分配和**程式,以加深對動態分割槽分配方式及其演算法的理解。
1.2.實驗要求
採用連續分配方式之動態分割槽分配儲存管理,使用首次適應演算法、迴圈首次適應演算法、最佳適應演算法和最壞適應演算法4種演算法完成設計。
(1)**設計乙個作業申請佇列以及作業完成後的釋放順序,實現主存的分配和**。採用分割槽說明表進行。
(2)或在程式執行過程,由使用者指定申請與釋放。
(3)設計乙個空閒區說明表,以儲存某時刻主存空間占用情況。
把空閒區說明表的變化情況以及各作業的申請、釋放情況顯示。
根據指定的實驗課題,完成設計、編碼和除錯工作,完成實驗報告。
可以選用visual c++作為開發環境。也可以選用windows下的vb,cb或其他視覺化環境,利用各種控制項較為方便。自主選擇實驗環境。
1 #include2 #include3 #include4 #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...