#1: 8/22 - 9/1

System Programming

1. Dive into System programming

Prelecture: HW0. The lecture will assume you've made significant progress on this homework

How to crash in C

2. Dive into C programming

Prelecture: Intro to C Notes. The lecture will assume you've already reviewed and played with this material.

C Crash Course 2

3. man,asprintf,free,assert

#2: 9/4 - 9/8

Labor day

Labor day (no class)

C Crash Course 3

4. getenv, scanf, getline, fork

Fork and wait

5. fork and waitpid

#3: 9/11 - 9/15

Forking Processes

6. The fork-exec-wait pattern

Signals for Process Control

7. Introducing POSIX signals to suspend and kill child processes. SIGSTOP, SIGKILL, SIGINT

Signals 2

8. Advanced Signals

#4: 9/18 - 9/22

Thanks for the heap memory

How to build a memory allocator. Placement algorithms. Fragmentation.

Memory allocators I

Hone your pointer skills when writing malloc and free.

Memory allocators II

Memory allocators part 2.

#5: 9/25 - 9/29

Threads

Introducing pthreads. stacks. Concurrency programming gotchas.

Threads and mutex locks

Introducing pthreads. stacks, shared memory. creating and joining. Concurrency programming gotchas.

Mutexes and semaphores

Why we need Mutex locks and semaphores. Basic usage of pthread implementations. Common gotchas.

#6: 10/2 - 10/6

Condition Variables

Mutex and Condition Variable examples. How to implement a lock (The critical section problem).

Critical Section Problem

Incorrect attempts to solve the Critical Section Problem. Introduction to Condition Variables.

Condition Variables II

Condition Variables. Implementing a semaphore using a Condition Variable.

#7: 10/9 - 10/13

Reader Writer Problem

Implementing a barrier. Implementing the R/W Problem using Condition Variables.

Dining Philosophers

The Dining Philosophers problem

Deadlock

Introduction to Deadlock. Coffman conditions.

See Deadlock.

#8: 10/16 - 10/20

Page tables

Virtual memory

Scheduling

Scheduling examples

Scheduling-2

Scheduling simulator. epoll

See Scheduling.

#9: 10/23 - 10/27

Pipes and Files

POSIX Pipes and random access files

Pipes, Files, VM II

POSIX Pipes, files, memory II

See Files

Files-1

ext2/3/4 filesystem. inode

See Files.

#10: 10/30 - 11/3

Files-2

file meta data

See Files.

Files-3

Permissions

Errno. Networking Intro

Robust error handling. EINTR. Intro to TCP,UDP,IP

#11: 11/6 - 11/10

TCP

TCP/IP Header. IPv4 exhaustion. A web client

TCP Server

Passive sockets. The 4 server calls and what they do. Gotchas.

TCP Server II

Socket Programming Gotchas. Intro to scheduling

#12: 11/13 - 11/17

UDP

UDP

See UDP.

UDP

UDP

See UDP.

RPC

RPC

See RPC.

#13: 11/20 - 11/24

No lecture

Thanksgiving Break

No lecture

Thanksgiving Break

No lecture

Thanksgiving Break

#14: 11/27 - 12/1

Network Review

Overview

Mmap

Memory mapped files

VFS

Virtual f/s

See VFS.