自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 csapp lab1 data-lab记录(四)

【代码】csapp lab1 data-lab记录(四)

2024-09-11 10:38:43 143

原创 csapp lab1 data-lab记录(三)

【代码】csapp lab1 data-lab记录(三)

2024-08-31 16:01:53 141

原创 csapp lab1 data-lab记录(二)

此时我们只需要判断符号位了,当a,b均大于等于0时,a和b的符号位肯定为0。所以我们分别将a,b右移31位,当a,b均为0时,判断为真。

2024-08-15 22:51:57 206

原创 csapp lab1 data-lab记录(一)

【代码】csapp lab1 data-lab记录(一)

2024-08-14 15:12:45 332

原创 csapp lab8 malloc-lab记录

Malloc Lab 要求用 C 语言编写一个动态存储分配器,即实现 malloc,free 和 realloc 函数,并尽可能优化这个分配器,平衡吞吐率和空间利用率吞吐率和空间利用率是冲突的,不可能吞吐率高又空间利用率高,因为高的吞吐率必然采用诸如链表,哈希表,树等结构,这些结构必然导致空间利用率降低,所以得平衡。

2024-06-22 21:17:38 514

原创 一篇文让你零基础也能轻松get“上下文切换”含义

然而,上下文切换也会带来一定的系统开销,因此优化上下文切换的性能是提高系统整体性能的关键之一。上下文切换对系统性能有一定的影响。上下文切换的基本原理是当发生任务切换时,保存当前任务的寄存器到内存中,将下一个即将要切换过来的任务的寄存器状态恢复到当前CPU寄存器中,使其继续执行。: 就在厨师快要完成第一道菜肴时,餐厅的服务员(可以看作是操作系统的调度器)通知厨师,第二道菜肴(进程B)的客人已经等待很久了。: 在某个时刻,第一道菜肴的客人开始不耐烦了,或者第二道菜肴快要完成了,厨师需要再次进行上下文切换。

2024-06-17 17:23:58 503 1

原创 TLB是什么?在虚拟内存中有什么作用?与Cache有什么区别?

TLB是计算机系统中一个重要的硬件组件,通过缓存虚拟地址到物理地址的映射关系,显著提高了地址转换的速度,从而提高了程序的执行效率。

2024-06-17 17:14:33 2411

原创 为什么都说虚拟内存了保护内存?

同时,由于虚拟地址的存在,应用程序无需关心物理内存的具体位置和大小,从而降低了编程的复杂性和出错的可能性。每个进程都认为自己是在独占使用整个系统的存储资源,但实际上这些地址空间是虚拟的,并且被操作系统管理以确保各个进程之间的隔离。:虚拟内存通过设置内存的访问权限,解决了内存的安全访问问题。这种机制不仅提高了内存的使用效率,也通过减少对物理内存的直接访问来降低对物理内存的损耗和破坏。每个进程运行在自己的虚拟内存地址空间中,互不干扰,从而实现了进程的隔离和内存的保护。

2024-06-17 17:03:21 869

原创 csapp lab5 cache_lab记录(partB)

那么在内存B中每8行就会耗空所有的组索引,如果直接竖着写,写到内存B第9行时,组索引用完了,他就会去覆盖第1组的块,这才是组相联的映射规律,当然就会导致miss。那继续优化的点在哪里,就是cache块没有完全利用,我们的cache有8个int啊,4×4展开肯定不能完全利用,那我们还是可以用8×8展开,只不过8×8中再4×4,具体是每一个8×8块中,分别移动左上,右上,左下,右下的4×4块,说白了就是套两层,8×8整体移动,只不过8×8中不是直接用,而是分四次4×4的搬运即可,miss来到了1179。

2024-05-22 20:12:46 834 2

原创 csapp lab5 cache_lab记录(partA)

free内存不是指直接调用一个free函数就行了,这样会生成一个野指针,需要把该指针指向NULL,成为一个空指针。该函数遍历该组中所有块,只有v=1且tag相同,那就hit,返回这个块的索引即可。6. 如果满了,那使用Update()实现LRU方法,找到某组中最久没访问的就是找有效位为1的哪一块时间戳最大,查找到该组的索引返回即可。LRU的实现策略是更新的这一块的时间戳设置为0,同组中其他有效位位1的块时间戳+1,如果没有全满,则选择第一个有效位为0的块作为替换块,返回该索引。

2024-05-21 21:45:31 475

原创 csapp lab7 shell-lab记录

很多函数会在出错返回式设置 errno,在处理程序中调用这样的函数可能会干扰主程序中其他依赖于 errno 的部分,解决办法是在进入处理函数时用局部变量保存它,运行完成后再将其恢复。PS:不用“pause”用“sigsuspend”函数的原因是考虑了竞争的情况,假定父进程在进入循环后,而执行。仅在捕捉到信号后返回,而之后不会再有任何信号抵达,那么父进程就会永远休眠。一句话概括功能:判断是否为内置命令,是的话立即执行并返回1,不是的话返回0。话不多说,直接上代码(顺序从易到难,和原题顺序不一致)

2024-05-16 12:49:26 259 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除