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.
Process control, scheduling, memory management, threading, files and directories,
disk-based file systems, networked file systems.
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 Programming —
mutex &
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 |