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()将相应的执行文件块拷贝到主存。

 

 

 

posted @   Fredric_2013  阅读(5225)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示