-
内容大纲
本书详细阐述了自研操作系统DIM-SUM的设计与实现,提供了在ARM 64虚拟机中动手实践DIM-SUM及参与DIM-SUM开发的方法。针对DIM-SUM操作系统的同步与互斥、调度、内存、中断与定时器、块设备、文件系统模块进行了详细的分析,包括这些模块的设计思路、数据结构定义、关键API说明。最重要的是,本书对各个模块的主要函数进行了逐行解释,有助于读者深刻理解如何实现一款实用的操作系统。最后,本书还展望了接下来10年DIM-SUM操作系统的发展目标,希望最终其能发展为可以在服务器系统、桌面系统中实用的自研操作系统。
本书适合于对操作系统研发有兴趣的大学生、研究生,以及从事操作系统相关工作的一线工程师。对于Linux操作系统工程师,本书也极具实用价值。 -
作者介绍
谢宝友,1996年毕业于四川省税务学校税收专业,现供职于中兴微电子操作系统团队,对操作系统内核有较强的兴趣。专职于操作系统内核已经有8年时间。希望利用10年时间,成为一名真正的“内核菜鸟”。主要工作是对Linux进行分析,解决遇到的标准内核故障,并向项目组提出应用程序优化措施。作为LinuxZTE平台的维护者,偶尔也向开源社区提交一些补丁。在中兴通讯操作系统产品部工作期间,作为技术总工参与的电信级嵌入式实时操作系统,获得了行业最高奖——“中国工业大奖”。负责本书第1 1章至附录F,以及附录D的对应答案部分内容翻译。 -
目录
第1章 准备工作
1.1 DIM-SUM简介
1.2 DIM-SUM是什么
1.2.1 DIM-SUM的第一个版本为什么是HOT-POT
1.2.2 DIM-SUM欢迎什么
1.2.3 DIM-SUM不欢迎什么
1.3 获得源代码
1.3.1 通过网页下载源代码
1.3.2 通过Git获取源代码
1.4 搭建调试开发环境
1.4.1 安装ubuntu 16.04
1.4.2 ubuntu 16.04环境配置
1.4.3 搭建编译环境
1.4.4 编译HOT-POT
1.4.5 运行HOT-POT
1.4.6 开始调试
1.5 向DIM-SUM操作系统提交补丁
1.5.1 心态
1.5.2 准备工作
1.5.3 制作补丁
1.5.4 制作正确的补丁
1.5.5 发送补丁
1.6 获得帮助
1.7 提醒
第2章 算法基础
2.1 链表
2.2 散列表
2.3 红黑树
2.4 基树
第3章 计数与互斥同步
3.1 计数
3.1.1 计数的难题
3.1.2 精确计数器
3.1.3 近似计数器
3.1.4 引用计数
3.2 内核互斥原语
3.2.1 每CPU变量
3.2.2 自旋锁
3.2.3 自旋位锁
3.2.4 自旋顺序锁
3.2.5 自旋读/写锁
3.2.6 读/写信号量
3.2.7 互斥锁
3.3 内核同步原语
3.3.1 信号量的设计原理
3.3.2 信号量的数据结构
3.3.3 信号量API
3.3.4 信号量的实现
第4章 调度
4.1 基本概念
4.1.1 进程和线程
4.1.2 任务
4.1.3 任务抢占
4.1.4 idle线程
4.2 SMP CPU初始化
4.3 数据结构
4.3.1 线程
4.3.2 调度队列
4.3.3 杂项
4.4 调度子系统初始化
4.4.1 init_sched_early函数
4.4.2 init_idle_process函数
4.4.3 init_sched函数
4.5 线程调度
4.5.1 上下文切换
4.5.2 唤醒线程
4.6 高级调度API
4.6.1 等待队列
4.6.2 位等待队列
4.6.3 线程睡眠
4.6.4 消息队列
第5章 中断及定时器
5.1 中断控制器初始化
5.1.1 主CPU中断控制器初始化
5.1.2 从CPU中断控制器初始化
5.2 中断控制器维护
5.2.1 中断号映射
5.2.2 逻辑中断的控制
5.2.3 设备中断处理函数
5.3 中断处理
5.3.1 序言
5.3.2 中断处理通用流程
5.3.3 处理外部设备中断
5.3.4 处理核间中断
5.3.5 软中断
5.3.6 尾声
5.4 工作队列
5.4.1 工作队列的数据结构
5.4.2 工作队列的全局变量
5.4.3 工作队列的API
5.4.4 工作队列的实现
5.5 定时器与时间管理
5.5.1 初始化
5.5.2 定时器的数据结构
5.5.3 定时器的全局变量
5.5.4 定时器的API
5.5.5 定时器的实现
5.5.6 定时器中断处理
5.5.7 时间管理
第6章 内存管理
6.1 内存初始化
6.1.1 艰难地准备C运行环境
6.1.2 准备BOOT内存空间
6.1.3 物理内存块管理
6.1.4 早期设备内存映射
6.1.5 初始化每CPU变量
6.1.6 初始化线性映射
6.1.7 其他内存初始化工作
6.2 BOOT内存分配器
6.2.1 BOOT内存分配API
6.2.2 BOOT内存分配器的实现
6.2.3 BOOT内存分配器的销毁
6.3 页面编号
6.3.1 页面编号的数据结构
6.3.2 页面编号的全局变量
6.3.3 页面编号的API
6.3.4 页面编号的实现
6.4 页面分配器
6.4.1 页面分配器的设计原理
6.4.2 页面分配器的数据结构
6.4.3 页面分配器的全局变量
6.4.4 页面分配器的API
6.4.5 页面分配器的实现
6.4.6 页面分配器的初始化
6.5 Beehive内存分配器
6.5.1 Beehive内存分配器的设计原理
6.5.2 Beehive内存分配器的数据结构
6.5.3 Beehive内存分配器的全局变量
6.5.4 Beehive内存分配器的API
6.5.5 Beehive内存分配器的实现
6.5.6 Beehive内存分配器的初始化
6.6 I/O内存映射
第7章 块设备
7.1 磁盘及其分区
7.1.1 磁盘及其分区的数据结构
7.1.2 磁盘及其分区的全局变量
7.1.3 磁盘及其分区的API
7.1.4 磁盘及其分区的实现
7.2 块设备维护
7.2.1 块设备的数据结构
7.2.2 块设备的全局变量
7.2.3 块设备的API
7.2.4 块设备的实现
7.3 I/O请求
7.3.1 I/O请求的数据结构
7.3.2 I/O请求的全局变量
7.3.3 I/O请求的API
7.3.4 I/O请求的实现
7.4 I/O调度
7.4.1 I/O调度的数据结构
7.4.2 I/O调度的全局变量
7.4.3 I/O调度的API
7.4.4 I/O调度的实现
第8章 虚拟文件系统
8.1 挂载、卸载文件系统
8.1.1 挂载、卸载文件系统的数据结构
8.1.2 挂载、卸载文件系统的全局变量
8.1.3 挂载、卸载文件系统的API
8.1.4 挂载、卸载文件系统的实现
8.2 文件节点缓存
8.2.1 文件节点缓存的数据结构
8.2.2 文件节点缓存的全局变量
8.2.3 文件节点缓存的API
8.2.4 文件节点缓存的实现
8.3 打开、关闭文件
8.3.1 打开、关闭文件的数据结构
8.3.2 打开、关闭文件的全局变量
8.3.3 打开、关闭文件的API
8.3.4 打开、关闭文件的实现
8.4 读/写文件
8.4.1 读/写文件的数据结构
8.4.2 读/写文件的全局变量
8.4.3 读/写文件的API
8.4.4 读/写文件的实现
8.5 其他功能
第9章 杂项文件系统
9.1 文件系统的挂载
9.1.1 第一次加载根文件系统
9.1.2 第二次加载根文件系统
9.2 内存文件系统
9.2.1 内存文件系统的数据结构
9.2.2 内存文件系统的全局变量
9.2.3 内存文件系统的API
9.2.4 内存文件系统的实现
9.3 设备文件系统
9.3.1 设备文件系统的数据结构
9.3.2 设备文件系统的全局变量
9.3.3 设备文件系统的API
9.3.4 设备文件系统的实现
第10章 LEXT3文件系统
10.1 简介
10.1.1 超级块
10.1.2 块组描述符
10.1.3 块位图
10.1.4 文件节点位图
10.1.5 文件节点表
10.1.6 文件节点
10.1.7 文件日志
10.2 LEXT3
10.2.1 LEXT3的数据结构
10.2.2 LEXT3的全局变量
10.2.3 LEXT3的API
10.2.4 LEXT3的实现
10.3 文件系统日志
10.3.1 日志的数据结构
10.3.2 日志的全局变量
10.3.3 日志的API
10.3.4 日志的实现
第11章 杂项
11.1 klibc
11.2 网络子系统
11.3 SIMPLE-KSHELL
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...