当前位置: 首页 > news >正文

【译】《心悟内核:先懂设计,再读代码》—9、内核设备模型:硬件如何映射为 /dev

作者:Moon Hee Lee
原文: The Kernel in the Mind

心悟内核:先懂设计,再读代码——内核设备模型:硬件如何映射为 /dev

  • 磁盘驱动器本身并不知道 /dev/sda 是什么,网卡也不清楚 eth0 的含义,而内核本就不会要求硬件具备这类认知。

  • 与之相反,内核维护一套结构化模型,一套分层抽象体系,用以弥合物理硬件与用户态可见逻辑接口之间的鸿沟。从总线、中断,到文件描述符与套接字接口,该模型定义了设备的探测、命名与使用规范。

  • 一切始于总线。PCIe、USB、I²C,这些是设备上报自身的传输通道。内核各类总线子系统,如 drivers/pci/、drivers/usb/ 等,会扫描整条总线,轮询检测已接入设备。若设备上报可识别的厂商信息与设备类型,内核便会创建对应的内部对象,例如 pci_dev、usb_device、i2c_client,并完成设备注册。

  • 设备脱离驱动将无法工作。设备被探测识别后,内核会将设备与驱动完成匹配,驱动程序即为操控硬件的专用代码。块设备驱动可为 PCIe NVMe 固态硬盘注册通用磁盘对象;USB 驱动可为串口适配器提供 TTY 接口;网络驱动则注册网络设备结构体,并为报文收发准备队列。驱动无需关心上层应用如何使用设备,只需保证硬件正常工作。

  • 在驱动层之上,内核将设备划分为不同设备类:块设备、字符设备、网络设备。抽象能力在此层级进一步强化。驱动绑定至对应设备类,内核向上提供统一接口,例如 /dev/sda、/dev/ttyUSB0、eth0,屏蔽底层总线与硬件细节差异。针对块设备,内核管理请求队列;针对字符设备,通过 file_operations 完成系统调用的路由分发;针对网络设备,内核将其整合至 IP 协议栈、套接字层与流量控制模块。

  • 以上接口,即是用户态所能直接感知的形态:/dev 目录下的设备文件、/sys/class/net/ 下的设备条目、调用 open() 后返回的文件描述符。上层应用无需关心存储设备基于 SATA、NVMe 还是 USB 大容量存储协议,这正是抽象设计的核心价值。内核将复杂的物理硬件,封装为稳定、可访问、标准化的逻辑实体。

  • 简洁的上层接口之下,是一套精密的协同调度机制。DMA 映射、IOMMU 地址转换、中断路由,保障数据传输高效且安全。一次对 /dev/sda 的写入操作,会串联起一系列内存操作、请求队列排队、DMA 传输,最终落地为设备 I/O。发往 eth0 的网络报文,会封装为 sk_buff 结构体,递交至网卡驱动、完成 DMA 地址映射,最终通过物理链路发送,整套复杂流转过程对应用完全透明。

  • 内核设备模型实现了这一切。它将设备本身与工作原理解耦,将硬件接入方式与上层使用方式隔离。设备依次经过探测、命名、驱动匹配、多层抽象,最终以可用形态呈现给用户空间。

  • 这就是 /dev/sda 得以存在的原因。

  • 并非由硬件自行定义,而是由内核抽象构造而来。

如本文对你有些许帮助,欢迎大佬支持我一下(点赞+收藏+关注、关注公众号等),您的支持是我持续创作的竭动力
支持我的方式

http://www.jsqmd.com/news/1192002/

相关文章:

  • 毕节市赫章县 2026最新靠谱黄金回收门店TOP排行榜 黄金回收白银回收铂金回收店铺及电话地址推荐 - 大熊猫898989
  • 开源3D建模软件FreeCAD核心工作台与实战场景解析
  • GACCode实战指南:本地化Claude编程工作流搭建
  • Unity运行时动态加载FBX/OBJ模型与贴图:TriLib 2.x实战指南
  • 基于MATLAB的和差测角天线方向图优化与仿真实践
  • 从零读懂 K8s:核心概念、集群架构与工作原理
  • AMIC120工业SoC实战:异构架构、PRU实时控制与EtherCAT驱动开发详解
  • 测试工具彻底区分:JUnit / Mockito / MockMvc
  • 滁州市全椒县 2026最新靠谱黄金回收门店TOP排行榜 黄金回收白银回收铂金回收店铺及电话地址推荐 - 盛世金银回收
  • 大模型时代数据分析速成:SQL与Python语法速成+项目实战
  • 影刀RPA 影刀市场变现:如何发布和运营收费流程
  • 物理层:从比特到信号的工程艺术——深入解析数据通信的物理基础
  • 图解MD2:首个互联网哈希算法的前世今生与源码实战
  • ERP系统选型评估指南:中小企业如何评估一款ERP适不适合自己
  • FPGA入门(六):Vivado 工程复用 + 流水灯实战(参数化设计)
  • 第十二篇:共识的边界(后记)
  • 2026 年现阶段,宏伟正规的SaaS管理系统定制开发供应厂家找哪家,别买标准化软件了!这招让系统精准匹配业务流程,效率直接翻倍 - 行业推荐官【官方】
  • 模板驱动文档自动化:让PDF生成具备条件判断与数据联动能力
  • 代码对话层:构建可追问、带记忆的本地化代码理解系统
  • VirtualBox虚拟机导入与静态IP配置:从环境准备到网络连接实战
  • 跨境电商自动化运营:基于AI Agent的跨系统业务架构设计 —— 深度解析与主流方案横评
  • UE5 Groom毛发系统全流程:从3DsMax引导线到实时物理模拟
  • 毕节市金沙县 2026最新靠谱黄金回收门店TOP排行榜 黄金回收白银回收铂金回收店铺及电话地址推荐 - 大熊猫898989
  • [生命科学] SnapGene实战:从酶切位点筛选到同源重组优化的载体构建全流程
  • vibe-coding 安装教程:Claude code+deepseek+pycharm
  • Python open()函数实战:模式选择与文件操作避坑指南
  • 2026年7月最新贵阳积家官方售后客服电话及服务网点地址查询 - 积家官方售后服务中心
  • LabVIEW图像模式匹配实战:从灰度到几何的工业缺陷检测
  • 2026 年至今,同仁口碑好的水库钢制闸门厂家定制厂家全面解析与选购指南,别信低价!这玩意儿一旦漏水,抢修费够买十套新的 - 行业推荐【认证官】
  • 〔十四〕员工信息模型:60个字段的设计思路与验证器