分页存储管理算法VB程序演示.docx
《分页存储管理算法VB程序演示.docx》由会员分享,可在线阅读,更多相关《分页存储管理算法VB程序演示.docx(12页珍藏版)》请在冰豆网上搜索。
分页存储管理算法VB程序演示
计算机与信息工程学院计算机科学与技术专业02级
《操作系统原理》课程设计
课题名称:
分页存储管理算法VB程序演示
姓名:
高远
班级:
计算机02-13班
学号:
26
课程设计起止时间:
2005.1.3—2005.1.8
指导教师:
杨兆楠成绩:
课程设计任务书
《操作系统原理》课程设计任务书(同学填写)
设计题目:
分页存储管理算法VB程序演示
任务下达时间:
2005-1-3
任务完成时间:
2005-1-7
指导教师:
杨兆楠
指导教师评语(教师填写)
一、所得结果:
二、存在问题:
成绩
评阅人
一设计说明
这个程序是由VisualBasic6.0所编,它主要演示了关于分页存储管理中的随机分页的过程,程序可演示4个作业的分配,但总长度不可打于64,它可以显示作业号、页表长度、作业长度、状态(空项、已分配)。
通过点击按键“我有作业要分配”来激活分配。
程序共由两个表格、一个按键组成。
关于不同的作业运用了不同的颜色,可以让读者看出这个页分配给了哪个作业。
“空项”表示该作业还不存在,“已分配”表示该作业已分配完了,对照作业号上的颜色,可以看出哪几页是被分配给该作业的。
二、详细设计:
1)主要系统函数说明:
无
2)流程图:
N
Y
N
3)程序代码:
全局变量声明:
Publicp1AsInteger
Publicp2AsInteger
Publicp3AsInteger
Publicp4AsInteger
Publicp5AsInteger
Publicp6AsInteger
Publicp7AsInteger
Publicp8AsInteger
Publicp9AsInteger
Publicp10AsInteger
Publicp11AsInteger
Publicp12AsInteger
Publicp13AsInteger
Publicp14AsInteger
Publicp15AsInteger
Publicp16AsInteger
PubliccoloraAsSingle'颜色值
DimmAsInteger'作业信号量
DimsssyyyAsInteger
DimssyyAsString'剩余页信号量1
DimyAsInteger
PublicnnnAsInteger'剩余页信号量2
窗体声明:
PrivateSubCommand1_Click()
DimnAsInteger
DimnnAsInteger
DimacountAsInteger
DimrrrrAsInteger
m=m+1
'剩余字节数的显示
Ifsssyyy=0Theny=64
ssyy=y
MsgBox("可分配的剩余字节数为"+ssyy)
'作业分配激活
n=InputBox("请求分配的字节大小(0~64)","作业分配")
nnn=n+nnn
nn=n\4
'单次分配大小限定,超过则退出
Ifn>64Then
MsgBox("对不起你要求分配的字节数太大")
End
EndIf
'总分配大小限定,超出则退出
Ifnnn>64Then
MsgBox("对不起容量不够")
nnn=nnn-n
End
EndIf
'作业表
IfnMod4<>0Then
nn=nn+1
EndIf
Ifaa=0Then
IfLabel15.Caption="空项"Then
Label8.Caption=nn
Label12.Caption=n
Label15.Caption="已分配"
aa=1
GoToh
EndIf
EndIf
Ifaaa=0Then
IfLabel16.Caption="空项"Then
Label13.Caption=n
Label10.Caption=nn
Label16.Caption="已分配"
aaa=1
GoToh
EndIf
EndIf
Ifaaaa=0Then
IfLabel17.Caption="空项"Then
Label11.Caption=nn
Label14.Caption=n
Label17.Caption="已分配"
aaaa=1
GoToh
EndIf
EndIf
Ifaaaaa=0Then
IfLabel20.Caption="空项"Then
Label18.Caption=nn
Label19.Caption=n
Label20.Caption="已分配"
aaaaa=1
GoToh
EndIf
EndIf
'页面变换表+存储分块表
h:
acount=nn
GoToa
a:
Ifacount<>0Then
rrrr=Rnd()*15
SelectCaserrrr
Case0
Ifp1<>1Then
Callp
Picture1.BackColor=colora
p1=1
acount=acount-1
GoToa:
EndIf
Case1
Ifp2<>1Then
Callp
Picture2.BackColor=colora
p2=1
acount=acount-1
GoToa:
EndIf
Case2
Ifp3<>1Then
Callp
Picture3.BackColor=colora
p3=1
acount=acount-1
GoToa:
EndIf
Case3
Ifp4<>1Then
Callp
Picture4.BackColor=colora
p4=1
acount=acount-1
GoToa:
EndIf
Case4
Ifp5<>1Then
Callp
Picture5.BackColor=colora
p5=1
acount=acount-1
GoToa:
EndIf
Case5
Ifp6<>1Then
Callp
Picture6.BackColor=colora
p6=1
acount=acount-1
GoToa:
EndIf
Case6
Ifp7<>1Then
Callp
Picture6.BackColor=colora
p7=1
acount=acount-1
GoToa:
EndIf
Case7
Ifp8<>1Then
Callp
Picture7.BackColor=colora
p8=1
acount=acount-1
GoToa:
EndIf
Case8
Ifp9<>1Then
Callp
Picture8.BackColor=colora
p9=1
acount=acount-1
GoToa
EndIf
Case9
Ifp10<>1Then
Callp
Picture9.BackColor=colora
p10=1
acount=acount-1
GoToa
EndIf
Case10
Ifp11<>1Then
Callp
Picture10.BackColor=colora
p11=1
acount=acount-1
GoToa:
EndIf
Case11
Ifp12<>1Then
Callp
Picture11.BackColor=colora
p12=1
acount=acount-1
GoToa
EndIf
Case12
Ifp13<>1Then
Callp
Picture12.BackColor=colora
p13=1
acount=acount-1
GoToa
EndIf
Case13
Ifp14<>1Then
Callp
Picture13.BackColor=colora
p14=1
acount=acount-1
GoToa:
EndIf
Case14
Ifp15<>1Then
Callp
Picture14.BackColor=colora
p15=1
acount=acount-1
GoToa
EndIf
Case15
Ifp16<>1Then
Callp
Picture15.BackColor=colora
p16=1
acount=acount-1
GoToa
EndIf
EndSelect
Ifacount<>0Then
GoToa:
EndIf
EndIf
EndSub
'颜色分配子程序
PublicSubp()
Ifm=1Then
colora=&HFF80FF
ElseIfm=2Then
colora=&HFFFF00
ElseIfm=3Then
colora=&H80FF80
ElseIfm=4Then
colora=&HFF00FF
EndIf
y=y-4
sssyyy=1
EndSub
4)关键语句注释:
见程序代码粗斜体字
三、运行结果:
四、分析结果:
连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。
如果允许将一个进程直接分散地装入到许多不相邻的分区中,则无须再进行“紧凑”。
基于这一思想而产生了离散分配方式。
如果离散分配的基本单位是页,则称为分页存储管理方式。
(1)作业表(JT)整个系统一张表。
每个作业在作业表中对应一个表目,包括该作业的页表始址、页表长度和状态信息。
当该作业调度程序调度到某个作业时,如果存储要求可以得到满足,就在此表上进行登记。
当作业轮到处理时,就在此表把也表始址和页表长度送到状态控制寄存器中。
(2)存储分块表(MBT)整个系统一张表。
该表中每一表目对应一个存储块,记录了该块的状态:
已分配或空闲。
(3)页表变换表(PMT)每个作业一张表。
页面变换表,用于该作业的地址变换,该作业有多少页面就有多少表目,表目内记录对应的存储块号。
分页存储管理仍然存在如下严重缺点:
1.采用动态地址变换会增加计算机成本和降低处理机的速度
2.各种表格要占用一定容量的主存空间,而且还要花费一部分处理机时间来建立和管理这些表格
3.虽然说碎片消除了,但每个作业的最后一页一般都有不能充分利用的空白区。
例如,页面大小为4KB,作业需要3KB,则为其分配一个物理存储块,但有1KB空间被浪费了。
4.存储扩充问题仍未得到解决。
当没有足够的可用空间能装下整个作业地址空间时,该作业还是无法运行的。
五、参考文献
《操作系统教程》2004版西北工业大学出版社
《VisualBasic程序设计教程(第二版)》刘炳文清华大学出版社