极客时间商城店铺主页二维码
极客时间商城
为极致和美好付费
微信扫描二维码,访问我们的微信店铺

Linux源码趣读

79.00
运费: 免运费
库存: 0 件
商品已售罄 收藏 / 分享
Linux源码趣读 商品图0
Linux源码趣读 商品图1
Linux源码趣读 商品图2
Linux源码趣读 商品缩略图0 Linux源码趣读 商品缩略图1 Linux源码趣读 商品缩略图2

商品详情

书名:Linux源码趣读
定价:158.0
ISBN:9787121462870
作者:闪客
版次:*1版
出版时间:2023-09

内容提要:
用读一本小说的心态来阅读本书,你会对整个操作系统的体系结构和逻辑细节有非常清晰的认识,从此爱上并阅读更多的操作系统源码。*1部分:进入内核前的苦力活。覆盖从开机到运行到Linux中的main函数的关键流程解析,帮你清晰认识Intel CPU的体系结构。*2部分:“大战”前期的初始化工作。讲述main中的各种初始化函数,这些函数是操作系统各个模块的交互桥梁,为理解后续操作系统各个模块的运作原理打好基础。第3部分:一个新进程的诞生。讲述从内核态切换到用户态,并建立起*一个用户进程的全部过程。学完这部分,你将会理解一个多进程的操作系统是如何建立和运作的。第4部分:shell程序的到来。主要讨论如何将磁盘中存储的shell程序加载到内存中来,并*终交给CPU去执行。通过这个过程你会看清一个程序从存储到硬盘到*终被执行的全部过程。第5部分:一条shell命令的执行。让我们跟着一条shell命令“走南闯北”,从用户输入给计算机一个字符串开始,一直到该程序的*终执行,这一过程能帮你把前面所学的知识融会贯通,整个操作系统的启动流程与运作原理,将会生动形象地浮现在你的脑海中。



作者简介:
闪客,平时乐于研究计算机底层技术与技术分享。作为“无聊的”微信公众号作者,两年时间积累近10万粉丝,擅长使用通俗易懂的语言讲解复杂的技术原理,他的“破玩意”系列、“降妖除魔”系列、“操作系统源码”系列等,都深受读者喜爱。

媒体评论:
以经典Linux版本进行源码解读,深入内核代码学习,提升软件研发、操作系统内核设计能力

目录:
*1 部分 进入内核前的苦力活
第1回 *开始的两行代码  / 2
开机后初始化指向BIOS  / 3
读取硬盘启动区(*一扇区)  / 4
加载到内存 0x7c00 位置,并跳转到这里  / 5
第2回 从0x7c00 到0x90000  / 8
第3回 做好访问内存的基础准备工作  / 13
这些寄存器是干什么的  / 14
CPU 访问内存的三种途径  / 15
再次回顾一下前三回的内容  / 16
第4回 把全部的操作系统代码从硬盘搬到内存  / 17
把剩下的操作系统代码从硬盘请到内存  / 17
聊聊操作系统的编译过程  / 21
挪来挪去的真讨厌  / 22
扩展阅读:什么是中断  / 23
扩展阅读:什么是软中断  / 38
第5回 将重要的操作系统代码放在零地址处  / 48
第6回 解决段寄存器的历史包袱问题  / 56
保护模式下的物理地址计算方式  / 57
全局描述符表  / 59
第7回 六行代码进入保护模式  / 63
第8回 重新设置中断描述符表与全局描述符表  / 69
第9回 开启分页机制  / 75
*10 回 进入main 函数前的*后一跃  / 86
*1 部分总结与回顾  / 92
*2 部分 “大战”前期的初始化工作
*11 回 整个操作系统就二十几行代码  / 98
*12 回 管理内存前先划分出三个边界值  / 103
*13 回 主内存初始化mem_init  / 106
*14 回 中断初始化trap_init  / 110
*15 回 块设备请求项初始化blk_dev_init  / 116
*16 回 控制台初始化tty_init  / 123
*17 回 时间初始化time_init  / 132
*18 回 进程调度初始化sched_init  / 138
*19 回 缓冲区初始化buffer_init  / 147
*20 回 硬盘初始化hd_init  / 155
*2 部分总结与回顾  / 159
第3 部分 一个新进程的诞生
*21 回 第3 部分全局概述  / 172
move_to_user_mode  / 173
fork  / 174
init  / 174
pause  / 175
*22 回 从内核态切换到用户态  / 176
让进程无法跳出用户态  / 176
内核态与用户态的本质—特权级  / 177
特权级转换的方式  / 178
除了改变特权级还做了哪些事  / 181
*23 回 如果让你来设计进程调度  / 184
整体流程设计  / 185
上下文环境  / 186
运行时间信息  / 188
优先级  / 188
进程状态  / 189
*24 回 从一次定时器滴答来看进程调度  / 192
*25 回 通过fork 看一次系统调用  / 197
*26 回 fork 函数中进程基本信息的复制  / 205
*27 回 透过fork 来看进程的内存规划  / 213
LDT 的赋值  / 214
页表的复制  / 217
*28 回 番外篇——我居然会认为*威著作写错了  / 221
*29 回 番外篇——写时复制就这么几行代码  / 227
储备知识  / 227
写时复制的本质  / 230
看看代码是怎么写的  / 232
第30 回 番外篇——你管这破玩意儿叫文件系统  / 237
第3 部分总结与回顾  / 251
第4 部分展望  / 254

第4 部分 shell 程序的到来
第31 回 拿到硬盘信息   / 258
第32 回 加载根文件系统  / 264
硬盘中的文件系统格式是怎样的  / 266
内存中用于文件系统的数据结构有哪些  / 267
第33 回 打开终端设备文件  / 272
第34 回 进程2 的创建   / 281
fork  / 282
close  / 285
open  / 285
execve  / 286
第35 回 execve 加载并执行shell 程序   / 287
读取文件开头 1KB 的数据  / 289
将这 1KB 的数据解析为 exec 结构  / 290
判断是脚本文件还是可执行文件  / 291
准备参数空间  / 291
设置 eip 和 esp,完成摇身一变  / 296
计算机的世界没有魔法  / 297
第36 回 缺页中断  / 301
跳转到一个不存在的地址会发生什么  / 302
缺页中断do_no_page  / 304
缺页中断返回  / 309
第37 回 shell 程序跑起来了  / 311
第38 回 操作系统启动完毕!  / 317
第39 回 番外篇——调试Linux *早期的代码  / 322
整体思路和效果  / 322
*一步:配置虚拟机  / 324
*二步:安装qemu  / 324
第三步:下载并运行可调试的 Linux-0.11 源码  / 325
第四步:通过 vscode 远程调试  / 327
第40 回 番外篇——为什么有些技术原理你怎么看也看不懂  / 331
第4 部分总结与回顾  / 333
第5 部分 一条shell 命令的执行
第41 回 一条shell 命令的执行过程概述   / 338
第42 回 用键盘输入一条命令  / 342
第43 回 shell 程序读取你的命令  / 352
第44 回 进程的阻塞与唤醒  / 359
第45 回 解析并执行shell 命令  / 364
第46 回 读硬盘数据全流程  / 375
如果让你来设计这个函数  / 375
鸟瞰操作系统的读操作函数  / 376
执行读操作file_read  / 382
第47 回 读取硬盘数据的细节  / 391
第48 回 信号  / 400
第49 回 番外篇——为什么你学得比别人慢  / 406
第5 部分总结与回顾  / 411
极客时间商城店铺主页二维码
极客时间商城
为极致和美好付费
扫描二维码,访问我们的微信店铺

Linux源码趣读

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