Lecture Recordings
Screen captures and audio recordings of most lectures will be made available here. The
OmniOutliner document used throughout the semester is occasionally uploaded
here.
C Programming and how an executable is made
Lecture 1 |
Introduction to CS385 |
Lecture 2 |
Homework 1 and c/asm relationship |
Lecture 3 |
Types, casting and pointers |
Lecture 4 |
Function calls and the stack |
Lecture 4+ |
Full stack dump, and local variables (addendum) |
Lecture 5 |
gcc, make and gdb (by Tim Merrifield) |
Lecture 6 |
stack vs. heap vs. global. memory allocation models |
Lecture 7 |
Homework 3, preprocessor macros, unit testing |
Lecture 8 |
A bit of subversion, structuring larger programs, and start of linking |
Lecture 9 |
Static linking, libraries, ELF file format |
Process Management and Concurrency
Lecture 10 |
Dynamic linking/loading, fork() and homework 4 |
Lecture 11 |
Processes/threads, scripts, pipes and I/O redirection |
Lecture 12 |
Kernel dive: system calls, task_struct, fork() and execve() |
Lecture 13 |
Synchronization primitives and critical sections |
Lecture 14 |
Pthread sync primitives and the elevator homework (5) |
Lecture 14+ |
Deadlock resolved, condition variables, and barriers (last 10/25 min optional) |
Lecture 15 |
The "dining philosophers", deadlock, starvation, livelock and priority inversion |
Lecture 16 |
How to spin your own threads, and hw6 |
Lecture 17 |
CPU scheduling, basic method and scheduling criteria |
Lecture 18 |
Scheduling policies |
Lecture 19 |
Three linux CPU schedulers: 2.4, O(1) and CFS. scheduling code: cooperative and preemptive |
Lecture 20 |
Boot: from power-on to the first line of kernel code... |
Lecture 21 |
Boot: .. to first user process (init) + signals and event-driven programming w/select. |
Memory Management
Lecture 22 |
Midterm/homework review and start of memory hierarchy. |
Lecture 23 |
Short discussion of homework 7. |
Lecture 24 |
Virtual memory: page tables, demand paging, TLB, etc. |
Lecture 25 |
Address space vs. virtual memory, performance experiments |
Lecture 26 |
Memory allocation alg., binary buddy and slab allocators |
Lecture 27 |
User-space memory allocation in malloc() |
Lecture 28 |
More malloc, hw8 hints |
Lecture 29 |
Physical memory fragmentation errata, memory management wrap-up. |
Storage Management
Lecture 30 |
Introduction to storage management and file systems. |
Lecture 31 |
File allocation table, index nodes (inodes), and the Linux VFS |
Lecture 32 |
Directories, free-space management, and Kernel dive: VFS structs and readdir() |
Lecture 33 |
Maintaining filesystem integrity. Journaling filesystems and RAID. |
Lecture 34 |
B-Trees. |
Lecture 35 |
btrfs, the b-tree file system. A look at the cutting edge of fs design. |
Lecture 36 |
storage management and file system wrap-up. |
Lecture 37 |
hw9 and hw10 discussion |
Security
Lecture 38 |
permissions management & protection |
Lecture 39 |
user and message authentication |
Lecture 40 |
cryptography and cryptanalysis |
Lecture 41 |
public key crypto, key distribution and signatures |
Lecture 42 |
exploits and vulnerabilities: variations on buffer overflow |
Topic revision: r43 - 2011-04-26 - 23:35:03 - Main.jakob