Syllabus

Computer Systems discusses computers as an integrated whole, including: hardware resources (e.g., CPU cores, CPU cache, memory management unit (MMU), RAM); the operating system; and systems languages (assembly language, C (the low-level high-level language), POSIX threads, the shell (the original UNIX scripting language), and Python (the de facto scripting language today)). This course will review the topics above (but including only an abridged "reading knowledge" of assembly). It will then apply this background to a real-world case study of importance today: Docker-style containers, the Cloud, and orchestration frameworks for clusters of servers.

Schedule

This is an approximate plan. I reserve the right to update it based on the interests and background of the class and/or time constraints. The reading list will be updated as we progress in the semester. Please check back regularly for the assigned readings for the quiz.

HW0 due

Week Topics Chapter/Assigned Reading
Jan. 9 Intro to process model; system calls;
cpu/memory state; signals;
modes of linking;
class lecture, xv6:syscall.c, xv6:sysproc
The UNIX Time-Sharing System
Jan. 16 University holiday: Martin Luther King Jr.'s Birthday -- no class.
Jan. 23 UNIX shell, fork/exec/wait;
linking and loading; env vars;
file descriptors, I/O re-direction
Ch. 4--6, Ch. 2 (code), Ch. 5 (code);
xv6: file.c, sysfile.c, pipe.c, proc.[ch]
Jan. 30 POSIX Threads, Concurrency; a first look at Locks
Ch. 28--31, xv6:spinlock.c
Required readings: Optional readings:
Feb. 6 Virtual Memory, clock algo.; Cache/MMU/TLB
class lecture; Ch. 13--15, Ch. 17--19,
xv6: memlayout.h, exec.c, kalloc.c, mmu.h, and vm.c
Required reading:
Virtual memory, processes, and sharing in multics
Optional suggested reading:
What Every Programmer Should Know About Memory
Feb. 13 CPU Caches;
Device I/O;
class lecture
Feb. 20 University holiday: President's Day -- no class.
Feb. 27 Midterm Exam;
static and dynamic linking
Mar. 6 Spring break -- no class.
Mar. 13 Guest Lecture: Intro to ELF;
Mar. 20 Scheduling get/setcontext, and xv6:swtch.S xv6:fs.c
Ch. 7, Ch. 8, Ch. 10
Readings:
Mar. 27 Filesystems Class lecture; Ch. 37 - 43
xv6: fs.c,file.c,sysfile.c,exec.c
Readings:
Apr. 3 Virtual Machines class lecture
ostep.org: App B
Apr. 10 Linux Containers, Docker, Cloud, Orchestration class lecture
Apr. 17 University holiday: Patriot's Day -- no class.
Apr. 24 Final Projects Due Project Presentations