一、目的與任務
目的:熟悉並掌握動態分割槽分配的各種演算法,熟悉並掌握動態分割槽中分割槽**的各種情況,並能夠實現分割槽合併。
任務:用高階語言模擬實現動態分割槽儲存管理。
二、內容、要求與安排
1、實驗內容
分割槽分配演算法至少實現首次適應演算法、最佳適應演算法和最壞適應演算法中的至少一種。熟悉並掌握各種演算法的空閒區組織方式。
分割槽的初始化——可以由使用者輸入初始分割槽的大小。(初始化後只有乙個空閒分割槽,起始位址為0,大小是使用者輸入的大小)
分割槽的動態分配過程:由使用者輸入作業號和作業的大小,實現分割槽過程。
分割槽的**:使用者輸入作業號,實現分割槽**,同時,分割槽的合併要體現出來。(注意:不存在的作業號要給出錯誤提示!)
分割槽的顯示:任何時刻,可以檢視當前記憶體的情況(起始位址是什麼,大小多大的分割槽時空閒的,或者占用的,能夠顯示出來)。
2、實驗要求
(1)記憶體空間不足的情況,要有相應的顯示;
(2)作業不能同名,但是刪除後可以再用這個名字;
(3)作業空間**是輸入作業名,**相應的空間,如果這個作業名不存在,也要有相應的提示。
(4)要求實現ff、bf、wf演算法中至少兩種演算法。
(5)實驗完成後要參加實驗答辯。
#include
#include
#include
using
namespace std;
typedef
struct job *list;
struct job};
list using, free;
int algtype;
job *map[
10000];
void
in_it()
;void
solve()
;voidff(
);void
m_malloc()
;void
m_free()
;void
merge_check
(list l, job* t)
;void
show()
;list makeempty()
;void
insert
(list l, job *t)
;void
delete
(list l, job *t)
;int
menu()
;int
main()
void
in_it()
void
solve()
}}void
m_malloc()
list temp = free;
if(algtype ==1)
}}else
temp = max;
if(temp-
>m_size >= m_size)
}printf
("!!! memory full\n");
}void
m_free()
job* temp = map[num]
; job *t =
(job*
)malloc
(sizeof
(struct job));
t->
set_date(-
1, temp-
>m_begin, temp-
>m_size,
false);
t->next =
null
;insert
(free, t)
;delete
(using, temp)
; map[num]
=null
;printf
("free succeed\n");
merge_check
(free, t);}
void
merge_check
(list l, job* t)
if(temp-
>m_end+
1== temp-
>next-
>m_begin)
//向上合併
}void
show()
else
}while
(t1 !=
null
)while
(t2 !=
null)}
list makeempty()
void
insert
(list l, job *t)
list temp = l;
while
(t->m_begin > temp-
>next-
>m_begin)
} t-
>next = temp-
>next;
temp-
>next = t;
return;}
void
delete
(list l, job *t)
intmenu()
return m;}/*
5011 1 5
31 2 5
31 3 5
32 2
31 4 3
3*/
作業系統實驗 動態分割槽管理
1 動態分割槽管理的主存分配模擬系統的設計 最先適應法 最佳適應法 最壞適應法 選擇1 3種 模擬實現記憶體的分配 2 能夠輸入給定的記憶體大小,程序的個數,每個程序所需記憶體空間的大小等 3 能夠選擇分配或 操作 並能顯示完成記憶體分配或 後記憶體空間的使用情況 4 能夠顯示程序在記憶體的儲存位址...
作業系統實驗三 可變分割槽儲存管理
一.實驗目的和要求 通過這次實驗,加深對記憶體管理的認識,進一步掌握記憶體的分配 演算法的思想。二.實驗目的和要求 編寫程式模擬實現記憶體的動態分割槽法儲存管理。記憶體空閒區使用自由鏈管理,採用最壞適應演算法從自由鏈中尋找空閒區進行分配,記憶體 時假定不做與相鄰空閒區的合併。假定系統的記憶體共640...
作業系統 儲存器管理實驗
實驗過程 理解windows中堆 棧的記憶體布局 通過wndows系統提供的系統呼叫heapcreate heapalloc heapfree 等函式的應用,理解虛擬記憶體管理技術中的記憶體分配原理。使用工具軟體vmmap檢視某個程序的虛擬位址空間,並理解虛位址空間中的相關術語。本實驗要求用c語言書...