ThinkLab

Next Door 0.5x Engineer

xv6内核扩展7:锁

发布于

内存分配器 程序用户/kalloctest 对 xv6 的内存分配器进行压力测试:三个进程增长和缩小它们的地址空间,导致大量调用 kalloc 和 kfree 。 kalloc 和 kfree 获取 ...

继续阅读 →

E1000网卡用户开发手册(节选)

发布于

数据包接收 在一般情况下,数据包接收包括识别线路上是否存在数据包、执行地址过滤、将数据包存储到接收数据 FIFO 中、将数据传输到主机内存中的接收缓冲区,以及更新接收描述符的状态。 数据包地址过滤 硬...

继续阅读 →

xv6内核boot流程(参考)

发布于

入口与分支条件 由 在所有 CPU 的 supervisor 模式下进入; 根据 判断当前是否为引导 CPU()或其它 CPU()。 引导 CPU 路径(cpuid()==0) console...

继续阅读 →

xv6内核扩展6:网络

发布于

背景 在编写代码之前,您可能会发现复习《xv6 书籍》中的“第 6 章:中断和设备驱动程序”很有帮助。 你将使用一个名为 E1000 的网络设备来处理网络通信。对于 xv6(以及你编写的驱动程序)来说...

继续阅读 →

MIT 6.1810 课程笔记汇总

发布于

操作系统设计 操作系统与内核的关系 操作系统(Operating System)是一个更宽泛的概念,通常包含两类内容: 内核(kernel):运行在硬件之上、拥有最高特权的一段软件,负责管理 CPU、...

继续阅读 →

Rust智能指针

发布于

一、智能指针的定义与设计动机 底层事实(First Principles) 程序在运行过程中必然需要访问内存 内存生命周期包含:分配、读写、释放 任何阶段的失误都可能导致: 悬垂指针(Dangling...

继续阅读 →

探索主题