Dr. Back's Lectures§
D-P1
MiniDemo: System Calls
L-P1
Processes, Part I
Ch. 8
D-P2
MiniDemo: Dual-Mode Operation
L-P2
Processes, Part II
Ch. 8
L-P3
Processes, Part III
Ch. 8
D-P5
MiniDemo: Using fork in Python's multiprocessing module
D-P6
Demo: Fork and Wait (Part 2)
D-P7
Demo: Fork and Exec (Part 3)
L-P4
Unix File Descriptors
Ch. 10
D-P8
Demo: Low-level IO, read()/write(), buffering, and stdio quirks
D-P9
MiniDemo: How to end standard input when connected to a terminal
D-P10
MiniDemo: dup2() for I/O redirection
D-P11
Demo: Using Unix pipes()
D-P12
Demo: Async-signal Safety
L-P7
Job Control Shells
Ch. 8.4
D-P13
MiniDemo: How to catch a segmentation fault
D-P14
Demo: how to use cush and how the tests work
D-L1
MiniDemo: how the gcc compiler driver works
L-UB1
Undefined Behavior in C/C++/Rust
L-L1
Linking and Loading, Part 1
Ch. 7, 7.1-7.9
D-L2
MiniDemo: exploring the virtual address space
L-L2
Linking and Loading, Part 2
Ch. 7.6
D-L3
MiniDemo: static inline vs extern inline
L-L3
Linking and Loading, Part 3
Ch. 7.6 - 7.14
D-L4
Demo: How to build and use static libraries
D-L5
Demo: How dynamically linked executables are loaded
D-L6
Demo: How to build shared objects, role of GOT
Ch. 7.12
D-L7
Demo: How to use LD_PRELOAD to interpose at runtime
Ch. 7.13.3
D-L8
Demo: Effect of Bad Practices on symbol resolution
Ch. 7.6
L-MT1
Introduction to Multithreading
Ch. 12
L-MT6
Thread-Local Variables
L-MT7
Atomicity Violations
L-MT8
Performance Consideration for Multi-Threaded Programs
D-MT1
Demo: Debugging Deadlocks with gdb
D-MT2
Demo: Debugging with watch points
L-MEM1
Dynamic Memory Management (malloc/free)
L-MEM2
Automatic Memory Management, Intro
L-MEM3
Automatic Memory Management, Performance
L-MEM4
Automatic Memory Management MiniLecture: Reference Counting
L-MEM5
Virtual Memory: Principles and Mechanisms
D-MEM2
Virtual Memory MiniLecture: Using mmap()
L-NW1
Introduction to Networking, Part I
L-NW2
Introduction to Networking, Part II
L-NW3
Introduction to Networking, Part III
L-NW4
TCP/IP and Socket Programming, Part I
L-NW5
TCP/IP and Socket Programming, Part II
L-NW6
TCP/IP and Socket Programming, Part III
D-NW4
p4 login.html minidemo
L-NW9
Implementing High-Concurrency Servers
L-VIRT1
Clouds, VMs, and Containers (Dr. Williams)
L-VIRT2
Virtualization (older slide set by Dr. Back)
Lecture slides will usually be posted before each lecture
and may be updated after each lecture.
Note: where provided,
the Youtube versions are mixed at an audio level that is too quiet;
Use the MP4 versions of each file instead, bumping the audio by 12dB.
The code for the examples shown in the demos can be found
here.