首页 > 其他分享 >chapter17

chapter17

时间:2024-11-09 21:33:48浏览次数:3  
标签:SIZESORT 列表 chapter17 BEST 使用 分配 空闲

malloc.py参数

img

中文版

img

第一题

问题

1.首先运行 flag -n 10 -H 0 -p BEST -s 0 来产生一些随机分配和释放。你能预测malloc()/free()会返回什么吗?你可以在每次请求后猜测空闲列表的状态吗?随着时间的推移,你对空闲列表有什么发现?

img
img

空闲列表不会合并,导致外部碎片越来越多

第二题

问题

2.使用最差匹配策略搜索空闲列表(-p WORST)时,结果有何不同?什么改变了?

img
img

因为每次找最大的匹配,空闲列表又不会合并,所以容易产生更多的外部碎片

第三题

问题

如果使用首次匹配(-p FIRST)会如何?使用首次匹配时,什么变快了?

img
img

搜索空闲列表的时间变少了

第四题

问题

对于上述问题,列表在保持有序时,可能会影响某些策略找到空闲位置所需的时间。使用不同的空闲列表排序(-l ADDRSORT,-l SIZESORT +,-l SIZESORT-)查看策略和列表排序如何相互影响。

使用-p BEST -l ADDRSORT

img
img

使用-p BEST -l SIZESORT +

img
img

使用-p BEST -l SIZESORT -

img
img

使用-p WORST -l ADDRSORT

img
img

使用-p WORST -l SIZESORT +

img
img

使用-p WORST -l SIZESORT -

img
img

使用-p FIRST -l ADDRSORT

img
img

使用-p FIRST -l SIZESORT +

img
img

使用-p FIRST -l SIZESORT -

img
img

对于最优匹配和最差匹配,如果不调整算法,时间不会有影响。(但是一般应该对应调整算法)

同时注意插入空闲块时需要插入空闲列表,来达成某种排序方式,所以在free操作时会消耗更多时间。

第五题

问题

合并空闲列表可能非常重要。增加随机分配的数量(比如说-n 1000)。随着时间的推移,大型分配请求会发生什么?在有和没有合并的情况下运行(即不用和采用-C 标志)。你看到了什么结果差异?每种情况下的空闲列表有多大?在这种情况下,列表的排序是否重要?

太长了,只给出命令,分别用这两条命令跑一遍就知道了

python malloc.py -n 1000 -c
python malloc.py -n 1000 -C -c

这里给出最后的空闲列表状态:

对于第一条命令

img

对于第二条命令

img

如果没有合并。那么空闲列表会有很多外部碎片,可能没有办法使用大型分配请求。

有合并则正常使用。

第六题

问题

将已分配百分比-P 改为高于 50,会发生什么?它接它 100 时分配会怎样?接它 0会怎样?

使用 -P 100

img

使用 -P 0

img

P越高,分配操作越多,剩余空间越少

第七题

问题

要生成高度碎片化的空闲空间,你可以提出怎样的具体请求?使用-A 标志创建碎片化的空闲列表,查看不同的策略和选项如何改变空闲列表的组织

有很多种方法,这里给出两种思路:

运行很多分配操作,且不执行free(释放)操作即可

使用最差适应算法申请大量空间大小为1的块,然后释放,且不合并即可

标签:SIZESORT,列表,chapter17,BEST,使用,分配,空闲
From: https://www.cnblogs.com/hisun9/p/18537307

相关文章