首页 > 其他分享 >6.s081通关小结

6.s081通关小结

时间:2024-06-01 10:57:28浏览次数:14  
标签:s081 线头 lab 终于 时候 小结 bug 通关

6.s081通关小结

终于是完成6.s081的所有lab了,感慨万千。已经忘了第一次听说这个lab是在什么时候了,只是模模糊糊地感觉是大三。那时的我第一次找到了刷题之外的新方向。但囿于小镇做题家对计算机认识的滞后性,什么Linux、Ubuntu之类的新系统如同一座大山横亘在我于s081之间。又或是在刷题这种片段性的学习中沉浸了太久,偏工程型的lab也令我望而却步。正巧彼时我又发现了一本名为《30天自制操作系统》的书籍,这仿佛成了另一缕穿透迷雾的光。对于任何一个在黑暗中独自摸索前行的来旅人来说,即便是一丝几乎微不可见的光线,也应当被牢牢抓住。就这样,我跟随着这一缕曙光开启了操作系统的学习之路。

大四那一整个暑假我都在折腾这本书,顺便学习Linux。书上所有的代码我都会自己手敲一遍,即便是当时在我看来晦涩难懂的汇编也不例外。但是《30天》这本书本身就有个致命的缺点——难以debug,并且难以兼容现在的键盘。导致调试的时候只能肉眼来核对与书上思路不一致的地方,堪称折磨。最终在day23我倒在了bug上,并且核对了几遍也没发现出错的地方。由于前面进行了太多自己的修改,bug可能出在之前看似正确的代码中。终于,这个bug成为了压死骆驼的最后一根稻草。

我放弃了。

仔细想来我从这本书上学到的真正知识就是把整个大文件拆分成小文件的必要性,以及学会坚持。有了这次的经历,我眼中的s081慢慢褪去了神秘的面纱。

“是时候攀登上这座高峰了”,我对自己如是说。

还记得在完成lab1的时候,什么文件描述符、管道等概念总是让我百思不得其解。那个时候感觉每一步前进都是沉重的——困难的不是解决问题的过程,而是寻找着手点。就像在捋顺一团混乱的丝线,准确拆开每个绳结固然困难重重,但准确找到线头才是一切的根本。彼时的我就处于找线头的阶段,不得不说四处碰壁真的很打击自信心,没有同路者则让这个阶段更加难熬。

所幸这次我坚持了下去,跌跌撞撞地叩开了lab2的大门。其实这次的内容也相当于找线头的过程。但有了lab1的拷打,我慢慢找到了那种可意会不可言传的解题感觉,理清思路然后完成lab变成了一个自然而然的过程。虽然可能进度缓慢,但至少有了着手之处。

再然后就到了pgtbl。说实话这个lab给我带来的感觉是全系列最难,要考虑的点实在太多了,重重陷阱让我一次又一次地跌倒。在网上借鉴其他博客成了唯一的解决之道,然而纵使如此还是没能改变不断 “踩坑—掉坑”的主旋律。东拼西凑搞了好几天之后终于思路变得明了起来,pagetable的概念不说了如指掌至少也是烂熟于心。终于,踩完了无数坑之后我和“All tests passed”相遇了。过程虽然充满坎坷,结局还算是可以接受。

再后来啊,路依旧难走,但有了“坚持”与“信心”加持下的我还是一步一个脚印走踏过来。从挑战cow,到尝试locks,再到攻克fs,直至完成mmap。每个lab都带走了我数不清的脑细胞,又不断巩固着我的道心。当networking最后出现“Score 100/100”的时候,这两个多月的历程终于圆满画上了一个句号。也算是给大三的自己递过去一个差强人意的答复。

为了在周三这天晚上写一篇总结我可是等了五天哈哈哈,终于总结也到了尾声。如今,是时候给这阶段s081的学习历程画上具号了。

不过属于s081的故事还没结束,还有少数遗留的challenge等着我去完成。属于操作系统的学习诗篇也还未完结,6.845将是我下一段征途,虽难必克。

标签:s081,线头,lab,终于,时候,小结,bug,通关
From: https://blog.csdn.net/John_Snowww/article/details/139369993

