自研操作系统--DIM-SUM设计与实现 pdf下载pdf下载

自研操作系统--DIM-SUM设计与实现百度网盘pdf下载

作者:
简介:本篇提供书籍《自研操作系统--DIM-SUM设计与实现》百度网盘pdf下载
出版社:博道图书专营店
出版时间:2020-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息(以实物为准)

  • 商品名称:自研操作系统--DIM-SUM设计与实现
  • 作者:谢宝友|责编:张春雨
  • 定价:129
  • 出版社:电子工业
  • 书号:9787121391866

其他参考信息(以实物为准)

  • 出版时间:2020-08-01
  • 印刷时间:2020-08-01
  • 版次:1
  • 印次:1
  • 开本:16开
  • 包装:平装
  • 页数:456
  • 字数:748千字

编辑推荐语

中国人自己的操作系统!

内容提要

本书详细阐述了自研操作系统DIM-SUM的设计与实现,提供了在ARM 64虚拟机中动手实践DIM-SUM及参与DIM-SUM开发的方法。针对DIM-SUM操作系统的同步与互斥、调度、内存、中断与定时器、块设备、文件系统模块进行了详细的分析,包括这些模块的设计思路、数据结构定义、关键API说明。 重要的是,本书对各个模块的主要函数进行了逐行解释,有助于读者深刻理解如何实现一款实用的操作系统。 ,本书还展望了接下来10年DIM-SUM操作系统的发展目标,希望 终其能发展为可以在服务器系统、桌面系统中实用的自研操作系统。

作者简介

谢宝友,曾任中兴嵌入式实时操作系统技术总工,该系统获第四届中国工业大奖;中兴通讯2010年度金银奖获得者;阿里集团2019年度安全生产之星金奖获得者;2018、2019阿里集团“ ” 贡献奖获得者;《深入理解并行编程》译者;Linux ZTE架构维护者;DIM-SUM自研操作系统发起者和创始人。

目录

第 1章 准备工作1
1.1 DIM-SUM简介1
1.2 DIM-SUM是什么1
1.2.1 DIM-SUM的 个版本为什么是HOT-POT1
1.2.2 DIM-SUM欢迎什么2
1.2.3 DIM-SUM不欢迎什么3
1.3 获得源代码3
1.3.1 通过网页下载源代码3
1.3.2 通过Git获取源代码3
1.4 搭建调试开发环境4
1.4.1 安装ubuntu 16.044
1.4.2 ubuntu 16.04环境配置5
1.4.3 搭建编译环境6
1.4.4 编译HOT-POT7
1.4.5 运行HOT-POT8
1.4.6 开始调试10
1.5 向DIM-SUM操作系统提交补丁11
1.5.1 心态11
1.5.2 准备工作11
1.5.3 制作补丁13
1.5.4 制作正确的补丁14
1.5.5 发送补丁16
1.6 获得帮助17
1.7 提醒17
第 2章 算法基础18
2.1 链表18
2.2 散列表19
2.3 红黑树20
2.4 基树22


