操作系统原型——xv6分析与实验
作者:罗秋明
出版:清华大学出版社 2021.7
定价:99.00 元
ISBN-13:9787302579984
ISBN-10:7302579989
去豆瓣看看 第1章xv6安装使用1
1.1运行于QEMU的xv61
1.1.1CentOS 7 QEMU xv61
1.1.2Ubuntu 18 QEMU xv62
1.2调试观察4
1.2.1xv6 shell命令4
1.2.2QEMU gdb调试6
1.2.3多核调试10
1.3本章小结12
练习13
第2章入门实验14
2.1新增可执行程序15
2.1.1磁盘映像的生成15
2.1.2添加简单程序16
2.2新增系统调用18
2.2.1系统调用示例19
2.2.2添加系统调用20
2.2.3验证新系统调用22
2.3观察调度过程23
2.4本章小结25
练习25
第3章xv6概述26
3.1xv6代码总览26
3.2xv6二进制代码与镜像27
3.2.1启动扇区27
3.2.2内核代码31
3.2.3磁盘镜像40
3.2.4xv6的Makefile43
3.3xv6内核简介51
3.3.1进程管理52
3.3.2内存管理56
3.3.3文件系统57
3.3.4设备59
3.4本章小结59
练习59
操作系统原型——xv6分析与实验目录
第4章系统启动60
4.1全局性信息60
4.1.1xv6系统常数(param.h)60
4.1.2x86.h硬件相关代码61
4.2bootblock70
4.2.116位/32位模式71
4.2.2bootasm.S72
4.2.3bootmain.c83
4.2.4ELF文件格式87
4.3kernel启动89
4.3.1启动分页90
4.3.2main()95
4.4多核启动100
4.4.1检测多核信息100
4.4.2激活其他处理器107
4.5通用代码111
4.6QEMU仿真命令114
4.7本章小结115
练习116
第5章内存管理118
5.1物理内存初始化(PI)119
5.1.1早期布局119
5.1.2物理页帧的初始化120
5.1.3kalloc.c和mmu.h122
5.2页帧的分配与回收(PR)126
5.3内核空间126
5.3.1内核页表(KI)127
5.3.2内核页表切换(KR)129
5.3.3vm.c131
5.4进程用户空间149
5.4.1用户空间映像(UI)150
5.4.2分配与回收(UR)152
5.4.3用户进程空间切换153
5.4.4内核空间与用户空间交换数据153
5.5本章小结154
练习155
第6章进程管理与同步156
6.1进程管理156
6.1.1调度状态与执行现场156
6.1.2进程控制175
6.1.3执行流的切换184
6.2内核同步——自旋锁190
6.2.1spinlock.h190
6.2.2spinlock.c191
6.3用户应用程序195
6.3.1运行程序195
6.3.2个用户进程init200
6.3.3sh.c203
6.3.4xv6测试(usertests.c)218
6.3.5用户进程的ELF220
6.3.6ULIB库221
6.4本章小结230
练习231
第7章中断/异常/系统调用232
7.1中断及其处理233
7.1.1中断整体描述233
7.2系统调用245
7.2.1系统调用框架246
7.2.2数据传递254
7.2.3用户态接口255
7.3本章小结259
练习260
第8章中级实验261
8.1调度实验261
8.1.1调整时间片长度261
8.1.2优先级调度264
8.2实现信号量273
8.2.1共享变量及其访问273
8.2.2信号量数据结构275
8.2.3信号量操作的系统调用276
8.2.4用户测试代码280
8.3实现进程间通信的实验282
8.3.1共享内存的实现282
8.3.2消息队列的实现299
8.4内存管理实验317
8.4.1实现myfree()和myalloc()系统调用317
8.4.2代码与数据隔离324
8.5本章小结331
练习331
第9章xv6fs文件管理333
9.1xv6fs文件系统333
9.1.1xv6fs概述334
9.2文件系统操作344
9.2.1盘块操作345
9.2.2索引节点操作356
9.2.3目录操作372
9.2.4文件378
9.2.5系统调用386
9.3非核心功能401
9.3.1日志层401
9.3.2特殊文件411
9.4本章小结415
练习416
第10章设备管理417
10.1终端设备417
10.1.1console/tty/terminal/shell417
10.1.2终端及CGA显示器418
10.1.3键盘430
10.1.4串口439
10.2其他硬件442
10.2.1定时器442
10.2.2IDE磁盘/块设备443
10.3中断控制器449
10.3.1APIC450
10.3.2IOAPIC451
10.3.3LAPIC457
10.4本章小结468
练习468
第11章高级实验469
11.1实现xv6内核线程469
11.1.1修改PCB469
11.1.2sys_clone和sys_join系统调用470
11.1.3线程库的实现474
11.1.4测试样例476
11.2文件系统实验478
11.2.1文件权限478
11.2.2恢复被删除的文件484
11.2.3磁盘裸设备的读写488
11.3虚拟内存494
11.3.1虚存交换机制495
11.3.2缺页异常498
11.3.3功能验证501
11.4用户终端实验504
11.4.1设计思路505
11.4.2代码实现506
11.4.3功能验证518
11.5本章小结523
练习523
第12章x86架构概述524
12.1x86的ISA架构524
12.1.1寄存器524
12.1.2内存组织530
12.2x86 MMU地址部件531
12.2.1模式及地址空间531
12.2.2实地址模式533
12.2.3保护模式535
12.2.4分页机制543
12.3中断/异常/系统调用547
12.3.1中断机制548
12.3.2中断描述符表IDT548
12.3.3TSS和内核栈554
12.4本章小结560
深圳大学计算机与软件学院副教授,广东省国产高性能计算系统工程技术研究中心副主任、深圳市服务计算与应用重点实验室常务副主任,长期从事高性能计算研究。
本书作为系统软件系列丛书的第四本,与已出版的《Linux GNU C程序观察》《操作系统之编程观察》《Linux技术内幕》共同组成系统软件学习的递进学习材料。 本书共12章,全面分析了xv6的实现并提供了丰富的实验及其示例代码。在分析方面不仅包含了几乎完整的C代码解读,还包括编译、链接和程序装入细节,并给出了QEMU仿真、GDB调试和底层系统硬件架构相关的必要知识。实验方面安排了入门、中级和高级三个层次的内容: 入门实验指导读者自行增加一个系统调用并通过应用程序验证其功能,开启修改操作系统步;中级实验全面体验了调度机制和算法,以及进程间通信中的信号量、共享内存和消息队列的实现,还有内存管理中的离散内存管理和代码数据隔离实验;高级实验综合多方面的知识,实现线程机制、文件功能扩展、虚拟内存实验以及多终端实验。 本书可作为计算机相关专业本科高年级学生和研究生的操作系统实验课程教学用书,也可作为相关专业人员深入了解操作系统的实践用书。