Fall 2018 CSCI 373.001 Lecture Schedule

The class lecture/lab section will meet on Monday, Wednesday and Friday from 2:00 PM to 3:15 PM in RRO 223.

As the semester progresses, items will be moved from the planned topics section to the lecture schedule section.

Planned topics

Process control, scheduling, memory management, threading, files and directories, disk-based file systems, networked file systems.

Lecture schedule

Date Topic
20 Aug Administrivia
processes — an abstract view
Programming Semantics for Multiprogrammed Computations by Jack Dennis and Earl Van Horn
Linux system API: fork(), exit(), _exit(), wait(), kill(), execve()
22 Aug Windows Processes and Threads
Java ProcessBuilder, Process, RunTime
Python os module: os.fork(), sys.exit(), os.wait(), os.kill(), os.execve()
Python subprocess
Two examples from CSCI 235: fork(), exec()
Try out: seq 0 10000 | grep 235
Use os.execve() and os.pipe()!
Draw it!
Python examples: Exec-ing child 1, Exec-ing child 2, Piping
C examples: Process exev, Creating child, What the shell does
24 Aug tar -xfv me!
27 Aug processes — abstract view with a little more detail, Process API with code, Linux task/process structures
similar tar -xfv to previous example
29 Aug Almost done with the similar tar
Anyone for Python? subprocess and Popen and communicate with example
31 Aug Segments in C
memory, memory API
System calls and memory: fork(), execve(), _exit(), sbrk(), and expanding the stack!
C library calls: malloc(), free() — You’ll look at these in CSCI 335
Sharing memory — files, mmap(), and shared memory segments shmat()
5 Sept How Linux works (Section 1.3)
Reading assignment: Read this ancient book chapter before class
Do not expect all the links to work.
Start for Friday
7 Sept Tasks for today:
  • Modify the C program to get this working in C or, better yet, just run it once to create the 8192-byte
  • Use git to download a simple program the reads a file using mmap(). Modify your program to print the 40 bytes starting at offset 1000.
  • Modify your program to change the 20 bytes starting at offset 200!
10 Sept cartoons about the Unix process model — to page 11
process communication with code
12 Sept Sept 12 activity while instructor deals with Florence scare
14 Sept Signals: Notes from Michigan Tech
sigaction(), signalfd(), kill(), alarm()
VirtualBox, as setup by NIH, use /hom/brock/VMs/ubuntu-18.04.1-desktop-amd64.iso
Google Cloud Engine perhaps with an f1-micro
17 Sept cartoons about the Unix process model — starting with page 12
Examples of networking
Create: socket
Server: bind, listen, accept
Client: connect
Datagram: sendto, recvfrom
19 Sept Threads
clone()
POSIX Threads Programmingmutex & condition
Python socket and socketserver
Python threading
Python Lock and condition
Examples: Networking and Resource
21 Sept Lab exercise
24 Sept Continuing lab exercise
pylint3 approved: register and server
A look at Java: Runnable interface, Thread class
A look at Python: threading, queue, One tutorial, LOTS of slides
GIL — global interpreter lock
26 Sept Networking exercises
28 Sept Networking exercises
Socket complexity
1 Oct Devices & File systems
Notes on devices and file systems
Stuff to do
3 Oct On disk structure: Microsoft EFI FAT32 File System Specification, EXT?
DOWNLOAD THIS
Microsoft EFI FAT32 File System Specification, EXT?
5 Oct ioctl(), ioctl list
GPIO sysfs interface, GPIO character device examples
The FAT filesystem by Andries Brouwer
Treasure hunt: Finding a file I, Finding a file II — If you’ve done it before, find someone to help
10 Oct One last look at an on-disk representation
12 Oct random access binary I/O in C, in Java and in Python
Examples in C, Python and Java
Now write a program to copy the root directory from a FAT16 boot image inspired by the manual search
15 Oct Chapter 6 Limited Direct Execution — Anatomy of a System Call, part 1
Reading and Talking
Chapter 7 Scheduling — Reading, Talking & Hacking
Chapter 8 Multi-level Feedback — Reading, Talking & Hacking
Chapter 9 Proportional Share — Reading, Talking & Hacking
Complete Fair Scheduler
Monitoring — ps, top, scheduing overview, a top 30 list, A short list
17 Oct
19 Oct stuff pre-HTML
Multiprocessor scheduling — Reading, Talking, Hacking
22 Oct Chapter 15 Address Translation — Reading, Talking, Hacking & Watching
Chapter 16 Segmentation — Reading, Talking, Hacking & x86 segmentation
Chapter 17 Free-Space Management — Reading, Talking & Hacking
Chapter 18 Paging: Introduction — Reading, Talking, Hacking and Watching
24 Oct Chapter 19 Paging: Faster Translation (TLBs) — Reading, Talking
Chapter 20 Paging: Smaller Tables — Reading, Talking, Hacking & Viewing
i7 address translation (pp 17–25), “long mode” and huge pages, /proc/meminfo, Oracle wants those huge pages, madvise()
Chapter 21 Beyond Physical Memory: Mechanisms Reading, Talking, Hacking
Chapter 22 Beyond Physical Memory: Policies Reading, Talking, Hacking
26 Oct stuff pre-HTML
I7 paging breakdown
29 Oct Systems programming: stat(), opendir() & readdir()
31 Oct
2 Nov Giving workshop at CCSC:SE 2018
5 Nov mount(), mount and fstab
Chapter 40 File System Implementation (review) — Reading, Talking
Chapter 41 Locality and the Fast File System — Reading, Talking, Hacking
Chapter 42 Crash consistency: FSCK and Journaling — Reading, Talking, Hacking
Ancient look at the Unix File System, XFS, Ancient look at the Advanced File System & Show Stopper!
ASCII pre-notes
7 Nov
9 Nov Red Hat XFS setup
XFS User Guide
A Minimum Complete Tutorial of Linux ext4 File System
Chapter 49 Sun’s Network File System — Reading, Hacking
Ancient look at the Network File System
fstab & Ubuntu SettingUpNFSHowTo
12 Nov VM exercise with XFS
14 Nov VM exercise with ext4fs
16 Nov A couple of book homeworks: Multilevel Translate & Policy
19 Nov Threaded computation
Reading the root directory — See 12 October
Networked fetch and add server and client
26 Nov crude paging picture
3 Dec
12 Dec Final Exam — 11:30 AM to 2:00 PM