购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

当您拿起这本书的时候,相信您和我一样对探究Linux操作系统内部的运作机制抱有浓厚的兴趣。正是因为这浓厚的兴趣,我在2009年主动申请担任陈香兰老师主讲的Linux操作系统分析课程的助教,2012年开始和李春杰老师合作主讲Linux操作系统分析课程。随着对Linux内核理解的深入,2013年,我在Linux内核代码的基础上开发了mykernel实验平台,相对于从硬件平台或虚拟机入手编写操作系统内核,mykernel提供了与CPU指令集架构基本无关的极简虚拟机和短小精悍的模拟内核,巧妙地规避了CPU初始化过程中晦涩、繁杂的汇编语言代码。因此mykernel得到了诸多内核学习者的良好反馈,也产生了诸如kernel-in-kernel一类的衍生项目。

正是由于mykernel使用者和中国科学技术大学软件学院同学们的支持和鼓励,在孙志岗老师的指导下,“Linux内核分析”慕课课程有幸在2015年入选网易云课堂“顶尖中文大学计算机专业课程体系”;随后我和娄嘉鹏、刘宇栋两位老师一起合作出版了《庖丁解牛Linux内核分析》一书;线上课程“Linux操作系统分析”获得了教育部“国家精品在线开放课程”和“国家级一流本科课程”认定,还被中国高校计算机教育MOOC联盟评为“优秀课程”。其实我自己心里清楚这一连串荣誉名不副实,我并没有真正揭开Linux内核运作的机制,或者说对很多地方知其然不知其所以然。几年来我一直不断扩展教学内容,比如从32位x86扩展到64位x86,还扩展到了I/O和网络协议栈等,但是对Linux内核的运行机制和源代码的设计结构背后隐藏的奥秘还不够清晰,不够融会贯通。

2021年暑假,在华为公司张相锋、伍伯东两位工程师协助下,我将课程内容扩展到了ARM64指令集架构,通过与x86架构的对比,我开始理解Linux内核源代码兼容不同CPU指令集架构的软件设计,走出了x86架构的思维惯性。打通CPU指令集架构这一底层接口之后,再结合POSIX标准中的工具集、标准库及系统调用这些上层接口,我深入理解了Linux操作系统的进程地址空间和进程切换等关键技术。从这里我体会到了老子《道德经》中“万物并作,吾以观复”的玄妙。为了分享这种洞悉玄妙的愉悦,暑假结束前我就以“ARM64 Linux核心精讲”为题在网易云课堂上发布了视频,本书的撰写也是出于同样的目的。

本书是中国科学技术大学软件学院多年来Linux操作系统分析课程的教学总结,践行以代码为中心,理论和实践相结合,以系统化的视角深入分析Linux系统运转的结构特征和关键环节,辅助系统软件开发者将理论和实际在头脑中进行融合。“Linux内核分析”慕课课程从2015年在网易云课堂“顶尖中文大学计算机专业课程体系”中上线以来,据不完全统计,在多个平台累计选课不少于10万人次,课程还得到不少兄弟高校和软件企业的采纳。从学员反馈看,在mykernel实验平台及Linux操作系统构建和调试中学习,代码执行的一般模型和特殊环节都能逐一得到深入理解,有效提高了学习者对计算机系统的理解水平。

在华为智能基座项目的支持下,进一步结合工业界系统软件人才能力的需求,本书和相关课程得以升级和拓展。如果能在此基础上形成与Linux操作系统相关的课程群,加强全国兄弟高校的教研合作和师资培训,并有组织地在全国推广我们总结出的有益做法和课程资源,就一定能为提高系统软件人才培养质量和提供国家科技战略需求人才贡献力量。

我们在Linux操作系统教学中一直秉持开放共享的开源理念,从慕课课程建立之初就通过网易云课堂和学堂在线等在线教育平台免费向社会开放教学视频,通过GitHub/Gitee免费向社会共享源代码和实验环境,而且很多教学资源都是教研室师生独创的,也因此得到兄弟高校任课教师和学员的广泛好评。相信在同行和学员的支持和帮助下,我们能够进一步推出全网独一无二的教学资源,并在此基础上创新教研形态,加强教学研究和师资培训,凝练出系统软件人才培养的新方法、新思路和新范式。

致谢

在本书编写过程中得到众多单位和个人的支持与帮助。

首先感谢我的妻子,她独自承担了家中一切事务,才使得我有精力完成本书的写作,某种意义上她是本书得以出版的第一关键。

感谢华为公司的孙海峰、罗静和严伟等业界专家对于本书的编写给予的大力支持和帮助。

感谢伍伯东、张相锋、刘昊、卢景晓等华为技术专家在本书编写过程中给予的具体指导。

本书受到2021年度中国科学技术大学研究生教育创新计划项目优秀教材出版项目资助,感谢学校对教材出版工作的支持。

感谢人民邮电出版社陈冀康、李瑾和出版编辑团队的辛苦努力,使得本书得以出版。

感谢我的同事陈香兰老师,我是从做她的助教开始学习Linux内核的;感谢西安邮电大学陈莉君老师和国防科技大学罗宇老师等前辈,我是从他们的著作中不断学习进步的;感谢中科院计算所张福新老师审阅了书稿并给出了具体修改意见;感谢李春杰、娄嘉鹏和刘宇栋老师,围绕Linux操作系统我们曾共同学习、一起工作。

在本书编写过程中做出贡献的有:娄嘉鹏老师负责了第12章的编写,其他章节的早期版本娄老师亦有所贡献;李春杰老师对全书内容的编写给予了指导并完整审阅了书稿;艾平、严炼、刘志涛、刘子洋、刘润晗、卢宇、马一飞等同学辅助了本书部分内容的编写和个别实验的验证。在此对以上老师和同学,以及所有直接或间接为本书做出贡献的朋友致以诚挚的谢意。

由于编者水平有限,书中不当之处在所难免,欢迎广大同行和读者批评指正。

孟 宁
2023年5月 brPG/13S0JOPkLT41IZW37w9nnYBVDqcGN0q58Dn5tHt7wwSj2UsVHTsA8+pTxdt

点击中间区域
呼出菜单
上一章
目录
下一章
×