TWiki> CS361fall13 Web>WebHome (2013-09-10, Main.jakob)EditAttach

CS361 - Computer Systems

Name Due 11 am on
Setup, and Analyzing Dynamic Memory Usage Tue, Sept 3
A High-Performance Malloc Tue, Sept 10
A Garbage Collector for C Tue, Sept 17
L337 H4XX0r 5KilLs Tue, Sept 24
Midterm 1 Oct 4, in class
Roll-your-own Command Line Shell Tue, Oct 8
Roll-your-own Debugger Tue, Oct 22
A Basic Web Proxy Tue, Oct 29
Midterm 2 Nov 8, in class
Concurrent Elevator Controller Tue, Nov 12
Solving Concurrency Problems with Semaphores Tue, Nov 26
Concurrent Program Performance Fri, Dec 6
Final Thu Dec 12, 10.30 am-12:30 pm

Homeworks are due Tuesdays at 11 am.

Lecture Notes and Recordings

Memory Management

Lecture 1 Introduction, and a bit about dynamic memory allocation.
Lecture 2 Amazon EC2, Subversion, and starting on malloc.
Lecture 3 hw1, malloc boundary tags and free lists
Lecture 4 hw1 solution, malloc performance enhancements, and start of virtual memory
Lecture 5 virtual memory, several major benefits and a few drawbacks
Lecture 6 mmap by example, intro to garbage collection

From Source Code to Running Process

Lecture 7 preprocessor, compiler, assembler, linker
Lecture 8 .a and .so libraries, position independent code
Lecture 9 dynamic linking with the GOT and PLT
Lecture 10 class expectations, hw3 solution, and hw4 intro
Lecture 11 process abstraction, interrupts, system calls
Lecture 12 signals, and some experiments with the same
Lecture 13 midterm prep, hw5 demo, fork()
Lecture 14 hw5 essentials - fork(), execve(), pipe(), dup2()
Lecture 15 process I/O - low-level and buffered
Lecture 16 understanding file systems and the VFS

Network Programming

Lecture 17 introduction to the Internet
Lecture 18 Internet structure discussion, basic socket programming example
Lecture 19 Start of server programming
Lecture 20 More on nc/telnet, server programming + start of select
Lecture 21 event-driven programming with select() example
Lecture 22 multiple clients with select(), and email
Lecture 23 socket programming with UDP vs TCP


Lecture 24 multiple clients with fork(), and beginning of concurrency
Lecture 25 race conditions
Lecture 26 mutual exclusion
Lecture 27 deadlock, semaphores
Lecture 28 barriers and other synch primitives using semaphores
Lecture 29 reusable barrier, producer consumer, readers-writers start
Lecture 30 midterm 2 discussion
Lecture 31 hw9 discussion, hw8 solution, and finishing readers-writers
Lecture 32 condition variables
Lecture 33 user space implementation of locks using Linux futexes & atomic operations
Lecture 34 user space implementation of locks, part 2
Lecture 35 user space implementation of locks, code example
Lecture 36 futex wrap-up, beginning of lockless datastructures
Lecture 37 instruction reordering by optimizer and CPU, compiler/memory barriers
Lecture 38 dangers of mutual exclusion, continuation of lockless datastructures
Topic revision: r6 - 2013-09-10 - 16:35:57 - Main.jakob
Copyright 2016 The Board of Trustees
of the University of
Helping Women Faculty Advance
Funded by NSF