chapter17

news/2024/11/15 6:17:41/文章来源:https://www.cnblogs.com/hisun9/p/18537307

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的块,然后释放,且不合并即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/829520.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

29. 多线程编程

一、什么是线程线程(thread)它们是同一个进程下执行的,并共享相同的下上文。线程包括开始、执行顺序和结束三部分。它有一个指令指针,用于记录当前运行的上下文。当其它线程运行时,它可以被抢占(中断)和临时挂起(也称为睡眠)—— 这种做法叫做让步(yielding)。当一个…

2024-2025-1 学号 20241301 《计算机基础与程序设计》第七周学习总结

|这个作业属于哪个课程|2024-2025-1-计算机基础与程序设计 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP| |这个作业要求在哪里|2024-2025-1计算机基础与程序设计第一周作业 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276| |这个作业的目标…

go: ubuntu安装go 1.23.3

一,下载 官网: https://go.dev/ 从首页进入到下载页面: 如图:选择适合自己系统的版本 复制下载地址,从命令行下载 $ wget https://go.dev/dl/go1.23.3.linux-amd64.tar.gz 二,安装 1,解压: $ tar -zxvf go1.23.3.linux-amd64.tar.gz 移动到安装目录: $ mv go /usr/local/so…

为何选择Spring AI Alibaba开发智能客服平台?

0 前言 本文来看如何使用Spring AI Alibaba构建Agent应用。 1 需求 智能客服平台,可帮助用户完成机票预定、问题解答、机票改签、取消等动作,具体要求:基于 AI 大模型与用户对话,理解用户自然语言表达的需求 支持多轮连续对话,能在上下文中理解用户意图 理解机票操作相关的…

2024-2025-1 20241307《计算机基础与程序设计》第七周学习总结

作业信息这个作业属于哪个课程 (2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 (2024-2025-1计算机基础与程序设计第七周作业)这个作业的目标作业正文 (2024-2025-1 学号20241307《计算机基础与程序设计》第七周学习总结)教材学习内容总结 《计算机科学概论》第七版…

思通数科AI平台在智慧城市地面垃圾分类中的项目案例分享

一、系统概述 在当今的城市环境管理中,垃圾分类与识别已成为推动环保与资源回收的重要手段。然而,传统的人工垃圾分类方法耗时、效率低,且容易出错,严重制约了垃圾处理的精细化与可持续发展。思通数科的AI平台专注于解决这一行业痛点。我们的系统通过深度学习和计算机视觉技…

用溯流仪见证伏特台风

用溯流仪见证伏特台风 新知识:wayback machine(网站时光机)题目是一个视频链接,需要找到视频中的报告,但是那个时候的报告已经被篡改了有报告的名字,去搜索因为信息已经被改了,所以需要找到以前的版本 使用网站时光机找到这个报告在4月15号的版本下载文件,并把封底的图…

51单片机实现数码管显示

51单片机实现数码管显示 本次的实现效果方式采用模拟进行,芯片为AT89C51,开发软件为keil5,proteus 上代码 代码如下: #include <reg51.h>void delay(unsigned int i);//延时函数unsigned int i=0;void main() {unsigned char button=0,flag=0;unsigned char digitCodes[…

Linux系统下Makefile,出现make: Nothing to be done for ex19.c.的解决办法

如图所示,在做练习19时出现“make: Nothing to be done for ex19.c.”的错误解决方法:如图所示,先make clean,再make 原因:若文件没有改动,.o文件也没有改动,则Linux认为,我不需要对所有的文件做任何事情。 参考资料:https://blog.csdn.net/gwzz1228/article/details/…

2024-2025-1-《计算机基础与程序设计》20241313刘鸣宇

作业信息 这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计) 这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业) 这个作业的目标 <写上具体方面> 作业正文 ... 本博客链接 教材学习内容总结 《计算…

基于Java+SpringBoot心理测评心理测试系统功能实现十

技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML 部分系统功能角色信息控制器Controller、用户信息控制器Controller、咨询师信息详情控制器Controller、心理测试信息控制器Controller、回顾心理测试试卷信息控制器Controller 免费学习:猿来入此免费…

实验三c

任务一 实验代码 button.hpp1 #pragma once2 3 #include <iostream>4 #include <string>5 6 using std::string;7 using std::cout;8 9 // 按钮类 10 class Button { 11 public: 12 Button(const string &text); 13 string get_label() const; 14 …