《穿越操作系统迷雾 从零实现操作系统》王柏生 | PDF下载|ePub下载
穿越操作系统迷雾 从零实现操作系统 版权信息
- 出版社:机械工业出版社
- 出版时间:2023-09-01
- ISBN:9787111732884
- 条形码:9787111732884 ; 978-7-111-73288-4
穿越操作系统迷雾 从零实现操作系统 本书特色
(1)作者背景资深:在百度等企业一线从事操作系统研发20余年,对操作系统有极为深入的理解,是行业里知名的专家。(2)作者善于布道:一直致力于操作系统的教育和布道,深知学习操作系统的难点和痛点,能将复杂的操作系统知识化繁为简、举重若轻,让学习过程事半功倍。(3)成功实践复盘:作者指导自己9岁的孩子学习操作系统,并成功从0到1编写出操作系统,本书内容是整个学习过程的深度复盘。(4)真正零基础,人人学得会:即便你是电信号和二进制都不懂的小学生,你也能跟随本书理解计算机的软硬件和操作系统的工作原理,自己动手编写操作系统。(5)攻克操作系统难关,筑基中国基础软件:本书希望能帮助越来越多的青少年在学生时代就能掌握正确的学习操作系统的方法,理解操作系统和计算机的本质,从小打牢基础,改变我国基础软件受制于人的现状。
穿越操作系统迷雾 从零实现操作系统 内容简介
内容简介这是一本能指导零计算机基础的读者轻松理解计算机软硬件和操作系统工作原理,从而自己动手从0到1编写出一个操作系统的著作。作者在操作系统领域深度耕耘20余载,不仅一直奋斗在百度等企业一线,而且一直致力于操作系统的教育和布道,希望能帮助和指导越来越多的人,尤其是青少年,能从学生时代开始学习操作系统,能从底层原理真正理解操作系统,改变我国基础软件受制于人的现状。本书不仅是作者悟透操作系统本质、厚积薄发的成果,而且是他将复杂的操作系统原理化繁为简、举重若轻,成功指导自己9岁的孩子从0到1编写出一个操作系统的过程的全面复盘和复现。本书驱散了操作系统的迷雾,让操作系统不再神秘和高不可攀,让每一个怀揣操作系统梦的中国人都能理解并实现自己的操作系统。全书一共14章,逻辑上分为上下两篇。上篇(第1~5章) 计算机软硬件基础和原理从计算机如何使用电进行计算开始,首先讲述了电是如何抽象为信息的,处理器是怎样进行运算的,内存是怎样存储信息的,处理器和内存是怎样通过总线连接起来的,处理器是如何访问外设的,之后讲述了这些部件是如何结合起来运行程序的。然后通过使用机器语言编写一个程序,让读者深刻地理解指令和程序。接下来,结合汇编语言讲述了计算机体系结构。*后,从C编译器如何将C语法翻译为汇编语言的角度,聚焦语法后面的本质,让读者彻底地理解C语言,而不再纠结在语言表面的语法。下篇(第6~14章) 从0到1实现一个操作系统从系统引导(包含32位和64位)开始讲起,先后实现并阐述了内存管理、进程管理、中断、进程调度、系统调用、进程间通信,*后实现了在显示器上实现字符以及图形输出,并能接收键盘输入。除了直接从应用程序直接访问内核外,还展示了C库等概念,展示了从应用软件到C库、图形库,*后到内核的完整软件栈。内容简介这是一本能指导零计算机基础的读者轻松理解计算机软硬件和操作系统工作原理,从而自己动手从0到1编写出一个操作系统的著作。作者在操作系统领域深度耕耘20余载,不仅一直奋斗在百度等企业一线,而且一直致力于操作系统的教育和布道,希望能帮助和指导越来越多的人,尤其是青少年,能从学生时代开始学习操作系统,能从底层原理真正理解操作系统,改变我国基础软件受制于人的现状。本书不仅是作者悟透操作系统本质、厚积薄发的成果,而且是他将复杂的操作系统原理化繁为简、举重若轻,成功指导自己9岁的孩子从0到1编写出一个操作系统的过程的全面复盘和复现。本书驱散了操作系统的迷雾,让操作系统不再神秘和高不可攀,让每一个怀揣操作系统梦的中国人都能理解并实现自己的操作系统。全书一共14章,逻辑上分为上下两篇。上篇(第1~5章) 计算机软硬件基础和原理从计算机如何使用电进行计算开始,首先讲述了电是如何抽象为信息的,处理器是怎样进行运算的,内存是怎样存储信息的,处理器和内存是怎样通过总线连接起来的,处理器是如何访问外设的,之后讲述了这些部件是如何结合起来运行程序的。然后通过使用机器语言编写一个程序,让读者深刻地理解指令和程序。接下来,结合汇编语言讲述了计算机体系结构。*后,从C编译器如何将C语法翻译为汇编语言的角度,聚焦语法后面的本质,让读者彻底地理解C语言,而不再纠结在语言表面的语法。下篇(第6~14章) 从0到1实现一个操作系统从系统引导(包含32位和64位)开始讲起,先后实现并阐述了内存管理、进程管理、中断、进程调度、系统调用、进程间通信,*后实现了在显示器上实现字符以及图形输出,并能接收键盘输入。除了直接从应用程序直接访问内核外,还展示了C库等概念,展示了从应用软件到C库、图形库,*后到内核的完整软件栈。
穿越操作系统迷雾 从零实现操作系统 目录
前 言
第1章 计算机基础 1
1.1 认识电 1
1.2 信息表示 5
1.2.1 二进制 5
1.2.2 十六进制 6
1.3 计算 7
1.3.1 逻辑运算 8
1.3.2 逻辑门 8
1.3.3 加法器 10
1.4 内存 12
1.4.1 物理实现 12
1.4.2 数学抽象 16
1.5 总线 17
1.6 寄存器 20
1.7 程序 22
1.8 外存 26
1.9 外设及接口 27
1.9.1 I/O地址空间 28
1.9.2 内存映射I/O 29
1.10 地址空间 30
1.11 数学模型到物理世界 31
第2章 认识Linux 34
2.1 什么是操作系统 34
2.2 文件系统 35
2.3 终端 37
2.4 shell 39
2.5 Linux常用命令 40
2.6 ANSI转义序列 43
2.7 编辑器 45
2.8 准备“物理”计算机 47
第3章 机器语言程序设计 49
3.1 程序及指令 49
3.2 补码 50
3.3 ASCII码 52
3.4 串口 53
3.5 “向串口写字符A”的
程序流程 55
3.6 写外设指令 55
3.7 准备源操作数 57
3.8 准备目的操作数 58
3.9 跳转指令 59
3.10 创建程序文件 60
3.11 程序执行过程 61
3.12 使用kvmtool运行程序 69
第4章 汇编语言程序设计 71
4.1 初识汇编语言 71
4.2 段及段寄存器 72
4.3 指令指针寄存器 74
4.4 通用寄存器 75
4.5 标志寄存器 76
4.6 汇编指令格式 78
4.7 **个汇编程序 78
4.7.1 汇编和链接 79
4.7.2 运行 80
4.7.3 显式设置操作数的
段寄存器 83
4.7.4 伪指令.code16 85
4.8 构建工具Make 85
4.9 操作数寻址 86
4.9.1 立即数寻址 87
4.9.2 直接寻址 88
4.9.3 ModR/M寻址 89
4.9.4 SIB寻址 94
4.9.5 SIB disp寻址 98
4.10 程序运行流程控制 101
4.10.1 选择 101
4.10.2 循环 102
4.11 栈 103
4.12 函数及x86调用约定 107
4.12.1 call和ret指令 108
4.12.2 栈帧 110
4.12.3 多模块及符号可见性 113
4.12.4 参数传递 114
4.12.5 局部变量 116
4.12.6 返回值及参数清理 118
4.12.7 寄存器保存和恢复 119
4.13 链接 122
4.13.1 目标文件合并 123
4.13.2 符号解析 125
4.13.3 符号的可见性 128
第5章 C语言程序设计 129
5.1 基本语法 130
5.1.1 词法元素 130
5.1.2 表达式 131
5.1.3 声明 132
5.1.4 语句 133
5.1.5 标识符 135
5.1.6 对象的存储类别 138
5.1.7 头文件 138
5.1.8 预处理指令 139
5.2 C语言入口 141
5.3 **个C程序 142
5.4 从C语言到机器语言 143
5.5 变量 145
5.5.1 变量类型 146
5.5.2 局部变量 147
5.5.3 全局变量 150
5.5.4 全局变量的链接性 151
5.5.5 静态局部变量 152
5.5.6 变量类型转换 154
5.5.7 溢出 155
5.6 运算 157
5.6.1 算术运算 157
5.6.2 递增和递减 158
5.6.3 关系运算 159
5.6.4 逻辑运算 161
5.6.5 位运算 163
5.6.6 赋值运算 164
5.6.7 运算的优先级和结合性 165
5.7 程序运行流程控制 166
5.7.1 选择 166
5.7.2 循环 168
5.8 数组 172
5.9 结构体 175
5.9.1 基本语法 175
5.9.2 内存布局 176
5.9.3 位域 179
5.10 指针 180
5.10.1 基本语法 181
5.10.2 指向结构体的指针 183
5.10.3 指针的 /-运算 185
5.10.4 双指针 186
5.10.5 void指针 188
5.10.6 空指针 189
5.11 函数 189
5.11.1 基本语法 189
5.11.2 参数的值传递和
指针传递 191
5.11.3 const参数 195
5.11.4 函数指针 195
5.12 内联汇编 197
第6章 32位引导过程 200
6.1 实模式 200
6.2 保护模式 201
6.3 内核映像组成及布局 203
6.3.1 实模式地址空间 203
6.3.2 内核映像的布局 205
6.3.3 内核映像文件组织 206
6.4 创建保护模式的段描述符 207
6.4.1 段描述符格式 207
6.4.2 保护模式的内核代码段
描述符 208
6.4.3 保护模式的内核数据段
描述符 210
6.4.4 创建保护模式的段
描述符表 210
6.5 告知处理器段描述符表地址 211
6.6 开启处理器保护模式 212
6.7 跳转到内核保护模式部分 213
6.7.1 准备保护模式部分 213
6.7.2 跳转到保护模式部分 214
6.8 编译及创建内核映像文件 215
6.8.1 编译内核 215
6.8.2
穿越操作系统迷雾 从零实现操作系统 作者简介
王柏生,资深操作系统技术专家,北京市科学技术进步奖一等奖获得者。有20余年操作系统研发经验,现任百度主任架构师,曾就职于中国科学院软件研究所、红旗Linux,一直从事操作系统相关领域的研发工作,在操作系统领域有深厚积累。著有《深度探索Linux系统虚拟化》《深度探索Linux操作系统》等畅销书。王晟寒,对计算机技术有着浓厚的兴趣,9岁开始跟随爸爸学习编写操作系统,在爸爸的指导下,自己动手完成了本书操作系统的编写。5岁开始学习小提琴,现为学校交响乐团成员。业余时间热爱阅读,喜欢游泳、篮球等体育运动。