Linux内核设计的艺术这本书是我认为对Linux内核描述非常优秀的书籍。书籍中描述了内核启动的流程,内核运行的机理,内存管理,进程管理等等。

#书籍目录

第1章 从开机加电到执行
main函数之前的过程1
1.1 启动BIOS,准备实模式下的中断向量表和中断服务程序1
1.1.1 BIOS的启动原理2
1.1.2 BIOS 在内存中加载中断向量表和中断服务程序3
1.2 加载操作系统内核程序并为保护模式做准备5
1.2.1 加载第一部分内核代码——引导程序(bootsect)5
1.2.2 加载第二部分内核代码——setup7
1.2.3 加载第三部分内核代码——system模块13
1.3 开始向32位模式转变,为main函数的调用做准备17
1.3.1 关中断并将system移动到内存地址起始位置0x0000017
1.3.2 设置中断描述符表和全局描述符表19
1.3.3 打开A20,实现32位寻址21
1.3.4 为保护模式下执行head.s做准备23
1.3.5 head.s开始执行26
1.4 本章小结44
第2章 设备环境初始化及激活进程045
2.1 设置根设备、硬盘46
2.2 规划物理内存格局,设置缓冲区、虚拟盘、主内存46
2.3 设置虚拟盘空间并初始化48
2.4 内存管理结构mem_map初始化50
2.5 异常处理类中断服务程序挂接51
2.6 初始化块设备请求项结构57
2.7 与建立人机交互界面相关的外设的中断服务程序挂接59
2.7.1 对串行口进行设置59
2.7.2 对显示器进行设置60
2.7.3 对键盘进行设置61
2.8 开机启动时间设置63
2.9 初始化进程065
2.9.1 初始化进程068
2.9.2 设置时钟中断71
2.9.3 设置系统调用总入口71
2.10 初始化缓冲区管理结构73
2.11 初始化硬盘75
2.12 初始化软盘77
2.13 开启中断78
2.14 进程0由0特权级翻转到3特权级,成为真正的进程78
2.15 本章小结80
第3章 进程1的创建及执行81
3.1 进程1的创建81
3.1.1 进程0创建进程181
3.1.2 在task[64]中为进程1申请一个空闲位置并获取进程号87
3.1.3 调用copy_process函数89
3.1.4 设置进程1的分页管理94
3.1.5 进程1共享进程0的文件99
3.1.6 设置进程1在GDT中的表项99
3.1.7 进程1处于就绪态100
3.2 内核第一次做进程调度103
3.3 轮转到进程1执行107
3.3.1 进程1为安装硬盘文件系统做准备109
3.3.2 进程1格式化虚拟盘并更换根设备为虚拟盘135
3.3.3 进程1在根设备上加载根文件系统138
3.4 本章小结151
第4章 进程2的创建及执行152
4.1 打开终端设备文件及复制文件句柄152
4.1.1 打开标准输入设备文件152
4.1.2 打开标准输出、标准错误输出设备文件166
4.2 进程1创建进程2并切换到进程2执行169
4.3 加载shell程序178
4.3.1 关闭标准输入设备文件,打开rc文件178
4.3.2 检测shell文件181
4.3.3 为shell程序的执行做准备186
4.3.4 执行shell程序192
4.4 系统实现怠速196
4.4.1 创建update进程196
4.4.2 切换到shell进程执行198
4.4.3 重建shell204
4.5 本章小结205
第5章 文件操作206
5.1 安装文件系统206
5.1.1 获取外设的超级块206
5.1.2 确定根文件系统的挂接点209
5.1.3 将超级块与根文件系统挂接210
5.2 打开文件211
5.2.1 将进程的*filp[20]与file_table[64]挂接212
5.2.2 获取文件i节点213
5.2.3 将文件i节点与file_table[64]挂接223
5.3 读文件224
5.3.1 确定数据块在外设中的位置224
5.3.2 将数据块读入缓冲块228
5.3.3 将缓冲块中的数据复制到进程空间228
5.4 新建文件230
5.4.1 查找文件230
5.4.2 新建文件i节点231
5.4.3 新建文件目录项233
5.5 写文件238
5.5.1 确定文件的写入位置238
5.5.2 申请缓冲块241
5.5.3 将指定的数据从进程空间复制到缓冲块241
5.5.4 数据同步到外设的两种方法242
5.6 修改文件245
5.6.1 重定位文件的当前操作指针246
5.6.2 修改文件246
5.7 关闭文件248
5.7.1 当前进程的filp与file_table[64]脱钩248
5.7.2 文件i节点被释放249
5.8 删除文件250
5.8.1 对文件的删除条件进行检查251
5.8.2 进行具体的删除工作252
5.9 本章小结255
第6章 用户进程与内存管理256
6.1 线性地址的保护256
6.1.1 进程线性地址空间的格局256
6.1.2 段基址、段限长、GDT、LDT、特权级257
6.2 分页260
6.2.1 线性地址映射到物理地址260
6.2.2 进程执行时分页261
6.2.3 进程共享页面267
6.2.4 内核分页270
6.3 一个用户进程从创建到退出的完整过程273
6.3.1 创建str1进程273
6.3.2 str1进程加载的准备工作285
6.3.3 str1进程的运行、加载289
6.3.4 str1进程的退出296
6.4 多个用户进程同时运行299
6.4.1 进程调度299
6.4.2 页写保护303
6.5 本章小结309
第7章 缓冲区和多进程操作文件310
7.1 缓冲区的作用310
7.2 缓冲区的总体结构311
7.3 b_dev、b_blocknr及request的作用312
7.3.1 保证进程与缓冲块数据交互的正确性312
7.3.2 让数据在缓冲区中停留的时间尽可能长320
7.4 uptodate和dirt的作用325
7.4.1 b_uptodate的作用326
7.4.2 b_dirt的作用331
7.4.3 i_uptodate、i_dirt和s_dirt的作用334
7.5 count、 lock、wait、request的作用336
7.5.1 b_count的作用336
7.5.2 i_count的作用338
7.5.3 b_lock、*b_wait的作用341
7.5.4 i_lock、i_wait、s_lock、*s_wait的作用344
7.5.5 补充request的作用347
7.6 实例1:关于缓冲块的进程等待队列349
7.7 总体来看缓冲块和请求项370
7.8 实例2:多进程操作文件的综合实例373
7.9 本章小结388
第8章 进程间通信389
8.1 管道机制389
8.1.1 管道的创建过程391
8.1.2 管道的操作396
8.2 信号机制410
8.2.1 信号的使用412
8.2.2 信号对进程执行状态的影响422
8.3 本章小结431
第9章 操作系统的设计指导思想432
9.1 运行一个最简单的程序,看操作系统为程序运行做了哪些工作432
9.2 操作系统的设计指导思想——主奴机制434
9.2.1 主奴机制中的进程及进程创建机制435
9.2.2 操作系统的设计如何体现主奴机制436
9.3 实现主奴机制的三种关键技术438
9.3.1 保护和分页438
9.3.2 特权级440
9.3.3 中断441
9.4 建立主奴机制的决定性因素——先机443
9.5 软件和硬件的关系444
9.5.1 非用户进程——进程0、进程1、shell进程444
9.5.2 文件与数据存储445
9.6 父子进程共享页面450
9.7 操作系统的全局中断与进程的局部中断——信号450
9.8 本章小结451
结束语452

