最佳损友1020
  • 生活记录
  • 技术博客
  • 归档
  • 分类
  • 标签
  • 关于
  • 友链

CPU乱序发射与内存屏障

在提出问题之前,先看一段简单的代码。 1234567891011121314151617181920212223242526272829303132333435363738#include <stdio.h>#include <pthread.h>int x = 0, y = 0;void* mythread1(void*){ while (y ==

MIT6.S081 2021 Copy-on-Write Fork for xv6

简要介绍 There is a saying in computer systems that any systems problem can be solved with a level of indirection.任何系统问题都能通过一个中间层解决 修改uvmcopy() 函数,将父进程物理页映射子进程,而不是分配新的物理页。清除父进程与子进程页表项的PTE_W项 修改usertr

MIT6.S081 2021 file system

xv6 book记录看pdf看困了,主要看看几张图,最后再看看real world就可以了xv6文件系统架构 The disk layer reads and writes blocks on an virtio hard drive. The buffer cache layer caches disk blocks and synchronizes access to them, ma

MIT6.S081 2021 locks

xv6 book记录竞态 1234567891011121314struct element { int data; struct element *next;};struct element *list = 0;void push(int data){ struct element *l; l = malloc(sizeof *l); l->data =

MIT6.S081 2021 networking

console驱动与时钟中断16550芯片相关介绍:16550芯片课程介绍由于不是学硬件的,一直没太搞懂这几个东西的交互关系是啥,我的理解是如下图所示。如果不看display这一边,那这个驱动是非常好懂的,正好和开头的介绍吻合,驱动存在两个上下文:内核进程上下文和中断上下文。分别对应consolewrite consoleread和uartintr三个函数。但我一直没看懂的是为啥uarti

MIT6.S081 2021 mmap

You should implement enough mmap and munmap functionality to make the mmaptest test program work. If mmaptest doesn’t use a mmap feature, you don’t need to implement that feature. 这个实验还是比较复杂的,用gd
MIT6.S081 2021

MIT6.S081 2021

There is a saying in computer systems that any systems problem can be solved with a level of indirection. 6.S081 lab地址 推荐博客:二十八画生征友:一起来通关6.S081/6.828吧~ piazza课程主页:https://piazza.com/mooc_se

MIT6.S081 Multithreading

xv6 book记录阅读xv6 book之前,简要看一下《深入了解linux内核》进程一章(不怎么看得懂),当然xv6 book也看的犯困。该实验比较简单,就看书花点时间。 First, xv6’s sleep and wakeup mechanism switches when a process waits for device or pipe I/O to complete
NVMe驱动 请求路径学习记录

NVMe驱动 请求路径学习记录

由《深入浅出SSD》 6.5节trace分析可知,主机读请求的执行流程如下: 主机准备好命令放在SQ 主机通过写SQ的Tail DB,通知SSD来取命令(Memory Write TLP) SSD收到通知,去主机端的SQ取指令(Memory Read TLP) SSD执行命令,把数据传给主机(Memory Write TLP) SSD往主机的CQ中返回状态 SSD采用中断的方式告诉主机去处

NVMe驱动学习记录-1

初始化nvme-core模块 创建工作队列 分配设备号 创建class类型的对象 解释 工作队列 workqueue是对内核线程封装的用于处理各种工作项的一种处理方法, 由于处理对象是用链表拼接一个个工作项, 依次取出来处理, 然后从链表删除,就像一个队列排好队依次处理一样, 所以也称工作队列 所谓封装可以简单理解一个中转站, 一边指向“合适”的内核线程, 一边接受你丢过来的工作项, 用
12345…10

搜索

Hexo Fluid
总访问量 次 总访客数 人