神楽坂雪紀的投研笔记

呐、现在可以和你见面吗?我、等着你哟......

0%

大三【Linux 操作系统】课的实验内容设计二:向内核中插入虚拟块设备。

事情是这样的,课题教学组有位老师抱怨实验无趣,4 个实验课内容从古沿用至今,每学期的助教都是直接拿往届的实验内容去上,都尽量能少一事就少一事,然后再加上已经上了的实验一,是一如既往的“编译内核与添加系统调用”,被班里的大神们抱怨没啥意思。作为萌新的我只能龟缩在角落玩扫雷,并不断的观察着黑下脸的任课老师。大概这位老师觉得被学生看扁了很不爽吧,次日五个教学班的助教都被召集,要求在一周内设计出有意思的实验内容,并要求附上实验操作手册。于是就有了这篇麻烦。权当做个记录。

阅读全文 »

该文档描述了 UFS Host Controller 的主要运作流程以及 qemu 中,host controller 的接口函数设计。该文档的内容均参考自 JEDEC STANDARD JESD223C 标准配置文档以及 qemu 中设备模拟源代码。

阅读全文 »

这篇 IO 通路简析主要偏向于模块之间的衔接,不涉及模块内的细节,主要回答下面的 4 个问题: 1. 在何处向请求队列注册 make request function 函数(这里是 pblk_make_rq) 2. 在何处调用了(1)注册的 make request function 函数 3. 在何处向请求队列注册了 request function 函数(这里是 pci.c 中的 nvme_queue_rq) 4. 在何处调用了(3)注册的 request function 函数

阅读全文 »

LightNVM[1] 是 CNEXLabs 针对 Open Channel SSD(以下简称 OCSSD)在 Linux 内核中的一种实现,分支托管在 GitHub 上,目前能找到最早的提交记录是 2015-10-29。LightNVM 的程序栈由三层组成,每一层都向用户空间提供了 OCSSD 的抽象(即用户可以直接与这三层进行 IO 交互而不用经过文件系统,后面会细提到)。示意图如下图所示:

阅读全文 »

SSD 的特点

SSD 设备的存储单元主要是 NAND Flash[1],按 page 写入,按 block 擦除,一个 block 内有多个 page,并且擦除的次数有限。根据以上的特点,在使用设备时,必然存在这样的情况:在一个 block 中,有部分 page 保存了有效数据,剩下的 page 全被标记为无效,如果要擦除这个 block,就必须首先将其中的有效数据转移到其他 block,然后才能擦除当前 block,这个过程被称为 GC。

阅读全文 »

按照惯例,Hello World !

记录一下博客的迁移记录。本站点目前架设在 bandwagonhost 上,运行 CentOS-Minimal,我将其命名为 Spiral(略显中二),一年开销 $11.99。最开始只跑着个 Shadowsocks,512M 的内存实际使用中的不足 20M,长期处于空转中。直到本月初阿里云上的学生机也到期了,于是决定尝试下 Typecho。

阅读全文 »