linux 0.11 源码学习(一)
linux源码断断续续看过好多次,可能是工作中用到linux的项目也断断续续的,总感觉理解的东西还浮在面上。本系列文章记录对linux 0.11版本源码的学习,主要参考资料是赵炯的《Linux内核完全注释》。记得买这本书的时候还在念研究生,当时是完全看不下去,工作这些年算是粗读过,但都不求甚解,好像每次都有收获,但每次都不敢说理解这1万来行代码。今年抽年前这一两周又通读了一遍,这篇文章就作为一个引子,等春节回来好好精读一把整理出一批文章,算是伤其十指不如断其一指吧。
linux 0.11版本相对于现在的2.6版本的内核(就是那本经典的《深入理解linux内核》)而言,真简单很多了,从功能块和核心文件看主要分解如下(待完善):
备注:在上面这些模块中,我觉得比较复杂是系统调用execuve(把一个执行文件加载到内核),因为跨的模块(内存管理、文件系统、块设备驱动)比较多,又涉及到了保护模式的分段分页,先记录如下:
linux 0.11是通过加载XX.out的执行文件产生新的进程。linuxexec.c的do_execuve中加载执行文件,但此时该执行文件并没有被加载到主存,只是分配了虚拟地址空间(即创建了页表)。当CPU执行该进程时,会产生缺页错误中断,此时内存管理模块的do_no_page会被调用,在这个函数中调用块设备驱动的函数II_rw_blk()将相应的执行文件块拷贝到主存。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)