Xv6是由麻省理工学院(MIT)为操作系统工程的课程开发的以教学目的的操作系统。Xv6是在x86处理器上(x即指x86)用ANSI标准C重新实现的Unix第六版(Unix V6,通常直接被称为V6)。
Unix系统最早由KenThompson、Dennis Ritchie和Douglas McIlroy在贝尔实验室开发的操作系统,而现代广泛使用的Linux、Mac OS X、OpenBDS和FreeBSD都是类unix系统;但是unix v6在数字设备公司(DEC)的PDP-11机器上运行,与现在使用的x86架构不同。
莱昂氏unix源代码分析由上下两篇组成,上篇为Unix v6源代码,下篇是莱昂先生对Unix操作系统源代码的详细分析。该书简洁、透彻,曾作为未公开出版物广泛流传了二十多年(主要是许可问题,但是只允许作为大学课程使用),是一部杰出的经典之作,为操作系统hacker了解系统运行原理提供了非常好的途径。莱昂氏源码分析也是xv6的灵感来源,书籍形式和莱昂氏unix源码分析完全相同,但是xv6是在X86机器上的现代实现,并添加了多核支持,因此非常适合学习操作系统的基本原理;
我翻译这本书籍,主要是想把这本现代版本的莱昂氏源码分析介绍给更多有爱好者,共同提高和进步,翻译难免会有不准确或者错误之处,希望大家能够提issue或者fork,让我们共同完善和丰富操作系统的资料。
- 第零章:操作系统接口(Operating system interfaces)
- 第一章:操作系统结构(Operating system orgnization)
- 第二章:分页表(Page tables)[4.17更新]
- 第三章:陷阱、中断与驱动(Traps, interrupts, and driver)[4.24更新]
- 第四章:锁(Locking)[5.1更新]
- 第五章:调度(Scheduling)[5.8更新]
- 第六章:总结(Summary)[5.15更新]
- 附录A: PC硬件(PC hardware)[5.15更新]
- 附录B:引导程序(the boot loader)[5.22更新]
- Unix家族的维基百科资料
- Linux内核学习的书籍和资料:
- 莱昂氏源码分析的资料:
- Xv6书籍和源码PDF版本
- MIT操作系统工程最新课程计划
本文档中Xv6主要是在Ubuntu的虚拟机环境中编译、调试,VMWare或者VirtualBox(免费)都是是不错的选择,在MacOS下可以使用VMWare Fusion。
# install basic package for ubntu
sudo apt-get install git gcc make qemu wget m4
# clone this repo
cd ~ && git clone --recursive https://github.com/deyuhua/xv6-book.git
# 下载速度偏慢,最好使用代理
cd ~/xv6-book/build && wget -i pkg.txt
# 交叉编译
./install.sh
echo export PATH=~/xv6-book/build/local/bin:$PATH >> ~/.bashrc
echo export LD_LIBRARY_PATH=~/xv6-book/build/local/lib >> ~/.bashrc
# 这步非常重要,主要是设置环境变量
source ~/.bashrc && sudo ldconfig
# compile xv6
cd ~/xv6-book/xv6-public && make
# start qemu simulator
make qemu # (with xwindow, or start without xwindow: make qemu-nox)
待更新