ThinkLab

Next Door 0.5x Engineer

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

发布于

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

继续阅读 →

Rust智能指针

发布于

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

继续阅读 →

MIT 6.1810 课程笔记汇总

发布于

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

继续阅读 →

xv6内核扩展6:网络

发布于

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

继续阅读 →

xv6内核扩展5:写时复制fork()

发布于

The problem 问题 xv6 中的 fork()系统调用会将父进程的用户空间内存全部复制到子进程。如果父进程较大,复制过程可能需要很长时间。更糟糕的是,这项工作往往大部分是浪费的:fork(...

继续阅读 →

xv6:一个简单的unix-like操作系统译文(六)

发布于

第六章:中断与设备驱动程序 驱动程序(driver) 是操作系统中用于管理特定设备的代码:它配置设备硬件,指示设备执行操作,处理由此产生的中断(interrupts),并与使用该设备的进程进行交互。驱...

继续阅读 →

探索主题