热门搜索: 中考 高考 考试 开卷17
服务电话 024-23945002/96192
 

一个64位操作系统的设计与实现(第2版)

编号:
wx1204426787
销售价:
¥146.00
(市场价: ¥169.80)
赠送积分:
146
数量:
   
商品介绍

1.基于Intel Core i7处理器的64位多核操作系统
2.引入诸多Linux内核的设计精髓
3.通过U盘引导运行于笔记本电脑
4.支持UEFI、NVMe、SATA、PCIe、驱动模块等功能

本书讲述了一个64位多核操作系统的自制过程。首先从虚拟平台构筑起一个基础框架,随后移植到物理平台中进行升级、完善与优化。为了凸显64位多核操作系统的特点,物理平台选用搭载Intel Core i7处理器的笔记本电脑和台式计算机。与此同时,本书还将Linux 内核的源码精髓、诸多官方白皮书以及多款常用协议浓缩于其中,使读者在看完本书后能够学以致用,达到理论联系实际的目的。
全书共16章,第1~2章讲述操作系统的基本概念和开发操作系统所需具备的知识;第3~5章快速构建起一个操作系统模型;第6~16章对操作系统模型进行升级、优化和完善。
读者读完此书后,不仅可以掌握Intel 处理器IA-32e 体系结构的主要特点,还能熟悉代码级的Linux内核核心功能实现。
本书既适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的业余爱好者。

田宇,Linux内核爱好者,曾在多家大中型软件公司从事软件开发工作,参与过多款高端嵌入式产品的开发研制,主要负责Linux内核和驱动的研发,以及开源操作系统环境的深度定制。

