xv6 学习
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.cvsignore
.dir-locals.el
.gdbinit.tmpl
.gitignore
BUGS
LICENSE
Makefile
Notes
README
README.md
TRICKS
asm.h
bio.c
bootasm.S
bootmain.c
buf.h
cat.c
console.c
cuth
defs.h
dot-bochsrc
echo.c
elf.h
entry.S
entryother.S
exec.c
fcntl.h
file.c
file.h
forktest.c
fs.c
fs.h
gdbutil
grep.c
ide.c
init.c
initcode.S
ioapic.c
kalloc.c
kbd.c
kbd.h
kernel.ld
kill.c
lapic.c
ln.c
log.c
ls.c
main.c
memide.c
memlayout.h
mkdir.c
mkfs.c
mmu.h
mp.c
mp.h
param.h
picirq.c
pipe.c
pr.pl
printf.c
printpcs
proc.c
proc.h
rm.c
runoff
runoff.list
runoff.spec
runoff1
sh.c
show1
sign.pl
sleep1.p
spinlock.c
spinlock.h
spinp
stat.h
stressfs.c
string.c
swtch.S
symlink.patch
syscall.c
syscall.h
sysfile.c
sysproc.c
timer.c
toc.ftr
toc.hdr
trap.c
trapasm.S
traps.h
types.h
uart.c
ulib.c
umalloc.c
user.h
usertests.c
usys.S
vectors.pl
vm.c
wc.c
x86.h
zombie.c

README.md

##学习xv6

xv6是由麻省理工学院(MIT)为操作系统工程的课程(代号6.828),开发的一个教学目的的操作系统。Xv6是在x86处理器上(x即指x86)用ANSI标准C重新实现的Unix第六版(Unix V6,通常直接被称为V6)。

更为详细的介绍可以参看:

百度百科上关于 xv6 的介绍

维基百科上关于 xv6 的介绍

xv6 的官网

这个代码库的 master 上是从 xv6 官方代码库直接 clone 的代码

git clone git://pdos.csail.mit.edu/xv6/xv6.git

代码库的 learn 分支则是我在学习 xv6 代码时一边学一边在源码文件上增加了自己的理解和学习笔记作为注释。

###注意:

由于 learn 分支上的 xv6 代码,特别时汇编文件被我增加了注释,目前无法顺利编译,后续我可能会解决这个问题。如果向编译 xv6 一睹其芳容的各位,建议编译我这个代码库的 master 或者直接 clone 官方代码库的代码编译。

###笔记:

除了会在 xv6 的源代码上增加注释以外,我还会陆陆续续在我的个人 Blog上写一些列的文章来总结我的 xv6 学习过程。

###2014年7月24日 第 1 次学习:

如何通过 804x 键盘控制器打卡 A20 门进入保护模式。主要笔记文件:

bootasm.S

###2014年7月25日 第 2 次学习:

关于 GDT 表和 GDT 表项的建立。主要笔记文件:

bootasm.S

###2014年7月29日 第 3 次学习:

关于通过 cr0 控制寄存器进入保护模式以及在基于分段式的保护模式下的寻址,主要文件:

bootasm.S

###2015年 5月26日 第 4 次学习:

内核的加载与运行,主要文件:

bootmain.c