Xv6: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content deleted Content added
No edit summary
Line 3: Line 3:
== History ==
== History ==


Xv6 is a re-implementation of the classic Dennis Richie's and Ken Thompson's UNIX V6 for MIT Operating System course. UNIX was originally written in K&R C for the PDP-11. Xv6 is a modernized version of that, written in ANSI C for the Intel x86 processor, keeping the original UNIX philosophy of simplicity.
Xv6 is a re-implementation of the classic Dennis Richie's and Ken Thompson's UNIX V6 for MIT Operating System course. UNIX was originally written in K&R C for the PDP-11. Xv6 is a modernized version of that, written in ANSI C for the Intel x86 and RISC-V processor, keeping the original UNIX philosophy of simplicity.


== Advantages ==
== Advantages ==


* Very small codebase. Being educational, it focuses on how an OS should work instead of implementing everything. A single programmer can easily overview its entire codebase.
* Very small codebase. Being educational, it focuses on how an OS should work instead of implementing everything. A single programmer can easily overview its entire codebase.
* K.I.S.S. Uses clear and simple algorithms only, most sources are no longer than few hundred lines.
* K.I.S.S. uses clear and simple algorithms only, most sources are no longer than few hundred lines.
* Minimal Assembly. Most of the code is written in ANSI C.
* Minimal assembly. Most of the code is written in ANSI C.
* Uses protected mode. It abstracts the x86 architecture away with minimal lines of code, and it does not rely on BIOS.
* Uses protected mode on x86. It abstracts the x86 architecture away with minimal lines of code, and it does not rely on BIOS.
* Fairly modern. It supports IOAPIC, LAPIC etc. It does not use obsolete devices such as floppies like other tutorials do.
* Fairly modern. It supports IOAPIC, LAPIC etc. It does not use obsolete devices such as floppies like other tutorials do.
* Fairly sophisticated. It uses paging for virtual address spaces, and it is a multitasking OS with symmetric multiprocessing (SMP) support.
* Fairly sophisticated. It uses paging for virtual address spaces, and it is a multitasking OS with symmetric multiprocessing (SMP) support.
Line 24: Line 24:
* [https://pdos.csail.mit.edu/6.828/2018/xv6.html Xv6 homepage]
* [https://pdos.csail.mit.edu/6.828/2018/xv6.html Xv6 homepage]
* [https://pdos.csail.mit.edu/6.828/2018/xv6/xv6-rev11.pdf Commentary book on Xv6] in PDF, it is brief (less than 100 pages) and an easy reading
* [https://pdos.csail.mit.edu/6.828/2018/xv6/xv6-rev11.pdf Commentary book on Xv6] in PDF, it is brief (less than 100 pages) and an easy reading
* [https://github.com/mit-pdos/xv6-public Source on Github]
* [https://github.com/mit-pdos/xv6-public Source on GitHub]
** [https://github.com/mit-pdos/xv6-riscv RISC-V version]
* [https://www.youtube.com/watch?v=fWUJKH0RNFE&list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB hhp3 walkthrough on YouTube]
* [https://www.youtube.com/watch?v=fWUJKH0RNFE&list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB hhp3 walkthrough on YouTube]