自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 xv6 risc-v bio.c code walk through

(感觉文件系统的代码还是挺多的 做个笔记首先上xv6 文件系统的结构图:bio.c负责的是buffer cache这一层bio.c有最详细的注释:Buffer cache.The buffer cache is a linked list of buf structures holdingcached copies of disk block contents. Caching disk blocksin memory reduces the number of di...

2020-08-30 16:11:34 506

原创 第 33 场力扣双周赛

复习lc,除了把之前刷过的题看一遍,还要把比较简单的周赛做一做(说是简单,但是对于还没有ak过的我,也不算太简单了)1.1556. 千位分隔数难度简单0给你一个整数n,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。示例 1:输入:n = 987输出:"987"示例 2:输入:n = 1234输出:"1.234"示例 3:输入:n = 123456789输出:"123.456.789"示例 4:输入..

2020-08-30 11:46:39 277

原创 MIT-6.s081-OS mid-term quiz 2019

背景:修改free和bd_free,增加一个参数size,size是p指向的内存块的字节数。修改之后,buddy allocator的调用者要负责在返回块的时候指明块的大小。假设程序员调用free时传入的size始终是正确的问:修改后,还需要保留split数组吗...

2020-08-24 18:03:32 1064

原创 UCB cs186 数据库 setup

(复习os看不进去的时候 就想新开一个坑 刚完成了类似hello world的hw0 体验不错( 本来准备写在onenote里,想了想还是写在这吧https://github.com/berkeley-cs186/sp20-moocbase/blob/master/hw0-README.md按照说明,基本能顺利走下来:首先安装docker,基本参照这个:https://www.cnblogs.com/blog-rui/p/11244023.html然后抓取镜像:d...

2020-08-22 00:42:16 1025

原创 xv6 risc-v kalloc.c code walk through

kalloc是用于分配物理内存,比较简单,but to make it clear,这里还是做一个笔记struct run { struct run *next;};struct { struct spinlock lock; struct run *freelist;} kmem;首先这里定义了两个结构体,但是有一些细节需要注意:第一个结构体有名字,struct run,第二个没有,第二个的kmem是其定义的第一个结构体变量在系统启动时,会调用kinit,初始化这个内存分

2020-08-20 17:17:42 1218

原创 leetcode 148. 排序链表

在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5不考虑常数级空间复杂度时,可以采用递归的做法:找到当前链表的中点后的一个节点, 将链表从中间断开,然后对两半链表进行merge,递归的完成这个操作/** * Defin...

2020-08-19 16:18:10 124

原创 [编程题]石子合并

题目描述小Q和牛博士在玩一个石子合并的游戏,初始一共有n堆石子,每堆石子有w[i]个石子。小Q和牛博士他们需要对石子堆进行合并,每次他们可以任意选择两堆石子进行合并。一堆有x个石子的石子堆和一堆有y个石子的石子堆合并将得到一堆x+y个石子的石子堆,这次合并得分为x*y,当只剩下一堆石子的时候游戏结束。、小Q和牛博士希望采取优秀的策略获得最大得分,希望你能来帮他们算算最大得分多少。输入描述:输入包括两行,第一行一个正整数n(2≤n≤100)。第二行包括n个正整数w[i](1≤w[i]≤.

2020-08-18 16:12:26 360

原创 [动态内存分配] Allocaotrs 3/3 : buddy system

第二个本来要写之前做过的alloc lab,但是粗略看了下感觉代码太晦涩了,结构体都没有,全都是指针操作=-=直接写buddy system,附上之前做alloc lab时的笔记链接:https://blog.csdn.net/RedemptionC/article/details/107368186buddy system基本特点根据cs:app,buddy system属于segregated fit的特例,segregated fit的特点是:维护一个空闲链表的数组,每个空闲链表和.

2020-08-15 18:52:15 596

原创 [动态内存分配] Allocaotrs 1/3 : K&R

剩下两个是 explicit free list , buddy system,本来打算放在一篇里写,但是可能会太长,所以还是分开好序言本系列基本上是对cs:app allocator那一节的总结,除了buddy system会扩展一些内存分配器的设计空间很大,如:块的格式:implicit free list:不显式给出当前块在free list中的前驱,后继,而是将free/allocated block放在一起,每次分配需要时间O(n+m),n是 # free block,m..

2020-08-14 20:03:20 421

原创 MIT-6.s081-OS lab syscall :user-level threads and alarm

warm up(对riscv汇编的熟悉,其实使用gdb调试汇编是”最好“的学习方法)回答一下几个问题:Which registers contain arguments to functions? For example, whichregister holds 13 in main's call to printf?这个很简单,从call.asm就能看出来,是a2 printf("%d %d\n", f(8)+1, 13); 24: 4635

2020-08-13 15:01:11 1193 14

原创 leetcode-via-go 337. 打家劫舍 III(二叉树 记忆化搜索)

在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \ ...

2020-08-05 08:10:24 166

原创 leetcode-via-go 207. 课程表(拓扑排序 dfs bfs)

因为6.824要用go,所以打算用go刷一阵子题,熟悉一下语言,过阵子做的时候好上手另一方面也是好久没有认真刷题了 熟练度噌噌的掉你这个学期必须选修 numCourse 门课程,记为0到numCourse-1 。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释:总...

2020-08-04 12:31:00 213

原创 MIT-6.s081-OS lab cow: Copy-on-Write Fork for xv6

本实验仍然是虚拟内存,所以暂且跳过了中间的内容(指lec和课本)分析copy on write fork :在之前的code walk through(https://blog.csdn.net/RedemptionC/article/details/107709618)中提到了,fork的实现里,有一个uvmcopy的调用,作用是将父进程的内存复制到子进程中,这个复制包括申请物理内存,设置pte但是在下列情况下:父进程和子进程都不修改某些内存页 fork之后子进程马上调用exec,而

2020-08-03 22:27:06 2078 2

原创 MIT-6.s081-OS lab lazy: xv6 lazy page allocation

本实验要实现的是lazy allocation很多时候,一个进程可能使用sbrk申请了大量的内存,但是其中的大部分并没有使用,造成了浪费我们要做的是修改sbrk的实现,sbrk不分配物理内存,just remember which addresses are allocated当进程第一次试图使用任何内存时,产生一个page fault,再让kernel分配内存,清零,映射...

2020-08-01 17:41:12 3183 26

原创 xv6 risc-v 虚拟内存 code walk through

最近做lazy lab做的有点头大,突然发现是自己遗漏了一些内容,即lec5,6,因为刚开始看的时候很多看不懂,就跑去看书了,后来就一直没有回来看lecture所以为了提高效率,应该快速的把书看一遍,然后回来看lecture,再带着问题去看书看代码code walk throughkvminitvoid kvminit(){ // 确定64bit的一级目录地址 kernel_pagetable = (pagetable_t) kalloc(); memset(kernel.

2020-08-01 15:37:48 1728

空空如也

空空如也

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

TA关注的人

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