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. |
* K.I.S.S. uses clear and simple algorithms only, most sources are no longer than few hundred lines. |
||
* Minimal |
* 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 |
* [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] |