Lectures

Lecture 16: implementing locks

We discuss a range of different lock implementations, as well as their relative advantages and disadvantages.

Lecture 15: hw6 and concurrency

We go through hw6 in some more detail, with example runs, then discuss how threads behave in a concurrent program, including several examples of race conditions.

Lecture 14: threads and hw6

In this lecture fragment* we discuss threads, and how these may be implemented in xv6: our 6th homework. *the hw5 solution discussion is elided, and a large part of the remainder of the…

Lecture 13: scheduling

We discuss the desirable characteristics of a process scheduler, and look in some detail at some  implementations.

Lecture 12: the life of a process

We discuss the life of a simple process “echo” as typed on the sh command line, from inception to its eventual transformation to a ZOMBIE process.

Lecture 10: midterm prep and the context switch

We discuss the exam format of the midterm, practice on a few questions, then move on to discuss how the OS switches from one process to another, also known as a “context switch”.

Lecture 8: Adventures in 64-bit

Motivated by a long debugging adventure, we explore segment descriptors, segment registers and model specific registers through both syscall and interrupt transitions. Also, a brief foray into the life of processes, from the…