• Linux源码趣读
  • Linux源码趣读
21年品牌 40万+商家 超1.5亿件商品

Linux源码趣读

60 3.8折 158 九五品

仅1件

上海虹口
认证卖家担保交易快速发货售后保障

作者闪客

出版社电子工业出版社

出版时间2023-09

版次1

装帧其他

上书时间2024-10-24

fangliang912的书摊

已实名 进店 收藏店铺

   商品详情   

品相描述:九五品
图书标准信息
  • 作者 闪客
  • 出版社 电子工业出版社
  • 出版时间 2023-09
  • 版次 1
  • ISBN 9787121462870
  • 定价 158.00元
  • 装帧 其他
  • 开本 16开
  • 页数 424页
  • 字数 553千字
【内容简介】
用读一本小说的心态来阅读本书,你会对整个操作系统的体系结构和逻辑细节有非常清晰的认识,从此爱上并阅读更多的操作系统源码。第1部分:进入内核前的苦力活。覆盖从开机到运行到Linux中的main函数的关键流程解析,帮你清晰认识Intel CPU的体系结构。第2部分:“大战”前期的初始化工作。讲述main中的各种初始化函数,这些函数是操作系统各个模块的交互桥梁,为理解后续操作系统各个模块的运作原理打好基础。第3部分:一个新进程的诞生。讲述从内核态切换至用户态,并建立起第一个用户进程的全部过程。学完这部分,你将会理解一个多进程的操作系统是如何建立和运作的。第4部分:shell程序的到来。主要讨论如何将磁盘中存储的shell程序加载到内存中来,并最终交给CPU去执行。通过这个过程你会看清一个程序从存储到硬盘到最终被执行的全部过程。第5部分:一条shell命令的执行。让我们跟着一条shell命令“走南闯北”,从用户输入给计算机一个字符串开始,一直到该程序的最终执行,这一过程能帮你把前面所学的知识融会贯通,整个操作系统的启动流程与运作原理,将会生动形象地浮现在你的脑海中。
【作者简介】
闪客,平时乐于研究计算机底层技术与技术分享。作为“无聊的”微信公众号作者,两年时间积累近10万粉丝,擅长使用通俗易懂的语言讲解复杂的技术原理,他的“破玩意”系列、“降妖除魔”系列、“操作系统源码”系列等,都深受读者喜爱。
【目录】
第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
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP