心中的内核

心中的内核 —— 在阅读内核代码之前先理解内核 原文:The Kernel in the Mind [TOC] 介绍 这并非一部教你编写内核代码的指南,而是一场探寻Linux内核设计思维的思想之旅。 在系统编程的世界里,人们常常迷失于符号定义、头文件结构与实现细节的丛林中。然而剥离代码表象,内核实则是一个井然有序的响应式系统——它受上下文环境所规约,以分离原则为基石,从内存管理到任务调度的每一处设计,都浸透着精准的设计意图。 ...

June 27, 2026 · 98 min · 48697 words

xv6 分析与总结

系统概述与启动流程 (关注宏观状态流转:从 Machine Mode 到 Supervisor Mode,再到第一个用户进程的诞生) 核心概念 启动流程的本质是特权级的逐级让渡:从硬件最高特权(Machine Mode)出发,经过层层初始化和降权,最终将控制权交给最不信任的用户程序。整个过程是一条从"全权控制"到"受限执行"的信任链——每一步都在缩小 CPU 的权限范围,同时建立更多的软件抽象层。 ...

June 13, 2026 · 37 min · 18138 words

IO设备

计算机与物理世界交互的方式,通过各种io设备,能够使用计算机做任何事 就像人操作各种机器一样,机器提供各种开关和按钮,仪表和指示灯,进料口和出料口。计算机中的io设备将这些物理操作抽象成了寄存器和地址,通过访问或设置不同的寄存器和地址实现和io设备的交互 ...

June 11, 2026 · 2 min · 566 words

OS

计算机中的硬件, 软件,操作系统都是可以看作一个状态机 先讲os, os的模型简单说就是一个管理多个软件(状态机)的一个状态机. os的每个状态就是当前时间下的所有其他进程的状态, 在单核处理器下, 每次os的状态转移时会随机选择一个程序运行下一步,这就是调度. os的状态机中除了进程外,还有为了进程通信的缓冲区. ...

June 11, 2026 · 2 min · 576 words

OS简介

这是一个关于linux的一种自我的想象, 是我自己为了更好的理解linux而写的一种笔记, 我通过不同的视角,来描述这个程序的世界, 主要的目的不是为了完全掌握或者完整的类比操作系统的所有结构. 我的目的只是在于对os的各个部分有一个更加直观的理解, 这种理解是一种直观的, 表面的理解, 因此他并不能提高自己的linux编程水平, 就像来到一个新的城市, 我可以直观的了解城市的大致样貌, 但是关于城市是如何事无巨细的运行的, 这必须要真实的去体验才能真正了解. ...

June 11, 2026 · 1 min · 287 words

RISC-V trap / syscall / trampoline 机制完整解析

RISC-V Trap / Syscall / Trampoline 机制完整解析 一、整体流程概览 1.1 总览 用户态通过 ecall 触发异常 → 硬件最小保存 → 跳转到 stvec → trampoline 完成上下文保存 + 切页表 → 进入内核 → 执行 syscall → 再通过 trampoline 返回用户态。 ...

June 11, 2026 · 3 min · 1117 words

travel_xv6

系统调用syscall(ecall) 1.用户态的准备工作 cpu核心在用户线程(进程)上工作, pc(程序计数器寄存器)指向下一个执行的用户态指令(.text), sp(栈指针寄存器)指向当前用户态线程的栈顶,用于分割栈帧和栈帧中变量的定位. ...

June 11, 2026 · 8 min · 3905 words

tty

tty 所有终端设备的泛称 pty 伪终端 pts 伪终端从属 terminal 终端模拟器 terminal,一个输入输出设备, 在现代os中已经抽象成了控制终端**(controlling terminal), 可以由伪终端,虚拟控制台,串口终端,usb串口担任控制终端**. 它可以 ...

June 11, 2026 · 4 min · 1600 words

xv6总览图

系统总览 进程管理 内存管理 文件系统 trap 系统调用 驱动 用户函数

June 11, 2026 · 1 min · 27 words

内核存储栈

June 11, 2026 · 0 min · 0 words