高校网站推广方案,wordpress虚拟商品主题,绍兴易网网站开发,什么是网站制作app课程作业-第十七章#xff1a;
17.1首先以标志flag -n 10 -H 0 -p BEST -s 0运行程序来产生一些随机的分配和空闲。你能预测malloc()/free()会返回什么吗#xff1f;你可以在每次请求后猜测空闲列表的状态吗#xff1f;随着时间的推移#xff0c;你对空闲列表有什么发现
17.1首先以标志flag -n 10 -H 0 -p BEST -s 0运行程序来产生一些随机的分配和空闲。你能预测malloc()/free()会返回什么吗你可以在每次请求后猜测空闲列表的状态吗随着时间的推移你对空闲列表有什么发现
答
使用以下命令./malloc.py -n 10 -H 0 -p BEST -s 0来模拟内存的随机分配和释放过程。模拟程序设定了一块大小为100的空间其基地址为1000头部大小为0并采用了最优匹配的分配策略。
首先尝试分配一个大小为3的空间模拟程序返回了起始地址1000此时内存列表中剩余一个大小为97的空闲块。当释放这块空间后模拟程序返回0表示释放成功此时内存列表中包含两个空闲块大小分别为3和97。
接下来分配一个大小为5的空间得到地址1003此时内存列表更新为两个空闲块大小分别为3和92。再次释放后内存列表中出现了三个空闲块大小分别为3、5和92。
然后分配一个大小为8的空间模拟程序返回地址1008此时内存列表更新为三个空闲块大小分别为3、5和84。释放后内存列表中的空闲块数量增加到四个大小分别为3、5、8和84。
在第四次分配时尽管存在一个大小为8的空闲块但模拟程序仍然返回了地址1008这可能是由于模拟程序的设计或特定规则导致的。释放后内存列表的状态保持不变。
第五次分配大小为2的空间时模拟程序返回了地址1000这意味着它从大小为3的空闲块中分割出了一部分。此时内存列表更新为四个空闲块大小分别为1、5、8和84。
最后在第六次分配中请求一个大小为7的空间模拟程序返回了地址1008并将之前大小为8的空闲块分割为两个块。此时内存列表中的空闲块大小变为1、5、1和84。
如下图所示 可以使用带有-c参数的命令./malloc.py -n 10 -H 0 -p BEST -s 0 -c来查看模拟的详细结果。结果显示模拟过程与之前的分析是一致的。然而模拟程序在空闲块的管理上并没有实现合并功能可能会导致随着时间的推移内存碎片逐渐增多。如下图所示 17.3如果使用首次匹配-p FIRST会如何使用首次匹配时什么变快了
答
使用命令./malloc.py -n 10 -H 0 -p FIRST -s 0 -c可以观察到首次分配策略的实际效果。如下图所示 与BEST分配策略相比FIRST分配策略在分配内存时所需搜索的元素数量明显减少。这是因为首次分配策略仅需找到第一个满足需求的空闲块即可无需像最优分配策略那样每次都要遍历所有空闲块。因此使用FIRST分配策略时查找空闲块所消耗的时间将大幅减少。
17.4对于上述问题列表在保持有序时可能会影响某些策略找到空闲位置所需的时间。使用不同的空闲列表排序-l ADDRSORT-l SIZESORT -l SIZESORT-查看策略和列表排序如何相互影响。
答
经过对比不同分配策略在不同空闲列表排序方式下的分配情况发现以下规律
①对于最优BEST和最差WORST这样的分配策略空闲列表的排序方式并不会对其效率产生任何影响。无论空闲块如何排列这两种分配策略在每次分配时都需要全面遍历所有的空闲块。
②但是对于首次FIRST分配策略来说情况就有所不同。空闲列表的排序方式会直接影响其分配效率。这是因为首次分配策略的核心思路是找到首个足够大的空闲块因此空闲块的排列顺序对于其分配效率至关重要。
综上所述分配策略的效率与其具体的执行思路紧密相关而空闲列表的排序方式则是对部分分配策略效率产生影响的因素之一。
具体的模拟结果如下图所示
1BEST分配策略 2FIRST分配策略 3WORST分配策略