Date |
Topic |
Reading |
Noteslinks will become active on the
assigned date
|
January 21 |
Introduction / Course Overview | Introductory notes |
|
January 23 | The System Interface - background | Ch. 1 | Old Linux notes (for background to how syscalls are made) |
January 28 |
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 Notes on libraries Also see information from the first lab |
February 4 |
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 11 |
File access rights, set-user/group-ID, file status
(stat/fstat/lstat) etc |
Ch. 4 |
Primer assignment due February 12 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 13 |
Filesystems, i-nodes, hard vs symbolic links |
Ch. 5 | Assignment 1 |
February 18 |
No Class |
Substitute Monday Schedule for Presidents'
Day Holiday |
|
February 20 |
The Standard I/O library: buffered I/O |
Ch. 7 | |
February 25 |
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 27 |
Assignment 1 discussion: file tree walking, grep/regular expressions | Ch. 7 |
Notes on regular
expressions Additional notes on Perl, which has powerful regexp capabilities |
March 4 |
Process control -- creation and execution |
Ch. 8 Paper on two-level segregated fit (TLSF) memory allocation |
Assignment 1 due via Gradescope on March 6 Demos will be conducted during lab times Notes on the process environment Dynamic memory allocation notes |
March 6 |
Process control -- environment, address
spaces |
Ch. 10 | Notes on process creation and execution |
March 11 |
Spring Recess |
||
March 13 |
Spring Recess |
||
March 18 |
Control flow -- setjmp/longjmp Signals |
Ch. 10 | Notes on signals |
March 20 |
Signals Overview of assignment 2 |
Ch. 11 | Assignment 2 |
March 25 |
Introduction to threads: pthreads, creation, execution and
termination |
Ch. 11 | Notes
on threads Pthread example with circular buffer Context function example |
March 27 |
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 |
April 1 |
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 |
|
April 3 |
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 8 |
Interprocess communication overview: pipes, FIFOs,
semaphores, message queues, etc |
Ch. 14 | Notes
on inter process communication Assignment 2 due via Gradescope on April 9 |
April 10 |
Shared memory-based IPC | Ch. 14 |
|
April 15 |
Non-blocking I/O, asynchronous I/O, I/O multiplexing, poll
vs select |
Notes on advanced I/O topics |
|
April 17 |
Assignment 3 discussion: sockets, web/file servers, serial communication/terminal I/O | Assignment
3 (Group Project) Overview of the Quest-V SDK Example socket files Exam guide |
|
April 22 |
Miscellaneous I/O topics: scatter-gather, memory-mapped I/O, Linux sendfile, record locking | Notes on
network sockets |
|
April 24 |
Class Exam |
||
April 29 |
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 |
May 1 |
Short (5-10) minute slide presentations for group assignments | - Last Day of Classes Assignment 3 due 3 via Gradescope before final demos |