第 3章 计数与互斥同步23
3.1 计数23
3.1.1 计数的难题24
3.1.2 计数器24
3.1.3 近似计数器27
3.1.4 引用计数31
3.2 内核互斥原语32
3.2.1 每CPU变量32
3.2.2 自旋锁38
3.2.3 自旋位锁42
3.2.4 自旋顺序锁44
3.2.5 自旋读/写锁47
3.2.6 读/写信号量50
3.2.7 互斥锁56
3.3 内核同步原语60
3.3.1 信号量的设计原理60
3.3.2 信号量的数据结构61
3.3. 3 信号量API61
3.3.4 信号量的实现62
第 4章 调度65
4.1 基本概念65
4.1.1 进程和线程65
4.1.2 任务66
4.1.3 任务抢占66
4.1.4 idle线程66
4.2 SMP CPU初始化66
4.3 数据结构71
4.3.1 线程71
4.3.2 调度队列76
4.3.3 杂项77
4.4 调度子系统初始化77
4.4.1 init_sched_early函数78
4.4.2 init_idle_process函数78
4.4.3 init_sched函数79
4.5 线程调度79
4.5.1 上下文切换79
4.5.2 唤醒线程82
4.6 调度API85
4.6.1 等待队列85
4.6.2 位等待队列89
4.6.3 线程睡眠93
4.6.4 消息队列96
第 5章 中断及定时器108
5.1 中断控制器初始化108
5.1.1 主CPU中断控制器初始化109
5.1.2 从CPU中断控制器初始化110
5.2 中断控制器维护110
5.2.1 中断号映射110
5.2.2 逻辑中断的控制113
5.2.3 设备中断处理函数116
5.3 中断处理119
5.3.1 序言119
5.3.2 中断处理通用流程120
5.3.3 处理外部设备中断122
5.3.4 处理核间中断126
5.3.5 软中断126
5.3.6 尾声126
5.4 工作队列128
5.4.1 工作队列的数据结构128
5.4.2 工作队列的全局变量130
5.4.3 工作队列的API130
5.4.4 工作队列的实现131
5.5 定时器与时间管理139
5.5.1 初始化139
5.5.2 定时器的数据结构139
5.5.3 定时器的全局变量141
5.5.4 定时器的API141
5.5.5 定时器的实现141
5.5.6 定时器中断处理144
5.5.7 时间管理148
第 6章 内存管理151
6.1 内存初始化151
6.1.1 艰难地准备C运行环境151
6.1.2 准备BOOT内存空间152
6.1.3 物理内存块管理152
6.1.4 早期设备内存映射153
6.1.5 初始化每CPU变量157
6.1.6 初始化线性映射157
6.1.7 其他内存初始化工作160
6.2 BOOT内存分配器160
6.2.1 BOOT内存分配API161
6.2.2 BOOT内存分配器的实现161
6.2.3 BOOT内存分配器的销毁163
6.3 页面编号163
6.3.1 页面编号的数据结构164
6.3.2 页面编号的全局变量165
6.3.3 页面编号的API165
6.3.4 页面编号的实现165
6.4 页面分配器168
6.4.1 页面分配器的设计原理168
6.4.2 页面分配器的数据结构169
6.4.3 页面分配器的全局变量174
6.4.4 页面分配器的API175
6.4.5 页面分配器的实现176
6.4.6 页面分配器的初始化192
6.5 Beehive内存分配器193
6.5.1 Beehive内存分配器的设计原理193
6.5.2 Beehive内存分配器的数据结构195
6.5.3 Beehive内存分配器的全局变量197
6.5.4 Beehive内存分配器的API199
6.5.5 Beehive内存分配器的实现199
6.5.6 Beehive内存分配器的初始化214
6.6 I/O内存映射216
第 7章 块设备219
7.1 磁盘及其分区220
7.1.1 磁盘及其分区的数据结构220
7.1.2 磁盘及其分区的全局变量222
7.1.3 磁盘及其分区的API222
7.1.4 磁盘及其分区的实现222
7.2 块设备维护228
7.2.1 块设备的数据结构228
7.2.2 块设备的全局变量230
7.2.3 块设备的API231
7.2.4 块设备的实现231
7.3 I/O请求242
7.3.1 I/O请求的数据结构243
7.3.2 I/O请求的全局变量250
7.3.3 I/O请求的API250
7.3.4 I/O请求的实现251
7.4 I/O调度265
7.4.1 I/O调度的数据结构265
7.4.2 I/O调度的全局变量267
7.4.3 I/O调度的API267
7.4.4 I/O调度的实现268
第 8章 虚拟文件系统271
8.1 挂载、卸载文件系统271
8.1.1 挂载、卸载文件系统的数据结构272
8.1.2 挂载、卸载文件系统的全局变量277
8.1.3 挂载、卸载文件系统的API278
8.1.4 挂载、卸载文件系统的实现278
8.2 文件节点缓存285
8.2.1 文件节点缓存的数据结构286
8.2.2 文件节点缓存的全局变量288
8.2.3 文件节点缓存的API289
8.2.4 文件节点缓存的实现290
8.3 打开、关闭文件304
8.3.1 打开、关闭文件的数据结构305
8.3.2 打开、关闭文件的全局变量308
8.3.3 打开、关闭文件的API309
8.3.4 打开、关闭文件的实现309
8.4 读/写文件319
8.4.1 读/写文件的数据结构320
8.4.2 读/写文件的全局变量323
8.4.3 读/写文件的API323
8.4.4 读/写文件的实现323
8.5 其他功能337
第 9章 杂项文件系统338
9.1 文件系统的挂载338
9.1.1 次加载根文件系统338
9.1.2 第二次加载根文件系统340
9.2 内存文件系统340
9.2.1 内存文件系统的数据结构340
9.2.2 内存文件系统的全局变量340
9.2.3 内存文件系统的API341
9.2.4 内存文件系统的实现341
9.3 设备文件系统349
9.3.1 设备文件系统的数据结构349
9.3.2 设备文件系统的全局变量350
9.3.3 设备文件系统的API351
9.3.4 设备文件系统的实现351
第 10章 LEXT3文件系统358
10.1 简介358
10.1.1 块359
10.1.2 块组描述符359
10.1.3 块位图360
10.1.4 文件节点位图360
10.1.5 文件节点表360
10.1.6 文件节点360
10.1.7 文件日志362
10.2 LEXT3363
10.2.1 LEXT3的数据结构363
10.2.2 LEXT3的全局变量371
10.2.3 LEXT3的API372
10.2.4 LEXT3的实现373
10.3 文件系统日志397
10.3.1 日志的数据结构397
10.3.2 日志的全局变量405
10.3.3 日志的API405
10.3.4 日志的实现406
第 11章 杂项438
11.1 klibc438
11.2 网络子系统440
11.3 SIMPLE-KSHELL440