#获取书籍pdf

微信公众号回复 「 Linux内核设计的艺术 」。

留言分享一段自己的校招经历,我选 3 位读者赠送实体书籍。截止明天晚上 20:00。

想拿实体书籍的,请用心评论~


回复「 篮球的大肚子」进入技术群聊

回复「1024」获取1000G学习资料

Linux内核设计的艺术相关推荐

  1. Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理

    为什么80%的码农都做不了架构师?>>>    Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理 本书使用高分辨率精心绘制的300多张图片,帮助大家理解操作系统特有 ...

  2. 【Linux 内核设计的艺术】从开机加电到执行 main 函数之前的过程

    本笔记依据 <Linux 内核设计的艺术> 新设计团队 著 机械工业出版社 以及本人平时的笔记积累而书写,Linux0.11. 文章目录 1.1 启动 BIOS,准备实模式下的中断向量表和 ...

  3. 漫谈 | 从52个思考题来看《Linux内核设计的艺术》

    本文纯属学习笔记,为个人理解,内容正确性不能保证.访问请移步至(David's Wikipedia) https://www.qingdujun.com/ ,这里有能"击穿"平行宇 ...

  4. 图解linux内核设计艺术,Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理...

    Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理 作者:新设计团队 出版日期:2011年05月 文件大小:29.01M 支持设备: ¥6.00在线试读 适用客户端: 言商书局 iPa ...

  5. 跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

    看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多--这确实需要包括我在内的大家多一些耐心,相 ...

  6. linux的内核设计,Linux内核设计的艺术 清晰完整版PDF+配套源码

    <Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理>内容提要: 关于Linux内核的书已经不计其数,但这本书却是独树一帜的,它的内容代表着Linux内核研究成果的世界顶尖 ...

  7. 跟我一起玩《linux内核设计的艺术》第1章(二)——linux内存加载和16位实模式使命的终结

    经过折腾了整整一篇的BIOS,总算可以跑linux 0.11内核源码了.第一个执行的是bootsect.s,如果现在你还没有下载linux 0.11的源码就赶紧去下载.如果自己懒得找,可以参见我下一篇 ...

  8. 《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.15 本章小结...

    2.15 本章小结 本章开始执行以main()函数为代表的用C语言编写的操作系统内核代码,内容涉及硬件初始化.为内核及进程的正确运行所做的初始化.激活进程0. 硬件初始化又可以分为两类:一类是与主机有 ...

  9. linux的内核设计,Linux内核设计艺术(经典).pdf

    <Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理>内容简介:很早就有一个想法,做中国人自己的.有所突破.有所创新的操作系统.计算机语言及编译平台.我带领的"新 ...

最新文章

  1. jquery 的3D Carousel插件参数说明
  2. 资源 | 机器学习、NLP、Python和Math最好的150余个教程(建议收藏)
  3. 修改MD5加密 提高网站安全
  4. 练习题知识点整理_C++
  5. 关于低代码自定义表单的思路和想法
  6. mysql 数据库查询测试_MySQL查询测试经验
  7. 双系统还是虚拟机 linux系统时间,你会选择Mac虚拟机还是双系统
  8. 【Docker学习笔记(五)】小结
  9. 超囧的图片链接批量获取和下载
  10. bitmap位图详解
  11. VC连接SQL2005
  12. 从Gaussian 09的Hartree-Fock计算的fchk文件转换到Columbus的mocoef文件的脚本
  13. ARM、DSP、FPGA比较
  14. 联想服务器引导盘制作工具,联想(Lenovo)服务器System X 系列无法进入引导盘Server Guide的解决方案 - 王耍耍...
  15. Docker架设服务器系列
  16. 寒假2019培训:白银莲花池-usaco2007(洛谷P2411)
  17. 单片机实现模块化编程:思维+实例+系统教程(实用程度令人发指)
  18. 【游戏逆向】CS1.6无后坐力基址寻找
  19. NSDTF-DEM格式高程数据转通用的tiff格式高程数据
  20. [FineReport帆软]决策报表frm中实现添加监控声音报警

热门文章

  1. Eclipse开发工具之崩溃和备份
  2. 200多个js技巧代码(五)
  3. BackGroundWorker用法
  4. 小程序员的大梦想 与盖茨像哥们儿
  5. Android应用开发—浅谈MVX模式
  6. 网络爬虫--17.【BeautifuSoup4实战】爬取腾讯社招
  7. linux无法访问443端口,linux – 为什么我无法在Ubuntu上ping端口443?
  8. python人脸识别代码百度ai_python百度AI人脸识别API测试
  9. jquery中的 $(function(){})
  10. dmp文件查看表空间_innoDb文件