自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RDMA 相关bug记录

RMDA 相关bug记录,都是一些基础的问题,但是找不到官方解释

2023-09-06 21:10:16 356 1

原创 RocksDB-db_bench源码(三):Histogram统计图的使用

RocksDB-db_bench源码(三):Histogram统计图的使用

2023-08-05 16:31:21 291

原创 RocksDB-db_bench源码(二):mixgraph负载的源码解读

RocksDB-db_bench源码(二):mixgraph负载的源码解读

2023-08-04 20:31:54 332

原创 RocksDB-db_bench源码(一):random下单个thread的key生成方式与写入

RocksDB-db_bench源码(一):random下单个thread的key生成方式与写入

2023-08-04 20:31:24 203

原创 RocksDB: TrivialMove 与 db_bench 的 fillseq

RocksDB: TrivialMove 与 db_bench 的 fillseq

2023-08-02 21:10:49 85

原创 【MIT-6.1810】Lab: network driver

MIT-6.1810 / MIT-6.s081 Lab7-Network Driver

2023-07-31 14:09:44 334 4

原创 【MIT-6.1810】Lab: Multithreading

本实验单看三个子 lab 的话可以说是巨简单,因为并没有涉及到编写 xv6 的实际线程切换,即使是在 lab1 中也进行是在用户态进行模拟。但是,Lecture 11 详细介绍了 xv6 线程切换的原理和实现,并借助最常规的线程切换触发方式(CPU 时间片到,让位给下一个线程)来缕清整个切换流程的代码细节,讲的很好,个人感觉是 OS 多线程中非常好的基础教学。

2023-07-17 18:49:04 259

原创 【MIT-6.1810】Lab: Copy-on-Write Fork for xv6

COW 的主要原理如下。当父进程 fork 出子进程时,子进程建立自己的页表,但是不会复制父进程的物理页,而是将每一个 PTE 都指向父进程的物理页,即两大页表同时指向同一片物理内存。而当某一个进程需要对物理页进行写时(可以是父也可以是子),再开辟一个新的物理页,内容为复制原有的物理页,使进程的 PTE 由原来的物理页指向这个新的物理页。

2023-07-13 16:04:56 503

原创 【MIT-6.1810】Lab: traps

MIT-6.1810 / MIT-6.s081, Lab4: traps

2023-07-06 16:21:34 427

原创 【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 903

原创 【MIT-6.1810】Lab: system calls

MIT-6.1810 / MIT-6.s081,Lab2:system calls

2023-06-25 20:28:43 390

原创 【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 403

原创 【TinyKV-2022】Project4:Transaction

TinyKV Project4:Transaction

2023-06-25 16:14:27 112

原创 【TinyKV-2022】Project2:Raft KV

TinyKV Project2:Raft KV

2023-06-25 16:06:32 243

原创 【TinyKV-2022】Project3:Multi-raft KV

TinyKV Project3:Multi-raft KV

2023-06-25 16:06:27 158

原创 【TinyKV-2022】Project1:Standalone KV

TinyKV Project1:Standalone KV

2023-06-25 16:01:45 130

原创 【TinyKV-2022】前言

第一次尝试分布式的实验,上了 TinyKV 2022 的车。测试的时候 project3b 概率不过,并且我除了优化 nextIndex[] 的更新之外没做任何优化,性能也中规中矩。不过今年 PingCap 给分比较松,最后拿了 98.46 的高分,除了 project3b 和文档部分扣了点分,其余全部满分,还是很惊喜的。

2023-06-25 15:55:10 186

原创 RocksDB源码学习(九): Flush中SST写入流程-深入到pwrite

本篇博客将以 Flush 为切入口探究 RocksDB 中 SST 的写入流程,函数调用链要一直深入到 pwrite

2023-03-21 18:38:17 682

原创 RocksDB静态编译与使用

演示 RocksDB 的静态编译和 g++ 使用过程,并将踩的坑记录下来

2023-03-10 17:01:37 1228 3

原创 LevelDB源码:Flush的流程

从源码层面分析 LevelDB 中 Flush 的主要函数调用链

2023-02-23 17:38:20 237

