《操作系统设计与实现》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:陈文智主编;施青松,龙鹏编
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2017
  • ISBN:9787040467529
  • 页数:288 页
图书介绍:本书为“基于系统能力培养的计算机专业课程建设研究”项目规划教材。本书定位于初学者的动手实践类操作系统教材,带领读者一步步从无到有,实现一个近1万行的小型内核Lcore。全书共11章。其中,第1章简单回顾操作系统的基本原理;第2章将从操作系统五大模块入手设计Lcore系统;第3章将为Lcore添加VGA显示功能;第4章从时钟中断入手讨论如何在内核中实现对中断进行处理;第5章实现键盘输入功能;第6章分别实现内存管理系统的Bootmem、Buddy、Slub分配器;第7章介绍进程管理初始化、进程创建、页异常处理和进程调度;第8章将实现一个能够在Lcore内核中运行的类FAT32文件系统,同时也涉及如何编写一个SD卡的小驱动;第9章实现系统调用模块;第10章开发一款专属、简单的shell;第11章总结全文。附录是硬件实验平台手册,说明平台的有关使用细节,以便读者在开发过程中随时查阅。本书可作为本科计算机类专业操作系统课程配套的实践教材,也可供有关技术人员参考。

第1章 操作系统开发介绍 1

1.1 操作系统原理 1

1.1.1 进程管理 1

1.1.2 内存管理 2

1.1.3 文件管理 3

1.1.4 I/O设备管理 3

1.1.5 用户接口 4

1.2 实验平台简介 5

1.2.1 物理实验平台 5

1.2.2 计算机硬件体系结构 7

1.2.3 QS模拟器 9

1.2.4 平台指令集 9

1.3 开发环境搭建 10

1.3.1 交叉编译工具链 10

1.3.2 QS模拟器使用 15

1.3.3 其他工具 25

小结 26

第2章 系统设计与初始化 27

2.1 Lcore整体设计 27

2.1.1 进程管理 27

2.1.2 内存管理 29

2.1.3 文件系统 31

2.1.4 I/O设备 32

2.1.5 用户接口 32

2.2 建立初始化框架 33

2.2.1 init_kernel函数 33

2.2.2 中断异常入口 35

2.2.3 内核页表初始化 38

2.2.4 其他初始化 44

小结 45

第3章 VGA显示功能 46

3.1 VGA初始化 46

3.1.1 实验平台VGA介绍 46

3.1.2 实现VGA初始化 48

3.2 实现put_char函数 53

3.2.1 scroll_screen函数 54

3.2.2 put_char_ex函数 57

3.2.3 put_char函数 57

3.3 实现printk函数 60

3.3.1 可变参数函数 61

3.3.2 相关子函数的实现 64

3.3.3 printk函数的实现 67

小结 70

第4章 处理时钟中断 71

4.1 硬件的外部中断 71

4.1.1 机制剖析 71

4.1.2 相关硬件接口 72

4.2 中断处理注册机制 74

4.2.1 相关数据结构 74

4.2.2 中断处理入口 80

4.2.3 中断处理注册 86

4.3 时钟中断实现 88

4.3.1 时钟中断注册 88

4.3.2 显示信息规划 89

4.3.3 系统时间显示 92

小结 97

第5章 键盘输入功能 98

5.1 键盘中断处理 98

5.1.1 相关硬件接口 98

5.1.2 实现键盘中断处理 99

5.2 键盘扫描码解析 102

5.2.1 键盘扫描码 102

5.2.2 解析扫描码 103

小结 108

第6章 物理内存管理 109

6.1 内存管理策略 109

6.2 Bootmem管理实现 111

6.2.1 Bootmem数据结构 111

6.2.2 Bootmem初始化 112

6.3 Buddy系统实现 126

6.3.1 Buddy系统数据结构 126

6.3.2 Buddy系统初始化 127

6.3.3 Buddy系统内存释放 129

6.3.4 Buddy系统内存分配 131

6.4 Slub系统实现 134

6.4.1 Slub系统数据结构 134

6.4.2 Slub系统初始化 135

6.4.3 Slub系统分配内存 139

6.4.4 Slub系统释放内存 144

小结 146

第7章 实现进程管理 147

7.1 进程管理初始化 147

7.1.1 进程数据结构 147

7.1.2 进程初始化 151

7.2 进程创建 168

7.3 页异常处理 174

7.3.1 缺页异常处理 174

7.3.2 写保护异常 176

7.4 进程调度 180

7.4.1 调度初始化 180

7.4.2 执行调度 181

小结 185

第8章 实现文件系统 186

8.1 SD卡驱动程序实现 186

8.1.1 SD卡通信方式简介 186

8.1.2 实现SPI通信 187

8.1.3 指令处理 187

8.1.4 实现SD卡初始化 189

8.1.5 实现SD卡读操作 192

8.1.6 实现SD卡写操作 196

8.2 文件系统实现 202

8.2.1 文件控制块的实现 202

8.2.2 缓存机制的实现 203

8.2.3 FAT表 210

8.2.4 文件系统初始化 212

8.2.5 打开文件 216

8.2.6 关闭文件 222

8.2.7 文件读取 224

8.2.8 文件写入 227

8.2.9 创建文件 234

小结 238

第9章 添加系统调用 239

9.1 系统调用框架 239

9.1.1 系统调用入口 239

9.1.2 系统调用初始化 242

9.1.3 系统调用定义 243

9.2 添加系统调用 244

9.2.1 进程管理相关 244

9.2.2 输入显示相关 246

9.2.3 文件系统相关 248

小结 250

第10章 实现简单shell 251

10.1 实现用户态库 251

10.2 实现shell程序 254

10.2.1 解析程序 255

10.2.2 内建命令 258

10.3 其他基本程序 261

10.3.1 ls命令 261

10.3.2 ps命令 262

10.3.3 kill命令 263

小结 264

结束语 265

附录A 实验平台手册 267

A.1 实验平台详细介绍 267

A.1.1 Sword实验平台 267

A.1.2 物理地址分配 270

A.1.3 CPO寄存器组 270

A.1.4 中断处理 273

A.1.5 MMU功能 274

A.1.6 外设接口 275

A.2 实验平台指令集 284

A.2.1 算术运算指令 284

A.2.2 逻辑运算指令 285

A.2.3 移位指令 285

A.2.4 读写指令 285

A.2.5 跳转指令 286

A.2.6 自陷指令 287

A.2.7 CP指令 287

A.3 实验平台寄存器 287

A.3.1 通用寄存器 287

A.3.2 CPO寄存器 288