相关文章

  • SpringBoot案例,通关版
    项目目录此项目为了伙伴们可以快速入手SpringBoot项目,全网最详细的版本,每个伙伴都可以学会,这个项目每一步都会带大家做,学完后可以保证熟悉SpringBoot的开发流程项目介绍:项目使用springboot+mybatis进行开发带你一起写小项目先把初始环境给你们第一步新建springboot项......
  • 关于PHP的webshell免杀小结
    0X00普通的一句话木马(适用于CTF和小站)<?phpeval($_POST['a']);?>//函数的相似替换<?phpassert($_POST['a']);?> <?php@eval($_POST['110']);?>与第一个一句话木马相比多了一个"@"字符,我们发现这个字符的含义是在php语法中表示抑制错误信息即使有错误也不返回;属于不......
  • Android 图片加载glide库 一次通关
    前言Glide是一个由Bumptech开发的开源图片加载库,专门用于Android平台。它被广泛应用于Android应用中,以简化图片加载过程,并提高性能和效率。Glide能够快速加载图片,同时减少页面加载时间和内存消耗。Glide具有强大的缓存机制,支持内存缓存和磁盘缓存,有效地减少重复的图片加载请......
  • Oracle如何诊断远程访问数据库慢/超时等问题小结
    管理维护Oracle数据库的时候,有时候会碰到用户(应用程序)远程连接/访问数据库非常慢,甚至连接超时的问题。这里简单总结一下遇到这类问题的方法,仅供参考,如有疏漏或不足之处,敬请指正。文中部分内容来自官方文档DocID1679567.1[1]遇到这类问题,首先应该检查/排除网络问题,一般来说,有......
  • MySQL的系统变量max_execution_time小结
    参数介绍:MySQL社区版MySQL5.7.8开始,新增了MAX_EXECUTION_TIME这个系统变量,它用来限制SQL语句的执行时间,确切来说是限制只读SELECT语句。如果查询语句的执行时长超过这个阈值,MySQL将自动停止该SQL语句的执行。如果其值为0,表示不启用该超时限制功能。该参数/变量单位是毫秒(milli......
  • Unity (玩家通关胜利的障碍物效果)
    前沿当玩家进过密室逃脱的时候胜利的时候制作通关的物体 右键3Dobject --cube然后改名为GameEnding 然后取消材质的勾选 然后制作一个canvas 右键Ui-image   选中右边的那个 按住 Alt 选中右下角那给个然后平铺 在创建个图片一样的操作然后那图......
  • C++入门(3) 指针和引用的区别|引用的本质|引用小结|inline函数|缺省函数
    一,引用引用和指针的区别1,从语法规则上讲指针变量存储某个实例(变量或者对象)的地址;引用是某个实例的别名程序为指针变量分配内存空间;不为引用分配内存空间指针变量的值可以改变;引用一旦初始化就无法改变指针变量可以为NULL;但是没有空引用指针作为形参需要判断是否为空;引用......
  • 关于字符串的功能函数小结
    笔者做项目过程中,使用了很多关于字符串的C库中自带功能函数,极大便利了项目流程。再次做一个小结,之后若有增加会继续补充。所需采用函数序号函数/描述1char*strcat(char*dest,constchar*src)【char*strncat(char*dest,constchar*src,size_tn)】功能:连接......
  • diffusion model(一):DDPM技术小结 (denoising diffusion probabilistic)
    发布日期:2023/05/18主页地址:http://myhz0606.com/article/ddpm1从直觉上理解DDPM在详细推到公式之前,我们先从直觉上理解一下什么是扩散对于常规的生成模型,如GAN,VAE,它直接从噪声数据生成图像,我们不妨记噪声数据为\(z\),其生成的图片为\(x\)对于常规的生成模型:学习一个解码函......
  • 域控分发、安装、软件的小结
    问题一:MSI/EXE问题二:管理员权限是/否。问题三:软件数量是多/少。问题四:手动选装/策略自动安装问题五:版本校验是/否。一:MSI格式这个就简单了。管理员权限可以忽略,因为我们通过域控来安装。数量多少并没有什么关系,跟执行策略无关。版本校验,可以自动处置。手动选装,发布到用户的软件安......