Introduction to Operating Systems (using xv6).

No active course uses the material here.


This course should have been named "Introduction to Kernels" and not as stated. Here is a note about the relevant notions. However, it seems "operating system" is a customary title for the topic at hand, hence we stick to the traditional title. However, in the course we will use the word "kernel" whenever it is due.

For kernel studying purpose we need easily accessible kernel source code and preferable easy code. Each of the well-knwo Unix-like kernels/OSes has the source easily accessible. However, these systems are HUGE, and their code is not an easy read. Instead of these huge systems, we will use a toy, by current day standards, Unix-like operating system, XV6, which is modeled on Unix V6.

XV6 being a small kernel can be learned in one semester. Since it can be learnt in one semester, the student is expected to know it by semester's end. This includes any hardware behaviour which is being used by the kernel. By this, I mean this. You should appear to lecture with, at least, the booklet.

We, of course, are not interested in this specific kernel. However, since this kernel contains enough of the features of aa full grown kernel, we will use it as a specific model for general principles which apparently are being used in most general purpose kernels.

Note that due to some issues, the material you should download is a very slightly modified version of the MIT revision 5 XV6.

XV6 in MTA

In order to use XV6 (i.e., edit, compile, run) a proper environment should be available. Students which use Unix like OS can go directly to the section describing how to make and run XV6. Students which are Windows users should read and follow the instructions where applicable:

  1. Explanation of what is needed and why.
  2. Cygwin and friends installation instructions.
  3. Binutils and GCC for ELF installation instructions.
  1. Install gdb