作業系統實驗三 動態分割槽儲存管理

2021-10-05 21:43:22 字數 2657 閱讀 5598

一、目的與任務

目的:熟悉並掌握動態分割槽分配的各種演算法,熟悉並掌握動態分割槽中分割槽**的各種情況,並能夠實現分割槽合併。

任務:用高階語言模擬實現動態分割槽儲存管理。

二、內容、要求與安排

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語言書...