q 238P Operating Systems
238P

Operating Systems

Fall 2021, University of California, Irvine

Instructor

Lectures, Discussions and Office Hours

Links and Resources

Grading Policy

  • Grades weight Homeworks: 55%, Quizzes 15%, Midterm exam: 10%, Final exam: 20%
  • Late homework submissionYou can submit late homework 3 days after the deadline for 60% of your grade. (Does not apply to quizzes)

Schedule

September 27

September 29

October 1

October 4

October 6

October 8

October 11

October 13

October 15

  • Discussion 03 - Shell Video
  • Homework 2 Shell (due Friday, October 22, 11:59pm Pacific Time)

October 18

October 20

October 22

  • Discussion 04 - Paging and Segmentation Video

October 25

October 27

October 28

  • Homework 3 The ELF Format (due Thursday, November 04, 11:59pm Pacific Time)

October 29

November 1

November 3

November 5

November 8

November 10

November 12

  • Discussion 07 - HW4 Video

November 15

November 17

November 22

November 24

November 26

November 29

December 1

December 8

Class overview

238P teaches the fundamentals of operating systems. You will study, in detail, virtual memory, kernel and user mode, system calls, threads, context switches, interrupts, interprocess communication, coordination of concurrent activities, and the interface between software and hardware. Most importantly, you will study the interactions between these concepts, and how to manage the complexity introduced by the interactions.

To master the concepts, 238P is organized in as a series of lectures, and homeworks. The lectures (and the book readings) familiarize you with the main concepts. The homrworks force you to understand the concepts at a deep level.

The lectures are based on xv6 (x86 version 6), which is a modern re-implementation of one of the early UNIX operating systems, specifically Unix Version 6 which was developed in the 1970s, on the modern hardware. xv6 is only 9,000 lines of C code, but it can run real processes, and perform many functions of a traditional operating system, e.g., Windows, Linux, and Mac OS. Due to its small size, it is possible to read the source code and understand the entire operating system. Moreover, xv6 is accompanied by a book describing its architecture (and a printout of its source code). Homework assignments will help you to deepen the understanding of the principles and internal organization of a simple, but real operating system.

You may wonder why we are studying an operating system that resembles Unix v6 instead of the latest and greatest version of Linux, Windows, or BSD Unix. xv6 is big enough to illustrate the basic design and implementation ideas in operating systems. On the other hand, xv6 is far smaller than any modern production operating systems, and correspondingly easier to understand. xv6 has a structure similar to many modern operating systems; once you've explored xv6 you will find that much is familiar inside kernels such as Linux.

Prerequisites

  • Xv6 is implemented in C, so you're expected to be familiar with the C programming language.
  • Xv6 runs in the QEMU simulator and on bare-metal. You're expected to be familiar with the basics of Linux environment.

Books

The class is based on two books that are freely available from the authors:

Aditional Resources