-
大小: 114KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-10
- 語(yǔ)言: Java
- 標(biāo)簽: 動(dòng)態(tài)分配??存儲(chǔ)管理??操作系統(tǒng)??課程設(shè)計(jì)??
資源簡(jiǎn)介
操作系統(tǒng)課設(shè)做的動(dòng)態(tài)分區(qū)分配算法。第一次上傳資源,做的有些亂,獻(xiàn)丑了,其中循環(huán)首次循環(huán)和最佳、最壞分配算法其實(shí)只是從首次適應(yīng)算法改了一點(diǎn)東西。
補(bǔ)充幾句,是JAVA做的,分配和回收算法都有,使用數(shù)組實(shí)現(xiàn)

代碼片段和文件信息
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
/*
?*?最佳適應(yīng)算法
?*?算法概述:每次為作業(yè)分配內(nèi)存時(shí),總是把能滿足要求、又是最小的空閑分區(qū)分配給作業(yè)
?*?實(shí)現(xiàn)方法:我們決定每次分配先把空閑分區(qū)按從小到大的順序排列,然后將第一個(gè)匹配分區(qū)分配給作業(yè)
?*?
?*/
public?class?BestFit?extends?Jframe?implements?MouseListener?{
JTextPane?t?=?new?JTextPane();
JPanel?p?=?new?JPanel();
//?把空閑分區(qū)表按從小到大的順序排列的方法
public?BestFit(int[]?ai?mem[]?bi)?{
//?為避免改變傳遞進(jìn)來(lái)的數(shù)組值,影響操作,新建兩個(gè)相同的數(shù)組
int?la?=?ai.length?lb?=?bi.length;
int[]?a?=?new?int[la];
mem[]?b?=?new?mem[lb];
for?(int?i?=?0;?i? a[i]?=?ai[i];
}
for?(int?i?=?0;?i? b[i]?=?bi[i];
}
add.printJ(a?t);
add.insert2(“?內(nèi)存分區(qū)初始狀態(tài):“?+?“\n“?t);
Test.print(b?t);
mem[]?f?=?mem.lian1(b);
mem.px1(f);
add.printF(f?t);
int?freeLength?=?f.length;
//?以下為界面代碼
//?界面主體僅為一個(gè)TextArea,內(nèi)容為程序運(yùn)行時(shí)所輸出
JScrollPane?sp?=?new?JScrollPane(t);
p.setLayout(new?GridLayout(1?1));
p.add(sp);
t.addMouseListener(this);
t.setBackground(Color.yellow);
add(p);
setSize(350?250);
setVisible(true);
setLocation(60?40);
settitle(“最佳適應(yīng)算法“);
//?從這里開(kāi)始是算法的主要代碼
//?notIndex用于記錄無(wú)法找到匹配分區(qū)的作業(yè)數(shù),數(shù)組sav的長(zhǎng)度與a相同,用于存儲(chǔ)無(wú)法分配的作業(yè)
int?notIndex?=?0;
int[]?sav?=?new?int[a.length];
if?(freeLength?==?0)?{//?若無(wú)空閑分區(qū)則不進(jìn)行后面的運(yùn)算
add.insert(“內(nèi)存中無(wú)空閑分區(qū)“?+?“\n“?t);
}?else?{
//?將各個(gè)作業(yè)與空閑分區(qū)比較
for?(int?i?=?0;?i? add.insert(“\n“?t);
//?定義n用于記錄不符合的次數(shù)
int?n?=?0;
add.insert(“?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-“
+?“\n“?t);
//?此循環(huán)將本次的作業(yè)與空閑分區(qū)比較
for?(int?j?=?0;?j? add.insert(“?[“?+?a[i]?+?“]?與分區(qū)號(hào)為“?+?f[j].m1?+?“的空閑分區(qū)?[“
+?f[j].m2?+?“]?比較,“?t);
if?(a[i]?<=?f[j].m2)?{//?假如作業(yè)小于空閑分區(qū),則可分配
add.insert(“符合,分配“?+?“\n“?t);
//?數(shù)組對(duì)應(yīng)元素減去作業(yè)大小,即表示分配后的大小
int?x?=?f[j].m1?-?1;
mem[]?nb?=?new?mem[b.length?+?1];
for?(int?k?=?0;?k? nb[k]?=?b[k];
}
int?size?=?b[x].m2?-?a[i];
nb[x]?=?b[x];
nb[x].m2?=?a[i];
nb[x].m4?=?1;
nb[x?+?1]?=?new?mem(nb[x].m1?+?1?size?nb[x].m2
+?nb[x].m3?0);
for?(int?k?=?x?+?2;?k? nb[k]?=?b[k?-?1];
nb[k].m1?+=?1;
}
b?=?new?mem[nb.length];
for?(int?k?=?0;?k? b[k]?=?nb[k];
}
Test.print(b?t);
f?=?mem.lian1(b);
mem.px1(f);
add.printF(f?t);
freeLength?=?f.length;
//?得到分配,結(jié)束此作業(yè)比較循環(huán)
break;
}?else?{
n++;//?每不符一次把n加1
add.insert(“不符,往下找“?+?“\n“?t);
}
}
if?(n?==?freeLength)?{//?假如n等于空閑數(shù)組的長(zhǎng)度,則說(shuō)明找遍空閑分區(qū)都無(wú)符合項(xiàng)
add.insert(“\n“?t);
add.insert2(“?未找到符合的空閑分區(qū)“?+?“\n“?t);
add.insert(“\n“?t);
if?((i?+?1)? add.insert(“?剩下的待分配作業(yè)大小為“?+?“\n“?t);
//?將a數(shù)組剩下的元素輸出,即待分配的作業(yè)
for?(int?j?=?(i?+?1);?j? add.insert(“?[
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????232??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\.classpath
?????文件????????380??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\.project
?????文件???????1333??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\b.gif
?????文件???????3694??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\add.class
?????文件???????4545??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\BestFit.class
?????文件???????4336??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\FirstFit.class
?????文件???????2869??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\Main_Window.class
?????文件???????1251??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\mem.class
?????文件???????5715??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\NextFit.class
?????文件???????6919??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\QuickFit.class
?????文件???????5907??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\Recycle.class
?????文件???????5688??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\SuanFaMain.class
?????文件???????2372??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\Test.class
?????文件???????4548??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin\WorstFit.class
?????文件??????28795??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\Recycle2.jpg
?????文件???????5061??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\BestFit.java
?????文件???????4351??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\FirstFit.java
?????文件???????2421??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\Main_Window.java
?????文件???????8019??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\NextFit.java
?????文件???????8521??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\QuickFit.java
?????文件???????6483??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\Recycle.java
?????文件???????5661??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\SuanFaMain.java
?????文件???????6799??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\Test.java
?????文件???????5067??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src\WorstFit.java
????..A.SH.?????18432??2008-06-23?09:17??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\Thumbs.db
?????文件??????24013??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\tx_001.png
?????文件??????19644??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\tx_002.png
?????目錄??????????0??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\bin
?????目錄??????????0??2008-06-23?09:16??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL\src
?????目錄??????????0??2008-06-23?09:17??存儲(chǔ)管理——?jiǎng)討B(tài)分區(qū)分配算法\CCGL
............此處省略4個(gè)文件信息
評(píng)論
共有 條評(píng)論