Date |
Topic |
Reading |
Notes |
January 18 |
Introduction / Course Overview | Introductory notes |
|
January 23 |
The System Interface - background |
Ch. 1 |
Old Linux notes (for
background to how syscalls are made) |
January 25 |
Libraries versus system calls |
Ch. 3 |
Assignment
0 (primer) |
January 30 |
Assignment 0 discussion Building static and dynamic libraries |
From the links in the assignment, read about static and
dynamic libraries, and the BFD library |
Notes on
benchmarking time measurements Also see information from the first lab |
February 1 |
File I/O: file descriptors, unbuffered I/O
etc |
Ch. 3 | Notes on file IO |
February 6 |
File I/O operations, file descriptor duplication, file
types, kernel data structures |
Ch. 4 | Notes on files and directories |
February 8 |
File access rights, set-user/group-ID, file status
(stat/fstat/lstat) etc |
Ch. 4 |
|
February 13 |
Filesystems, i-nodes, hard vs symbolic links |
Ch. 5 | Primer assignment due February 14 You must demo your assignment in a lab time slot that will be available via a signup sheet Please make sure all files are submitted via Gradescope before labs, as there will be a timeout for file uploads and you will not be graded otherwise. |
February 15 |
The Standard I/O library: buffered I/O |
Ch. 7 | Assignment
1 |
February 20 |
Standard I/O library continued (writing your own printf,
supporting variadic arguments, function calling conventions,
comparison of buffering semantics) |
Notes on the standard I/O Library | |
February 22 |
Assignment 1 discussion: file tree walking, grep/regular expressions | Ch. 7 |
Notes on regular
expressions Additional notes on Perl, which has powerful regexp capabilities |
February 27 |
Process control -- creation and execution |
Ch. 8 | Notes on process creation and execution |
February 29 |
Process control -- environment, address
spaces |
Ch. 10 | Notes on the process environment |
March 5 |
Control flow -- setjmp/longjmp Signals |
Ch. 10 | Assignment 1 due via Gradescope on March 6 Demos will be conducted during lab times |
March 7 |
Signals |
Ch. 11 | Notes
on signals |
March 12 |
Spring Recess |
||
March 14 |
Spring Recess |
||
March 19 |
Overview of assignment 2 Introduction to threads: pthreads, creation, execution and termination |
Ch. 11 | Assignment
2 Notes on threads Pthread example with circular buffer Context function example |
March 21 |
Thread concepts continued: synchronization (mutexes,
condition variables), attributes, semantics Producer -- consumer example |
Ch. 15 | Second & Third Editions of the textbook have a chapter on threads |
March 26 |
Synchronous vs asynchronous communication -- Simpson's
4-slot vs fifo-buffered communication Code examples |
4-slot buffering
example Supporting Perl script to work with live gnuplots |
|
March 28 |
Sigaltstack approach to portable multi-threading (code
walkthrough) |
Ch. 15 Portable multithreading |
See technical paper in Assignment 2 for details of writing
your own threads using sigaltstack, setjmp, and longjmp |
April 2 |
Interprocess communication overview: pipes, FIFOs,
semaphores, message queues, etc |
Ch. 14 | Notes on inter process communication |
April 4 |
Shared memory-based IPC | Ch. 14 |
|
April 9 |
Non-blocking I/O, asynchronous I/O, I/O multiplexing, poll
vs select |
Assignment 2 due via Gradescope on April 10 |
|
April 11 |
Miscellaneous I/O topics: scatter-gather, memory-mapped
I/O, Linux sendfile, record locking |
Notes on advanced I/O topics |
|
16 |
Assignment 3 discussion: sockets, web/file
servers, serial communication/terminal I/O |
Assignment
3 (Group Project) Example socket files Exam guide |
|
18 |
Class Exam |
Notes on
network sockets |
|
23 |
Physical computing: Arduino basics,
Raspberry Pi basics Physical computing and more advanced features: GPIOs, Linux sysfs, etc |
See information on AVR libc, newlib
(alternate C library implementations) |
Example code (aactrl.c and aactrl.h)
to show how I use sockets to communicate between a remote device (for me, an Android device) and a PC, followed by relaying commands from a PC to an Arduino via serial terminal IO |
25 |
Short (5-10) minute slide presentations for group assignments -- Session 1 | ||
April 30 |
Short (5-10) minute slide presentations for group assignments -- Session 2 | - Last Day of Classes - Assignment 3 due 3 via Gradescope |