深入理解计算机系统(CSAPP):malloc-lab 今天的报告是malloc lab,要求我们自己写一个动态内存分配程序,完成malloc、free等功能。由于需要提高内存的使用率与操作效率,我选择分离的空闲链表来管理内存块。数据结构上就是几个双向链表,不是很困难。实验要求不能使用数组,这一点真是麻烦,害得我手动定义了16个链表头指针。
/* * mm_realloc - Implemented simply in terms of mm_malloc and mm_free */ void *mm_realloc(void *ptr, size_t size){ size_t asize, ptr_size; void *new_bp; if(ptr == NULL) return mm_malloc(size); if(size == 0){ mm_free(ptr); return NULL; } asize = size<=DSIZE ?
5.本实验环境WORD=4=sizeof(void *),DWORD=8(gcc -m32) 思路要点及其实现: 对于速度(thru)而言,我们需要关注malloc、free、realloc每次操作的复杂度。对于内存利用率(util)而言,我们需要关注internal fragmentation(块内损失)和external fragmentation(块是分散不连续的,无法整体利用),即我们free和malloc的时候要注意...
MallocLab 开始日期:22.2.8 操作系统:linux 调试工具:gdb Link:CS:APP3e Pre-knowledge 完全阅读CSAPP9.9章节,该章节有Implicit list + First fit + LIFO的全实现 本文主要参考2015 fall的ppt及rec,
/* What if malloc returned NULL? */ if (!q) { return NULL; } q->head = NULL; q->tail = NULL; q->size = 0; return q; } /** * @brief Frees all memory used by a queue * @param[in] q The queue to free */ void queue_free(queue_t *q) { ...
在CMU 15-213 ICS课中,同学们对Cache Lab的评价是:终于开始进入正题,有点难了。的确,不考虑Arch Lab(ICS课不讲CSAPP第四章),Cache Lab 与前三个实验相比,难度大了很多,而且需要自己从零开始写一个C程序。…
1. 实验目的 本次实验室由两部分组成。第一部分是要模拟Cahce的行为,理解Cache的原理。第二部分将优化一个小的矩阵转置功能,目的是最大程度地减少高速缓存未命中的次数。 2. 实验准备 实验用到的所有文件在CSAPP官网都可以找到。我的运行环境Ubuntu 16.04,Gcc 5.4.0。
定义一个cache[S][E]大小的二维数组(using malloc). 这样cache就模拟好了。 代码语言:javascript 复制 voidinit(){cache=(cache_line**)malloc(sizeof(cache_line*)*S);//malloc cache[S][E]for(int i=0;i<S;i++)*(cache+i)=(cache_line*)malloc(sizeof(cache_line)*E);for(int i=0...
1:02:01 六个实验的介绍1:02:08 数据实验1:03:24 炸弹实验1:06:09 攻击实验1:07:11 缓存实验1:09:27 Shell实验1:09:55 malloc实验1:12:20 proxy实验 2020-02-12 17:39451回复 BLBL_songye123谢谢学委,很受用,哈哈 2020-09-26 18:155回复 TLCFY眼 2020-12-16 01:353回复 八大珊人回复@TLCFY...
sendmail真是被黑出翔Lab4:不透明的Cache,又是类似于Lab2的黑箱Lab,通过给几个虚拟的Cache提供输入,以及Cache给你返回的Hit/Miss信息判断Cache的规格。对了解Cache的结构很有帮助Lab5:手写一个malloc,嗯,你没看错。不过其中最痛苦的块合并功能已经给你写好了,你只要知道malloc、free的流程就可以了,侯捷老师课上学...