
CSAPP
文章平均质量分 88
深入理解计算机系统实训
axiu呀
三年前无名小卒,三年后名满江湖
展开
-
计算机系统基础实训四-LinkLab实验
即在0x60+c=0x6c处,用hexedit phase1.o命令修改phase1.o找到0x6c处,修改0x6c+1的值为学号十六进制ASCII码。这个是“第一组”的,以此类推可以找到”puts组”的位置,”FC FF FF FF FF FF FF”是-4的补码也验证了我们的计算。使用objdump -rd phase1.o查看elf文件内容,找到输出的.data 节中偏移量为32的位置。从这里可以看出上面的.data+10并不是真的temp的值,而是.symtab里的value才是它的偏移量。原创 2024-01-13 17:33:14 · 3618 阅读 · 1 评论 -
计算机系统基础实训八—ProxyLab实验
本次实验不仅加深了我对网络编程、Web服务器开发与并发处理、缓存管理技术的深度理解,还充分锻炼了我的实践操作能力。通过亲自设计并实现一个实际的HTTP代理程序,我不仅掌握了协议的精髓,也对线程并发控制、数据结构设计有了更加深入的领悟。这次经历让我在实践中体会到了网络编程的魅力,更让我对HTTP协议的每一个细节有了更细腻的认识,同时并发控制与数据处理技巧的实践让我在实战中得到了锻炼。我将针对本次实验中发现的不足之处,如对特定协议细节的掌握不够熟练、并发策略的优化空间等问题,进行深入学习。原创 2024-06-22 16:36:03 · 1089 阅读 · 0 评论 -
计算机系统基础实训七-MallocLab实验
在本次计算机系统基础实验中,我深入了解并实践了动态内存分配器的工作原理,特别是显式分配器的设计与实现。通过C语言,我在Ubuntu系统上编写了具备显式内存分配器,实现了内存的高效管理,从初始化、释放、重分配、调整大小直至优化分配一整套流程,解决了内存碎片化、资源不足、泄露、分配效率低效等问题,提升整体利用,实践展现了内存对指针、系统编程、内存管理的综合应用能力,实验的成果不仅在于实现了分配器本身,更在于对内存管理的深入理解与解决复杂问题的能力提升。原创 2024-06-22 16:27:56 · 986 阅读 · 0 评论 -
计算机系统基础实训六-ShellLab实验
命令行的第一个字符串要么是一个内置命令的名称,要么是一个可执行文件的路径名,剩下的字符串则为命令行参数。这里的命令行其实根据前面的就很好理解了,就是给出两个作业,一个在前台工作,另一个在后台工作,接下来传递SIGINT指令,然后调用内置指令jobs来查看此时的工作信息,来对比出是不是只将SIGINT转发给前台作业。ps –a 显示所有进程,这里是有两个进程的,mysplit创建了一个子进程,接下来发送指令SIGINT,所以进程组中的所有进程都应该停止,接下来调用pl来查看该进程组中的每个进程是否都停止了。原创 2024-06-22 16:22:31 · 1693 阅读 · 0 评论 -
计算机系统基础实训五—CacheLab实验
本次CacheLab实验中,我编写了缓存模拟器,模拟内存引用轨迹,遵循LRU策略,支持多参数设置,编译无警告,与标准模拟器对比验证准确。针对32×32、64×64、61×67矩阵,优化转置函数以减少缓存未命中的次数。对32×32矩阵,设8×8子块、用临时变量避免对角块冲突,未命中降为343次(满分要求<300次)。对64×64矩阵,初试8×4子块后未达标(1651次),改用4个4×4子块,优化数据访问,满足满分要求(<1300次)。虽然这个实验看上去不难,但是我还是需要借助一定的资源完成该实训。原创 2024-06-22 16:12:18 · 1722 阅读 · 0 评论 -
计算机系统基础实训三—AttackLab实验
通过这两个验室,我显著提高了使用GDB的熟练程度,并对程序执行有了更深入的了解。实验室的结构化和循序渐进的设计有助于以启发性的方式学习。老师提供的富有洞察力和清晰的图片提示对减少混淆非常有帮助。展望未来,提供更多真实世界的案例、调试练习的错误场景、程序执行的可视化、编码练习将进一步增强学习体验。我也会继续通过积极的练习来磨练我自己的GDB调试技能。原创 2024-01-10 19:27:08 · 3869 阅读 · 1 评论 -
计算机系统基础实训二—BinaryBomb实验
这一次的bomb实验,包含了计算机系统中第三章汇编语言的几乎所有知识点。通过本次的练习,我的汇编语言能力获得了很好的锻炼,对于一些重要知识点(如跳转表,循环)的知识点,掌握的更加牢靠。而本实验中包含的许多有趣实用的汇编语言技巧(如一些精巧的中间变量的使用、灵活的jump跳转指令的运用)使我更加注意编程技巧的学习。原创 2024-01-08 10:17:34 · 3099 阅读 · 1 评论 -
计算机系统基础实训一—数据表示与运算实验
其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。实验的要求:需要注意给出的可以使用的运算符及最大个数,除了float类型的两个操作函数可以使用if-else条件语句外,其它函数只能用顺序结构进行代码设计和实现。2.补码运算:列出了bits.c中一组使用整数的补码表示的函数。原创 2024-01-06 13:44:14 · 515 阅读 · 0 评论