操作系统可变分区存储管理模拟

上传人:206****923 文档编号:91101150 上传时间:2019-06-22 格式:DOC 页数:19 大小:140.50KB
返回 下载 相关 举报
操作系统可变分区存储管理模拟_第1页
第1页 / 共19页
操作系统可变分区存储管理模拟_第2页
第2页 / 共19页
操作系统可变分区存储管理模拟_第3页
第3页 / 共19页
操作系统可变分区存储管理模拟_第4页
第4页 / 共19页
操作系统可变分区存储管理模拟_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《操作系统可变分区存储管理模拟》由会员分享,可在线阅读,更多相关《操作系统可变分区存储管理模拟(19页珍藏版)》请在金锄头文库上搜索。

1、操作系统实验(三)可变分区存储管理模拟实验作者 :顾熙杰准考证号:022502100574报到号 :177实验地点:浙工大计算机中心1) 实验目的理解操作系统中可变分区管理的算法, 掌握分配和回收算法 掌握空闲分区的合并方法 掌握不同的适应算法2) 实验内容建立数据结构建立空闲分区队列根据不同的适应算法建立队列编写分配算法编写回收算法3) 数据结构Private Type MEM_tp fenqu_shouzhi As Integer 分区首地址 fenqu_changdu As Integer 分区长度 fenqu_zhuangtai As Integer 分区状态 -1表示不存在,0表示空

2、闲分区,1表示已经分配的分区 fenqu_huodongjincheng As Integer 该分区正在活动的进程代号End Type4) 程序流程图面向对象程序设计由事件驱动,画流程图比较困难。(1)分配新的分区最先适应 按地址找最优适应,找最小可以满足的 最坏适应,找最大可以满足的 (2)分区回收 既无上邻又无下邻 既有上邻又有下邻 只有上邻 只有下邻 5) 实验中需要改进的地方由于没有使用链表,程序结构比较混乱,需要大大改进,提高可阅读性。 6) 程序代码(VB)Option ExplicitPrivate Declare Function ShellExecute Lib Shell

3、32.dll Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long表示内存分区的结构信息类型的变量类型Private Type MEM_tp fenqu_shouzhi As Integer 分区首地址 fenqu_changdu As Integer 分区长度 fenqu_zhua

4、ngtai As Integer 分区状态 -1表示不存在,0表示空闲分区,1表示已经分配的分区 fenqu_huodongjincheng As Integer 该分区正在活动的进程代号End Type定义最多640个,总共640K内存数组Dim MEM(1 To 640) As MEM_tp表示可以使用的进程代号Dim jincheng(1 To 640) As Integer0表示该进程号可以使用.=1表示该进程号不可以使用表示分配方法Dim fenPEI_fangfa As Integer0=最先分配1=最优分配2=最坏分配Function get_jincheng() As Inte

5、ger取可以使用的进程号Dim i As IntegerFor i = 1 To 640 If jincheng(i) = 0 Then jincheng(i) = 1 get_jincheng = i Exit Function End IfNextget_jincheng = 0End FunctionFunction get_FENQU() As Integer取可以使用的为了表示分区的存储空间,模拟c语言的指针Dim i As IntegerFor i = 1 To 640 If MEM(i).fenqu_zhuangtai = -1 Then get_FENQU = i Exit F

6、unction End IfNextget_FENQU = 0End FunctionFunction get_kong_FENQU(ByVal kj As Integer) As IntegerDim i As IntegerDim MIN_L As IntegerDim MAX_L As IntegerDim MIN_P, MAX_P As Integer分配新的分区Select Case fenPEI_fangfaCase 0 最先适应 按地址找 For i = 1 To 640 If MEM(i).fenqu_zhuangtai = 0 Then If MEM(i).fenqu_cha

7、ngdu = kj Then get_kong_FENQU = i Exit Function End If End If Next iCase 1 最优适应,找最小可以满足的 MIN_L = 10000 For i = 1 To 640 If MEM(i).fenqu_zhuangtai = 0 Then If MEM(i).fenqu_changdu = kj Then If MEM(i).fenqu_changdu = kj Then If MEM(i).fenqu_changdu MAX_L Then MAX_L = MEM(i).fenqu_changdu MAX_P = i End

8、 If End If End If Next i If MAX_P = 0 Then Call MsgBox(内存不足!, vbCritical) Else get_kong_FENQU = MAX_P End If Exit FunctionEnd SelectCall MsgBox(内存不足!, vbCritical)End FunctionPrivate Sub CMD_fenPEI_Click()On Error GoTo err_handelDim kj As IntegerDim i As IntegerDim JC As IntegerDim j As IntegerDim L

9、As IntegerDim FQ As Integer新的进程进入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 = JCIf L 0 Then FQ = get_FENQU() MEM(FQ).fenqu_zhuangtai = 0 MEM(FQ).fenqu_changdu = L

10、 MEM(FQ).fenqu_shouzhi = MEM(i).fenqu_shouzhi + kjEnd IfCall refrensh_formRandomize (Timer)i = Int(Rnd(1) * 6 + 1)Text_FENPEI.Text = Str(i)Exit Suberr_handel:MsgBox 请在文本框内输入正确的数字End SubSub refrensh_form()刷新显示Dim i As IntegerDim cl As LongDim kj As IntegerDim JC As IntegerDim sz As IntegerDim j, k As IntegerFor i = 1 To 640 If MEM(i).fenqu_zhuangtai -1 Then If MEM(i).fenqu_zhuangtai = 1 Then

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号