自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (1)
  • 收藏
  • 关注

原创 6s081:记录xv6中的内核态、用户态切换过程

最近又把xv6复习了一下,重新用GDB打了一下内核态切换的过程的那段代码uservec: # # trap.c sets stvec to point here, so # traps from user space start here, # in supervisor mode, but with a # user page table. # # sscratch points to where

2021-07-30 13:54:58 715

原创 C++的简易内存管理工具实现--垃圾回收

Writing a Mark-Sweep Garbage CollectorTracing vs. Direct collectors所有 GC 算法都分为tracing和direct。尽管被称为“垃圾”收集器,但跟踪收集器实际上并不识别垃圾。相反,情况恰恰相反——它们识别活着的对象,通过扩展将其他一切视为垃圾。Mark-Sweep 是一个跟踪收集器,因此我们将在我们的实现中进行跟踪阶段。由于我们选择在 C++ 中实现收集器,我们现在将讨论与它的运行时系统相关的一些细节。C++ specif

2021-07-25 10:28:46 703 1

原创 C++的简易内存管理工具实现--内存池

OverviewPool allocator其通常允许O(1)分配,当空闲块被发现马上,而无需搜索自由列表。为了实现这种快速分配,池分配器通常使用预定义大小的blocks 。这个想法类似于Segregated list,但是具有更快的blocks 确定。该方法可以极大地提高处理许多预定义形状对象的系统的性能。例如,在游戏应用程序中,我们可能需要分配数百个甚至数千个相同类型的对象。在这种情况下,碎片malloc可能是分配速度较慢的来源。这就是游戏机积极为此类对象使用内存池的原因。所以,让我们深入研究细节

2021-07-24 21:47:48 391 1

原创 C++的简易内存管理工具实现--内存分配

Mutator、Allocator和Collector垃圾收集程序由三个主要模块组成,即Mutator、Allocator和Collector。Mutator是我们的用户程序,我们在其中为自己的目的创建对象。所有其他模块都应该尊重Mutator 在对象图上的视图。例如,在任何情况下,收集器都不能回收活动对象。然而,Mutator 不会自己分配对象。相反,它将这个通用任务委托给Allocator模块——这正是我们今天主要讨论的主题。让我们深入了解实现Memory Allocator的细节。Memo

2021-07-24 18:36:25 642 1

原创 同步屏障Barrier

最近写6s081实验写到了lab7,发现了有一个barrier的概念很有意思,查了查资料总结了一下。同步屏障可以用来管理一个应用中的不同线程,在一个应用中设立一个Barrier,当有指定数目的线程到达该Barrier时,唤醒所有处于SLEEPING状态的线程,继续执行。但是如果此时没有达到指定数目,则线程进入到SLEEPING状态。以下的代码直接在linux中就能运行,用到了linux中的UNIX pthread threading library。你能够通过在命令行中输入man pthreads获取相

2021-05-14 13:12:30 334

原创 15-445#1 Relational Data Model

15-445#1 Relational Data Model为什么需要 Database?数据库是对现实世界的某些方面(例如。,在课堂或数字音乐商店中为学生建模)。人们经常混淆“数据库”和“数据库”管理系统”(例如MySQL、Oracle、MongoDB)。数据库管理系统(DBMS)是管理数据库的软件。考虑一个模拟数字音乐商店的数据库(例如Spotify)。让数据库保存信息关于艺术家以及他们发行了哪些专辑。将数据库存储为逗号分隔的值(CSV)我们自己管理的文件应用程序代码。→ 每个实体使用一个单独

2021-05-12 15:07:28 330 1

原创 brk系统调用和copy-on-write机制

操作系统内存分配中的概念模型本文不全是上课所学内容,而是本人根据上课所学所感兴趣的板块查阅相关资料总结而成的文章。Lazy page allocation看一下内存allocation,或者更具体的说brk系统调用,brk系统调用会调整一个指针,该指针指向堆的最顶端。brk()系统调用会拓展heap的上界,也就是扩大heap的容量。这意味着,当brk实际发生或者被调用的时候,内核会分配一些物理内存,并将这些内存映射到用户应用程序的地址空间,然后将内存内容初始化为0,再返回brk系统调用。这样,应

2021-05-11 12:38:57 408

原创 Lab system calls

6s081 Lab2: system calls一开始看的时候看见这两个实验都是moderate,还以为挺简单。结果因为对xv6 book不熟悉,没有弄明白整个系统调用的过程,花了很多的时间去理解xv6中系统调用的过程。含泪总结…………一定要认认真真的看xv6 book 不然实验可能真的不会写。关于实验要求,比较重要的一些点我都加了下划线。(也是我踩过的坑…………)这个实验看着简单,但是写10行代码差不多要看100行左右的源码。System call tracing (moderate)In th

2021-04-21 23:52:39 1304

lab2test信安下载用的exe

lab2test信安下载用的exe

2021-01-09

空空如也

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

TA关注的人

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