您所在位置: 网站首页 / 实验3存储管理模拟.docx / 文档详情
实验3存储管理模拟.docx 立即下载
2025-08-27
约2.1万字
约38页
0
30KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

实验3存储管理模拟.docx

实验3存储管理模拟.docx

预览

免费试读已结束,剩余 33 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验3存储管理模拟

第一篇:实验3存储管理模拟计算机操作系统实验存储管理模拟实验三存储管理模拟一、内容补充说明实验中固定内存分区采用结构体数组实现,分区信息采用结构体初始化实现。由于结构体中含string类,VC++不能对含string类的结构体初始化,这里采用MinGW编译器作为程序平台。MinGW,即MinimalistGNUForWindows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用GCC(GNUCompilerC)产生Windows32程序。实际上MinGW并不是一个C/C++编译器,而是一套GNU工具集合。除开GCC(GNU编译器集合)以外,MinGW还包含有一些其他的GNU程序开发工具(比如gawkbison等等)。开发MinGW是为了那些不喜欢工作在Linux(FreeBSD)操作系统而留在Windows的人提供一套符合GNU的GNU工作环境。内存的分配采用“最先适应算法”实现,由于是固定分区,采用该算法不仅简单,而且保证效率。二、分析和设计1.理论分析初始状态内存中没有作业运行;以后每5秒钟随机生成一个作业,如果不能满足作业需求(主存中没有分区能够容纳的下),则丢弃该作业。作业以秒为单位进行驱动,当一个作业运行时间结束后将释放内存空间。2.总体设计分区信息采用初始化实现。作业以秒为单位进行驱动。作业的生成、内存的释放采用永真循环实现,当作业全部运行完后跳出循环。新作业的大小和运行时间由随机数函数rand生成。结构体Job用于生成新作业时用;结构体District是内存分区,作业分配成功后,作业的信息全部保存在District内,不再由专门的作业队列记录。作业运行时间由District[i].Remainder记录,当每秒驱动一次时,时间将减少一秒。当时间减少为0时,作业运行结束,释放内存空间。每分配一个作业,变量Jump自加一次;每释放一个作业时Jump自减一次。因为作业先分配、内存后释放,所以当作业都运行完时Jump必定等于初始值,这时程序跳出永真循环。三、详细实现for(intj=0,clock=0,flag=0;1;clock++,flag=0,Sleep(1000))//总循环,永真循环,flag为作业分配标志,clock为作业产生时钟,Sleep为程序步进驱动{if(j//每5秒产生一个新作业{p=newJob;//产生新作业……for(intk=0;kif(District_table[k].Job_size==0&&p->Job_size//如果分区未分配并且作业大小小于分区大小{District_table[k].Job_num=j;//分配内存,并将作业信息保存至分区信息中……for(intk=0;kif(District_table[k].Job_size!=0)//如果分区中有作业运行District_table[k].Remainder-=1;//程序步进驱动,作业运行减1……for(intt=0;t//如果分区中有作业运行,并且作业已运行完成计算机操作系统实验存储管理模拟{District_table[t].Job_size=0;//释放内存……四、操作界面操作界面为命令提示符界面,实验截图如下:1.编译、连接界面计算机操作系统实验存储管理模拟五、心得体会程序最后跳出永真循环是用break语句。原来是用goto语句,用break语句或exit语句应该也是可以的,但运行后死活都跳不出来,后来不知道为什么又好了。MinGW是一个很好的编译器,安装包小、程序文件小、绿色环保、速度快、效率高。另外,还有很多人性化的设计,比如:现实代码行数、网格显示、配对括号激活时高亮显示方便检查、括号代码折叠方便查看上下段程序等等。可惜WindowsVista用户没福气,幸好我是WindowsXP。六、附录#include#include#includeusingnamespacestd;计算机操作系统实验存储管理模拟cout//打印内存分区内容cout>Counter;for(intj=0,clock=0,flag=0;1;clock++,flag=0,Sleep(1000))//总循环,永真循环,flag为作业分配标志,clock为作业产生时钟,Sleep为程序步进驱动{if(j//每5秒产生一个新作业{p=newJob;//产生新作业p->Job_size=rand()%34+1;//作业大小随机p->Job_time=rand()%40+1;//作业运行时间随机coutJob_sizeJob_timefor(intk=0;kif(District_table[k].Job_size==0&&p->Job_size//如果分区未分配并且作业大小小于分区大小{Di
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

实验3存储管理模拟

文档大小:30KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用