- 博客(40)
- 收藏
- 关注
原创 RocksDB-db_bench源码(三):Histogram统计图的使用
RocksDB-db_bench源码(三):Histogram统计图的使用
2023-08-05 16:31:21
475
原创 RocksDB-db_bench源码(二):mixgraph负载的源码解读
RocksDB-db_bench源码(二):mixgraph负载的源码解读
2023-08-04 20:31:54
468
原创 RocksDB-db_bench源码(一):random下单个thread的key生成方式与写入
RocksDB-db_bench源码(一):random下单个thread的key生成方式与写入
2023-08-04 20:31:24
338
原创 RocksDB: TrivialMove 与 db_bench 的 fillseq
RocksDB: TrivialMove 与 db_bench 的 fillseq
2023-08-02 21:10:49
205
原创 【MIT-6.1810】Lab: network driver
MIT-6.1810 / MIT-6.s081 Lab7-Network Driver
2023-07-31 14:09:44
661
4
原创 【MIT-6.1810】Lab: Multithreading
本实验单看三个子 lab 的话可以说是巨简单,因为并没有涉及到编写 xv6 的实际线程切换,即使是在 lab1 中也进行是在用户态进行模拟。但是,Lecture 11 详细介绍了 xv6 线程切换的原理和实现,并借助最常规的线程切换触发方式(CPU 时间片到,让位给下一个线程)来缕清整个切换流程的代码细节,讲的很好,个人感觉是 OS 多线程中非常好的基础教学。
2023-07-17 18:49:04
498
原创 【MIT-6.1810】Lab: Copy-on-Write Fork for xv6
COW 的主要原理如下。当父进程 fork 出子进程时,子进程建立自己的页表,但是不会复制父进程的物理页,而是将每一个 PTE 都指向父进程的物理页,即两大页表同时指向同一片物理内存。而当某一个进程需要对物理页进行写时(可以是父也可以是子),再开辟一个新的物理页,内容为复制原有的物理页,使进程的 PTE 由原来的物理页指向这个新的物理页。
2023-07-13 16:04:56
985
原创 【MIT-6.1810】Lab: page tables
页表的初始化位于函数 proc_pagetable 中,通过 mappages 在页表中注册新的 PTE,参考 TRAPFRAME 的方式,将 USYSCALL 映射到 p->usyscall 中。实验要求实现一个系统调用 sys_pgaccess,其会从一个虚拟地址对应的 PTE 开始,往下搜索一定数量的被访问(read/write)过的页表,并把结果通过 mask 的方式返回给用户。但是,该 lab 是利用页表,而不是编写页表,所以比较简单。其次,PTE 是连续的,那么对应的虚拟地址也应是连续的。
2023-06-26 15:07:41
1778
原创 【MIT-6.1810】Lab: Xv6 and Unix utilities
MIT-6.1810 / MIT-6.s081,Lab1:Xv6 and Unix utilities
2023-06-25 20:26:37
774
原创 【TinyKV-2022】前言
第一次尝试分布式的实验,上了 TinyKV 2022 的车。测试的时候 project3b 概率不过,并且我除了优化 nextIndex[] 的更新之外没做任何优化,性能也中规中矩。不过今年 PingCap 给分比较松,最后拿了 98.46 的高分,除了 project3b 和文档部分扣了点分,其余全部满分,还是很惊喜的。
2023-06-25 15:55:10
309
原创 RocksDB源码学习(九): Flush中SST写入流程-深入到pwrite
本篇博客将以 Flush 为切入口探究 RocksDB 中 SST 的写入流程,函数调用链要一直深入到 pwrite
2023-03-21 18:38:17
1336
原创 RocksDB源码学习(七): 写(三)-WAL
本篇博客将从源码层面分析 RocksDB 中 WAL 的创建与写入,且不考虑 2pc,所用代码版本为 v7.7.4
2022-11-29 20:14:13
1024
原创 RocksDB源码学习(六): 写(二)-WriteGroup
本篇博客将从源码层面分析 RocksDB 写操作中与 WriteGroup 有关的内容,且不考虑 pipelined_write 与 2pc,所用代码版本为 `v7.7.4`
2022-11-29 20:12:44
839
原创 RocksDB源码学习(五): 写(一)-框架
本篇博客将先理清 RocksDB 的基本写入框架,不考虑 pipelined_write 优化,并且不讨论源码实现,用以为后续的源码分析做前言。
2022-11-29 20:10:45
1022
原创 RocksDB db_bench源码(一):random下单个thread的key生成方式与写入
本文深入 RocksDB db_bench 源码,分析单个线程中 key 的随机分布问题与写入流程。
2022-11-29 20:05:35
811
原创 RocksDB源码学习(四):读(三)
上两篇博客中我们分析了 RocksDB 如何在内存中查找对应的数据,这一篇我们将会详细分析当内存中未找到记录时,RocksDB 如何在磁盘上查找对应的数据。
2022-10-24 17:52:25
1807
原创 RocksDB源码学习(三):读(二)
本篇博客关注 RocksDB 从 immutable memtable 中的读取,所有代码版本均为 v7.7.3。
2022-10-24 17:51:39
717
原创 RocksDB源码学习(一):事务
本篇博客试图从宏观上理一下 RocksDB 有关事务的部分。内容包含 DB、Transaction、WriteBatch、Sequence Num、Snapshot、Lock 等等
2022-10-20 21:55:31
1655
2
原创 LSM-Tree(一):初识
本篇博客为综述《LSM-based Storage Techniques: A Survey》的学习笔记(一),该综述介绍了 LSM-Tree 的前世今生、思想本质、性能权衡、面临问题、优化方案等等,也是我正式接触 LSTM-Tree 的入门导师
2022-10-15 14:11:53
1214
原创 特权级与TSS
TSS,即Task State Segment,意为任务状态段,和特权级有着密不可分的联系,是处理器在硬件层面上原生支持多任务的一种数据结构
2022-02-27 15:22:48
703
原创 Docker基础(三):容器数据卷
想象一下,你的公司使用docker在容器中部署了一个电商项目,数据全部存在容器中。现在,你一不小心把这个容器删了,里面的数据全没了,再也无法恢复。猜猜能在牢里蹲多久?
2022-01-24 00:30:35
1227
原创 Docker基础(一):一文初识Docker
目录Docker的意义;Docker与虚拟机的对比;Docker的诞生;Docker三要素;Docker架构
2022-01-21 22:04:50
1126
2
原创 C语言计算含N个元素集合的分划个数
以下为计算含n个元素的集合共有多少分划。若发现不当,或者有意见或建议,欢迎提出!#include <stdio.h>int f(int,int []); /*用于递推计算*/int A(int,int); /*用于计算组合数*/ int main(){ int n; printf("请输入元素个数n:"); scanf("%d",&n); int set[1...
2020-03-06 20:32:06
1945
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人