操作系统原型——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调试和底层系统硬件架构相关的必要知识。实验方面安排了入门、中级和高级三个层次的内容: 入门实验指导读者自行增加一个系统调用并通过应用程序验证其功能,开启修改操作系统步;中级实验全面体验了调度机制和算法,以及进程间通信中的信号量、共享内存和消息队列的实现,还有内存管理中的离散内存管理和代码数据隔离实验;高级实验综合多方面的知识,实现线程机制、文件功能扩展、虚拟内存实验以及多终端实验。 本书可作为计算机相关专业本科高年级学生和研究生的操作系统实验课程教学用书,也可作为相关专业人员深入了解操作系统的实践用书。