操作系统可变分区存储管理模拟Word文档格式.docx

上传人:b****0 文档编号:13213695 上传时间:2022-10-08 格式:DOCX 页数:20 大小:74.47KB
下载 相关 举报
操作系统可变分区存储管理模拟Word文档格式.docx_第1页
第1页 / 共20页
操作系统可变分区存储管理模拟Word文档格式.docx_第2页
第2页 / 共20页
操作系统可变分区存储管理模拟Word文档格式.docx_第3页
第3页 / 共20页
操作系统可变分区存储管理模拟Word文档格式.docx_第4页
第4页 / 共20页
操作系统可变分区存储管理模拟Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

操作系统可变分区存储管理模拟Word文档格式.docx

《操作系统可变分区存储管理模拟Word文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统可变分区存储管理模拟Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

操作系统可变分区存储管理模拟Word文档格式.docx

根据不同的适应算法建立队列

编写分配算法

编写回收算法

3)数据结构

PrivateTypeMEM_tp

fenqu_shouzhiAsInteger'

分区首地址

fenqu_changduAsInteger'

分区长度

fenqu_zhuangtaiAsInteger'

分区状态-1表示不存在,0表示空闲分区,1表示已经分配的分区

fenqu_huodongjinchengAsInteger'

该分区正在活动的进程代号

EndType

4)程序流程图

面向对象程序设计由事件驱动,画流程图比较困难。

(1)分配新的分区

最先适应按地址找

最优适应,找最小可以满足的

最坏适应,找最大可以满足的

(2)分区回收

既无上邻又无下邻

既有上邻又有下邻

只有上邻

只有下邻

5)实验中需要改进的地方

由于没有使用链表,程序结构比较混乱,需要大大改进,提高可阅读性。

6)程序代码(VB)

OptionExplicit

PrivateDeclareFunctionShellExecuteLib"

Shell32.dll"

Alias"

ShellExecuteA"

(ByValhwndAsLong,ByVallpOperationAsString,ByVallpFileAsString,ByVallpParametersAsString,ByVallpDirectoryAsString,ByValnShowCmdAsLong)AsLong

'

表示内存分区的结构信息类型的变量类型

定义最多640个,总共640K内存数组

DimMEM(1To640)AsMEM_tp

表示可以使用的进程代号

Dimjincheng(1To640)AsInteger

0表示该进程号可以使用

.>

=1表示该进程号不可以使用

表示分配方法

DimfenPEI_fangfaAsInteger

0=最先分配

1=最优分配

2=最坏分配

Functionget_jincheng()AsInteger

取可以使用的进程号

DimiAsInteger

Fori=1To640

Ifjincheng(i)=0Then

jincheng(i)=1

get_jincheng=i

ExitFunction

EndIf

Next

get_jincheng=0

EndFunction

Functionget_FENQU()AsInteger

取可以使用的为了表示分区的存储空间,模拟c语言的指针

IfMEM(i).fenqu_zhuangtai=-1Then

get_FENQU=i

get_FENQU=0

Functionget_kong_FENQU(ByValkjAsInteger)AsInteger

DimMIN_LAsInteger

DimMAX_LAsInteger

DimMIN_P,MAX_PAsInteger

分配新的分区

SelectCasefenPEI_fangfa

Case0'

Fori=1To640

IfMEM(i).fenqu_zhuangtai=0Then

IfMEM(i).fenqu_changdu>

=kjThen

get_kong_FENQU=i

Nexti

Case1'

MIN_L=10000

IfMEM(i).fenqu_changdu<

MIN_LThen

MIN_L=MEM(i).fenqu_changdu

MIN_P=i

IfMIN_P=0Then

CallMsgBox("

内存不足!

"

vbCritical)

Else

get_kong_FENQU=MIN_P

Case2'

最坏适应,找最大可以满足的

MAX_LThen

MAX_L=MEM(i).fenqu_changdu

MAX_P=i

IfMAX_P=0Then

get_kong_FENQU=MAX_P

EndSelect

CallMsgBox("

PrivateSubCMD_fenPEI_Click()

OnErrorGoToerr_handel

DimkjAsInteger

DimJCAsInteger

DimjAsInteger

DimLAsInteger

DimFQAsInteger

新的进程进入

kj=CInt(Text_FENPEI.Text)

JC=get_jincheng()

i=get_kong_FENQU(kj)

MEM(i).fenqu_zhuangtai=1

L=MEM(i).fenqu_changdu-kj

MEM(i).fenqu_changdu=kj

MEM(i).fenqu_huodongjincheng=JC

IfL>

0Then

FQ=get_FENQU()

MEM(FQ).fenqu_zhuangtai=0

MEM(FQ).fenqu_changdu=L

MEM(FQ).fenqu_shouzhi=MEM(i).fenqu_shouzhi+kj

EndIf

Callrefrensh_form

Randomize(Timer)

i=Int(Rnd

(1)*6+1)

Text_FENPEI.Text=Str(i)

ExitSub

err_handel:

MsgBox"

请在文本框内输入正确的数字"

EndSub

Subrefrensh_form()

刷新显示

DimclAsLong

DimszAsInteger

Dimj,kAsInteger

IfMEM(i).fenqu_zhuangtai<

>

-1Then

IfMEM(i).fenqu_zhuangtai=1Then

If(iMod2)=1Then

cl=Label4.BackColor

cl=Label5.BackColor

cl=Label6.BackColor

JC=MEM(i).fenqu_huodongjincheng

sz=MEM(i).fenqu_shouzhi

kj=MEM(i).fenqu_changdu

j=sz+1

FG.TextMatrix(j,1)=Str(i)

FG.TextMatrix(j,2)=Str(MEM(i).fenqu_shouzhi)+"

K"

FG.TextMatrix(j,3)=Str(MEM(i).fenqu_changdu)+"

FG.TextMatrix(j,4)=Str(MEM(i).fenqu_zhuangtai)+"

已分配"

FG.TextMatrix(j,5)=Str(JC)+"

号进程"

ElseIfMEM(i).fenqu_zhuangtai=0Then

未分配"

FG.TextMatrix(j,5)="

Fork=1To5

FG.Col=k

Forj=sz+1Tosz+kj

FG.Row=j

FG.CellBackColor=cl

Ifj<

sz+1Then

FG.TextMatrix(FG.Row,FG.Col)="

Nextj

Nextk

PrivateSubCMD_HUISHOU_Click()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1