第 一部分 操作系统相关知识及环境搭建
第 1 章 操作系统整体概述 ............................ 2
1.1 什么是操作系统 ....................................... 2
1.2 操作系统的结构 ....................................... 2
1.3 编写操作系统所需的知识 ........................ 4
1.4 本书操作系统简介 ................................... 6
第 2章 环境搭建及基础知识介绍 ............... 7
2.1 开发环境介绍 ........................................... 7
2.1.1 编译环境 ....................................... 8
2.1.2 运行环境 ....................................... 9
2.1.3 调试环境 ...................................... 12
2.2 汇编语言 .................................................. 17
2.2.1 AT&T汇编语言格式与Intel汇编语言格式 .............................. 17
2.2.2 使用汇编语言调用C语言的函数 .............................................. 19
2.3 C 语言 ...................................................... 22
2.3.1 GNU C 内嵌汇编语言 .................. 22
2.3.2 GNU C 语言对标准C 语言的扩展 .............................................. 26
第二部分 初级篇
第3 章 UEFI 引导程序 ................................. 32
3.1 UEFI 与BIOS 概述 .................................. 32
3.1.1 UEFI 与BIOS 的结构组成 ........... 32
3.1.2 UEFI 与BIOS 的启动流程 ........... 33
3.1.3 UEFI 取代BIOS 的原因 .............. 35
3.2 编写一个UEFI 程序 ................................ 36
3.2.1 搭建TianoCore EDK2 开发环境 ............................................. 37
3.2.2 编译执行UEFI Shell(包括创建GPT 分区) ......................... 38
3.2.3 GPT 磁盘布局 .............................. 50
3.2.4 ESP(EFI 系统分区) ................. 54
3.2.5 编写一个Hello World 程序 ......... 57
3.2.6 UEFI 镜像 .................................... 60
3.2.7 UEFI 系统表 ................................ 61
3.2.8 UEFI 调用约定与协议 ................. 66
3.3 逐步实现UEFI 引导程序 ........................ 70
3.3.1 配置图形设备的显示模式 ........... 70
3.3.2 获取可用物理内存 ....................... 78
3.3.3 从存储介质读取文件 ................... 82
3.3.4 UEFI 环境中的x64 处理器平台 ............................................. 90
3.3.5 实现系统内核的引导启动 ........... 93
第4 章 内核层 .............................................. 103
4.1 内核执行头程序 .................................... 103
4.1.1 什么是内核执行头程序 ............. 103
4.1.2 编写一个内核执行头程序 ......... 104
4.2 内核主程序 ............................................ 108
4.3 屏幕显示 ................................................ 111
4.3.1 在屏幕上显示色彩 ..................... 111
4.3.2 在屏幕上显示LOG ................... 113
4.4 系统异常 ................................................ 127
4.4.1 异常的分类 ................................ 127
4.4.2 系统异常处理(一) ................. 128
4.4.3 系统异常处理(二) ................. 136
4.5 初级内存管理单元 ................................ 149
4.5.1 获得物理内存信息 ..................... 149
4.5.2 计算可用物理内存页数 ............. 151
4.5.3 分配可用物理内存页 ................. 153
4.6 中断处理 ............................................... 169
4.6.1 8259A ......................................... 169
4.6.2 触发一个中断 ............................ 176
4.7 键盘驱动 ............................................... 180
4.7.1 简述键盘功能 ............................ 180
4.7.2 实现键盘中断捕获函数 ............. 181
4.8 进程管理 ............................................... 182
4.8.1 简述进程管理模块 ..................... 183
4.8.2 进程控制结构体 ........................ 183
4.8.3 init 进程 ..................................... 190
第5 章 应用层 .............................................. 199
5.1 跳转到应用层 ........................................ 199
5.2 实现系统调用API ................................. 209
5.3 实现一个系统调用处理函数 ................. 214
第三部分 高级篇
第6 章 处理器体系结构 ............................. 218
6.1 基础功能与新特性 ................................ 218
6.1.1 运行模式 .................................... 218
6.1.2 通用寄存器 ................................ 219
6.1.3 CPUID 指令 ............................... 220
6.1.4 标志寄存器EFLAGS ................ 221
6.1.5 控制寄存器 ................................ 223
6.1.6 MSR 寄存器组 ........................... 227
6.1.7 浮点计算与向量计算 ................. 227
6.2 地址空间 ............................................... 228
6.2.1 虚拟地址 .................................... 229
6.2.2 物理地址 .................................... 229
6.3 实模式 ................................................... 229
6.3.1 实模式概述 ................................ 230
6.3.2 实模式的段寻址方式 ................. 230
6.3.3 实模式的中断向量表 ................. 231
6.4 保护模式 ............................................... 231
6.4.1 保护模式概述 ............................ 232
6.4.2 保护模式的段管理机制 ............. 236
6.4.3 保护模式的中断/异常处理机制 ........................................... 243
6.4.4 保护模式的页管理机制 ............. 246
6.4.5 保护模式的地址转换过程 ......... 254
6.5 IA-32e 模式 ........................................... 256
6.5.1 IA-32e 模式概述 ........................ 256
6.5.2 IA-32e 模式的段管理机制 ......... 258
6.5.3 IA-32e 模式的中断/异常处理机制 ........................................... 264
6.5.4 IA-32e 模式的页管理机制 ......... 264
6.5.5 IA-32e 模式的地址转换过程 ..... 267
6.6 从实模式进入保护模式再到IA-32e模式 ....................................................... 269
6.6.1 从实模式进入保护模式 ............. 269
6.6.2 从保护模式进入IA-32e 模式 .... 273
6.6.3 从Loader 跳转到内核程序 ........ 276
第7 章 内核主程序 ..................................... 279
7.1 内核主程序功能概述 ............................ 279
7.2 操作系统的Makefile 编译脚本 ............ 279
7.3 操作系统的Kernel.lds 链接脚本 .......... 283
7.4 操作系统的线性地址空间划分 ............. 286
7.5 获得处理器的固件信息 ........................ 288
第8 章 高级内存管理单元......................... 294
8.1 SLAB 内存池 ........................................ 294
8.1.1 SLAB 内存池概述及相关结构体定义 ................................ 295
8.1.2 SLAB 内存池的创建与销毁 ...... 296
8.1.3 SLAB 内存池中对象的分配与回收 ....................................... 299
8.2 基于SLAB 内存池技术的通用内存管理单元 ............................................... 305
8.2.1 通用内存管理单元的初始化函数slab_init ...................... 305
8.2.2 通用内存的分配函数kmalloc ................................... 309
8.2.3 通用内存的回收函数kfree ..... 314
8.3 调整物理页管理功能 ............................. 318
8.3.1 内存管理单元结构及相关函数调整 .................................... 318
8.3.2 调整alloc_pages 函数 .......... 320
8.3.3 创建free_pages 函数 ............ 324
8.4 页表初始化 ............................................ 328
8.4.1 页表重新初始化 ......................... 328
8.4.2 帧缓存区地址重映射 ................. 331
第9 章 高级中断处理单元 ......................... 334
9.1 APIC 概述 .............................................. 334
9.2 Local APIC ............................................ 335
9.2.1 Local APIC 的基础信息 ............. 335
9.2.2 Local APIC 整体结构及各功能描述 .................................... 340
9.3 I/O APIC ................................................ 350
9.3.1 I/O APIC 控制器的基础信息 ..... 350
9.3.2 I/O APIC 整体结构及各引脚功能 ............................................ 353
9.4 中断控制器的模式选择与初始化 .......... 355
9.4.1 中断模式 .................................... 356
9.4.2 Local APIC 控制器的初始化 ..... 359
9.4.3 I/O APIC 控制器的初始化 ......... 366
9.5 高级中断处理功能 ................................ 371
9.5.1 Linux 的中断处理机制概述 ....... 371
9.5.2 实现中断上半部处理功能 ......... 374
第 10 章 设备驱动程序 ............................... 378
10.1 键盘和鼠标驱动程序 ........................... 378
10.1.1 Intel 8042 控制器 ................... 378
10.1.2 完善键盘驱动程序 ................. 385
10.1.3 实现鼠标驱动程序 ................. 394
10.2 串口驱动程序 ...................................... 399
10.2.1 串口设备概述 ......................... 399
10.2.2 让printk 函数支持串口输出 ........................................ 404
10.3 PCI-Express 总线初探 ......................... 408
10.3.1 PCI 兼容配置空间头(类型0) .............................. 408
10.3.2 PCI 电源管理功能 .................. 414
10.3.3 MSI 功能(可选) ................. 416
10.3.4 MSI-X 功能(可选) ............. 419
10.4 硬盘驱动程序 ...................................... 421
10.4.1 硬盘设备初探 ........................ 422
10.4.2 完善硬盘驱动程序 ................. 467
10.5 高级的NVMe ...................................... 476
10.5.1 控制器寄存器 ........................ 477
10.5.2 提交队列项 ............................ 486
10.5.3 完成队列项 ............................ 491
10.5.4 管理员命令组 ........................ 496
10.5.5 NVM 命令组 .......................... 510
10.5.6 NVMe 设备主控器初始化代码 ........................................ 514
10.5.7 NVMe 设备标识获取代码 ..... 521
10.5.8 NVMe 设备I/O 队列创建代码 ........................................ 525
10.5.9 NVMe 设备扇区数据访问代码 ........................................ 529
第 11 章 进程管理 ........................................ 533
11.1 进程管理单元功能概述 ....................... 533
11.2 多核处理器 .......................................... 535
11.2.1 超线程技术与多核技术概述 ........................................ 535
11.2.2 多核处理器间的IPI 通信机制介绍 ................................ 539
11.2.3 让我们的系统支持多核 ......... 542
11.3 进程调度器 .......................................... 573
11.3.1 Linux 进程调度器简介........... 574
11.3.2 墙上时钟与定时器 ................. 577
11.3.3 内核定时器 ............................ 589
11.4 内核同步方法 ...................................... 609
11.4.1 原子变量 ................................ 610
11.4.2 信号量 .................................... 611
11.4.3 完善自旋锁 ............................ 613
11.5 完善进程管理单元 .............................. 615
11.5.1 完善进程控制结构体与处理器运行环境 ............................ 615
11.5.2 完善进程调度器和应用处理器引导程序 ............................ 621
11.5.3 关于线程 ................................ 627
第 12 章 文件系统 ....................................... 629
12.1 文件系统概述 ...................................... 629
12.2 解析FAT32 文件系统 ......................... 630
12.2.1 FAT32 文件系统简介 ............ 631
12.2.2 通过实例深入解析FAT32文件系统 ................................ 636
12.2.3 实现基于路径名的文件系统检索功能 ................................ 645
12.3 虚拟文件系统 ...................................... 666
12.3.1 Linux 虚拟文件系统简介 ....... 666
12.3.2 实现虚拟文件系统 ................. 667
第 13 章 系统调用API 库 .......................... 680
13.1 系统调用API 结构 .............................. 680
13.2 基于POSIX 规范实现系统调用API 库 .................................................. 681
13.2.1 POSIX 规范下的系统调用API 简介 ................................. 681
13.2.2 升级系统调用模块 ................. 682
13.2.3 基础文件操作的系统调用API 实现 ................................. 688
13.2.4 进程创建的系统调用API实现 ........................................ 713
13.2.5 内存管理的基础系统调用API 实现 ................................. 731
第 14 章 Shell 命令解析器及命令 ............ 740
14.1 Shell 命令解析器 ................................. 740
14.1.1 Shell 命令解析器概述 ............ 740
14.1.2 实现Shell 命令解析器 ........... 741
14.2 基础命令 .............................................. 756
14.2.1 重启命令reboot .................. 756
14.2.2 工作目录切换命令cd ........... 757
14.2.3 目录内容显示命令ls ........... 760
14.2.4 文件查看命令cat ................. 769
14.2.5 程序执行命令exec .............. 770
第 15 章 一个彩蛋——内核栈反向跟踪技术 ...................... 图灵社区下载
第 16 章 又一个彩蛋——模块的动态加载 .......................图灵社区下载
术语表 ....................................图灵社区下载
参考文献............................................. 图灵社区下载

商品参数
基本信息
出版社 人民邮电出版社
ISBN 9787115690012
条码 9787115690012
编者 田宇 著
译者
出版年月 2026-06-01 00:00:00.0
开本 16开
装帧 平装
页数 779
字数
版次 2
印次 1
纸张
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]