原创 LevelDB源码:层级实现的思考

对 LevelDB 每一级如果记录有哪些 SST 这一问题进行的思考

2023-02-23 17:36:23 73

原创 RocksDB源码学习(七): 写(三)-WAL

本篇博客将从源码层面分析 RocksDB 中 WAL 的创建与写入,且不考虑 2pc,所用代码版本为 v7.7.4

2022-11-29 20:14:13 580

原创 RocksDB源码学习(六): 写(二)-WriteGroup

本篇博客将从源码层面分析 RocksDB 写操作中与 WriteGroup 有关的内容,且不考虑 pipelined_write 与 2pc,所用代码版本为 `v7.7.4`

2022-11-29 20:12:44 496

原创 RocksDB源码学习(五): 写(一)-框架

本篇博客将先理清 RocksDB 的基本写入框架,不考虑 pipelined_write 优化,并且不讨论源码实现,用以为后续的源码分析做前言。

2022-11-29 20:10:45 629

原创 RocksDB源码学习(三): 读(二)

本篇博客关注 RocksDB 从 immutable memtable 中的读取

2022-11-29 20:09:17 222

原创 RocksDB db_bench源码(一):random下单个thread的key生成方式与写入

本文深入 RocksDB db_bench 源码,分析单个线程中 key 的随机分布问题与写入流程。

2022-11-29 20:05:35 610

原创 RocksDB源码学习(四):读(三)

上两篇博客中我们分析了 RocksDB 如何在内存中查找对应的数据,这一篇我们将会详细分析当内存中未找到记录时,RocksDB 如何在磁盘上查找对应的数据。

2022-10-24 17:52:25 975

原创 RocksDB源码学习(三):读(二)

本篇博客关注 RocksDB 从 immutable memtable 中的读取,所有代码版本均为 v7.7.3。

2022-10-24 17:51:39 472

原创 RocksDB源码学习(二):读(一)

本篇博客分析读操作的框架以及在 memtable 中的读取.

2022-10-21 16:52:40 1244

原创 RocksDB源码学习(一):事务

本篇博客试图从宏观上理一下 RocksDB 有关事务的部分。内容包含 DB、Transaction、WriteBatch、Sequence Num、Snapshot、Lock 等等

2022-10-20 21:55:31 824 1

原创 LSM-Tree(一):初识

本篇博客为综述《LSM-based Storage Techniques: A Survey》的学习笔记(一),该综述介绍了 LSM-Tree 的前世今生、思想本质、性能权衡、面临问题、优化方案等等,也是我正式接触 LSTM-Tree 的入门导师

2022-10-15 14:11:53 850

原创 特权级与TSS

TSS,即Task State Segment,意为任务状态段,和特权级有着密不可分的联系,是处理器在硬件层面上原生支持多任务的一种数据结构

2022-02-27 15:22:48 562

原创 Docker进阶-一-DockerFile解析

dockerfile镜像构建过程以及保留字解析

2022-02-12 17:11:46 656

原创 Linux软硬链接

Linux软链接(符号链接)与硬链接

2022-02-11 17:04:50 651

原创 k8s源码(一): Pod创建流程

深入k8s源码,学习kubelet创建Pod的流程。

2022-01-26 15:31:07 3007 1

原创 Docker基础(三):容器数据卷

想象一下,你的公司使用docker在容器中部署了一个电商项目,数据全部存在容器中。现在,你一不小心把这个容器删了,里面的数据全没了,再也无法恢复。猜猜能在牢里蹲多久?

2022-01-24 00:30:35 1039

原创 Docker基础(二):常用命令

常用的Docker基础命令,包括但不限于:帮助启动类命名;镜像命令;容器命令。

2022-01-22 17:14:50 518

原创 Docker基础(一):一文初识Docker

目录Docker的意义;Docker与虚拟机的对比;Docker的诞生;Docker三要素;Docker架构

2022-01-21 22:04:50 947 2

原创 Github+Hexo快速搭建个人博客

快速安装Hexo并使用Github部署,解决图片上传问题与域名绑定

2022-01-15 23:40:02 710

原创 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 1796

空空如也

空空如也

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

TA关注的人

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