又申请了

随着春节临近,工作节奏逐渐放缓。尽管如此,仍面临一项新项目的挑战——6E16的调试工作,虽然目前进展不大,但决心在此项目中取得突破,解决更多问题,实现个人技能的提升。

今天的事情不多,群创发邮件过来要过去Debug,但还是没有答应过去!快过年了,工厂都快放假了,事情也不多了。晚上开始弄6E16,没什么头绪!加油,在这个新项目上,一定要有所突破,解更多的Bug,提升自我!

任务描述 本关任务:根据流程图和参考程序,完成模拟内存分配和回收过程。内存空间大小为100,进程数为5,每个进程所需空间为随机产生,大小为1~20,编制程序,首先对5个进程进行内存分配,然后回收指定的进程空间,并进行适当的空闲分区合并操作,要求每次操作结束后都能显示当前的内存分配情况。 相关知识 为了完成本关任务,你需要掌握: 实验原理 如何定义内存块; 分配内存流程; 回收内存流程。 实验原理 使用一个链表来模拟内存存储空间,建立内存块来记录内存分配使用情况,通过随机产生进程及其所需要的内存来模拟真实的进程。通过给进程分配内存及回收来实现动态分区分配存储管理方法。 初始化:链表中只有一个节点,代表整个内存空间,大小为100,起始地址为0,使用标志为0(表示空闲)。 分配阶段:对于进程(5个)及其随机产生的需求空间(每个进程需求空间1~20),从链表中第一个节点所指示的可用内存中进行分配,即进行节点的创建和插入以及相关参数的修改。 回收阶段:要求用户输入指定回收的进程空间,根据用户指定的进程名,进行单链表查找,定位到指定进程所代表的节点后,再判断本次要回收的进程内存空间其左右节点是否为空闲块,如若是,则需要进行空闲块合并,在程序里则需要进行节点删除和相关参数的修改。如果不是,则直接修改对应节点参数即可。 图示说明: 假设内存空间初始阶段为100,进程数为5,每个进程随机产生的内存需求空间为15,14,17,18,12。则表示内存中各内存块的链表变化过程为: 分配阶段 初始状态: 进程1申请大小为15的内存空间,为其分配后: 进程2又申请大小为14的内存空间,为其分配后: 进程3又申请大小为17的内存空间,为其分配后: 进程4又申请大小为18的内存空间,为其分配后: 进程5又申请大小为12的内存空间,为其分配后: 回收阶段: 假设回收进程内存空间的顺序3,2,4,1,5。则内存中链表的变化过程为: 如何定义内存块 如上面图示所示,对于内存块数据结构的定义,其包括参数 ①进程名name; ②起始地址 address; ③长度 length; ④标志 flag,表示该块是否被分配。 于是,内存块被定义为结构体: struct MEMORY_BLOCK { i
05-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值