Theory of Operating Systems, ICS 612
This page is
http://www2.hawaii.edu/~esb/2021spring.ics612/index.html
This page is subject to change without notice -- please reload it
in your browser if an item that might affect you may have changed.
Instructor: Edo Biagioni, esb@hawaii.edu. See here for office hours.
The administrative information for this course is here.
If you have any questions, please contact the instructor.
Schedule
This schedule is subject to change.
Presentation outlines are in pdf. I usually post these
no later than the day before the lecture.
This schedule is loosely based on the same course taught in the Spring 2019. If you wish to look
ahead, please refer to that courses, since many of the same subjects will
be covered, although possibly not in the same sequence.
- Tue, Jan 12. Course introductions.
Overview
- course overview
- why study operating systems?
- theory and implementation
- a range of operating systems
- historical background
- Thu, Jan 14.
Install Minix, and maybe Linux and/or seL4 (come to class, but no lecture).
- Tue, Jan 19. Shells and Processes.
Overview
- shells and window systems
- what is and what isn't part of the operating system?
- starting programs
- processes
- pipes
- scripting languages
Project 1 assigned, due February 2nd.
- Thu, Jan 21. Processes and Schedulers.
Overview
- project 1 (review)
- scripting languages
- processes and threads
- process table
- schedulers
- interrupts and context switch
- layered operating system
Assignment: write small test programs to become comfortable with pthreads
and mutexes. Read Chapters 1 and 2 of the
seL4
Reference Manual, by Tuesday Jan 26.
- Tue, Jan 26. The seL4 kernel.
Overview
- layered operating system
- seL4
- capabilities
- seL4 API and Objects
- seL4 threads
- seL4 scheduler
Assignment: read Chapter 1 of the textbook, with particular emphasis
on Section 1.3. Also read Chapter 3 of the
seL4
Reference Manual. Read by Thursday Jan 28.
- Thu, Jan 28. System Calls. Chapter 1.4.
Overview
- Posix system calls
- Minix system calls
Links:
- Tue, Feb 2. Virtual Machines, introduction to Scheduling. Chapter 1.5
Overview
- virtual machines
- scheduling:
- round-robin scheduling
- priority scheduling
- modified priority scheduling
- real-time scheduling
Project 2 assigned, due February 14th.
- Thu, Feb 4. Scheduling. Chapter 2.4. Chapters 2.2, 2.4, 2.5,
and 2.6 (2.6 is long).
Also study and understand the Minix code in kernel/proc.c, with particular
attention to sched, mini_send, and mini_receive.
Overview
- seL4 and Minix scheduling
- Minix scheduling
- Interprocess communication
- Race conditions
- Locks
- Pipes
- Message passing, including in Minix
- Monitors
Links:
- Tue, Feb 9.
Presentation
- Interprocess communication, continued:
- Race conditions
- Locks
- Pipes
- Message passing, including in Minix
- Monitors
- Minix context switch
- Minix interrupt handling
- seL4 interrupt handling
- Thu, Feb 11. Minix context switch.
Presentation
- Minix context switch
- Minix interrupt handling
- Tue, Feb 16.
Minix system calls, synchronization, and process suspension and reactivation.
Presentation
- seL4 interrupt handling
- Minix system call handling
- Minix kernel synchronization
- Minix process suspension and reactivation
- a.out and kernel executable formats
- booting
- Thu, Feb 18. Exam review. Textbook chapters 1, 2.2, 2.4, 2.5, 2.6,
seL4 manual chapters 2 and 3.
Presentation
- shell, fork, and exec
- Posix system calls
- kernel structure: monolithic, microkernel, layered
- processes, threads, scheduling, context switch
- virtual machines
- IPC, races, locks, deadlocks, monitors, pipes, and message passing
- Minix
- seL4
- Tue, Feb 23. Exam 1.
- Thu, Feb 25. I/O. Textbook sections 3.1 and 3.2.
Presentation
- a.out and kernel executable formats
- booting
- I/O hardware
- DMA
- structure of I/O software
Links:
- Tue, Mar 2. I/O. Textbook sections 3.1 and 3.2.
Virtual Memory. Textbook sections 4.1, 4.2, 4.3.
Presentation
- I/O hardware
- DMA
- structure of I/O software
- Virtual Memory
Links:
- Datasheet for the
PIC 12F675. The description of the A/D converter is in section 7,
beginning on page 41.
- Thu, Mar 4. Virtual Memory. Textbook sections 4.1, 4.2, 4.3.
Presentation
- Virtual Memory
- Virtual Memory in Minix
- Virtual Memory in Linux
- Virtual Memory in seL4
Links:
Project 4 assigned, due March 23rd.
- Tue, Mar 9. Textbook sections 3.3, 3.4, 3.5, 3.6
Presentation
- Virtual Memory in Linux
- Virtual Memory in seL4
- Minix device drivers
- Minix block driver and block I/O
- Minix RAM disk driver
- Thu, Mar 11. Textbook sections 3.6, 3.7, 3.8
Presentation
- Minix device drivers
- Minix block driver and block I/O
- Tue, Mar 23. Textbook sections 4.1, 4.2, 4.3, 4.4, 4.5, 4.6
Presentation
- Minix RAM disk driver
- Minix hard disk driver
- Minix terminal driver
- Memory management
Links:
Links for Linux memory management (generally for Linux version 2, which
seems better documented than any later version):
- The Linux Documentation Project has a detailed description
of memory management in Linux, mostly focused on the implementation of
virtual memory.
- Mel Gorman posted (in 2007) a very detailed description
of the internals of Linux virtual memory.
- There is an entire website
devoted to Linux memory management, including both how a system
administrator might optimize
the virtual memory, and how the memory management works
internally
- Thu, Mar 25. Exam Review.
Textbook sections 3.1-3.6, 4.1-4.6
seL4
Reference Manual, Chapter 7.
Presentation
- booting
- I/O hardware, DMA, I/O software
- device drivers
- virtual memory
- Tue, Mar 30. Exam 2.
- Thu, Apr 1. Textbook sections 4.7 and 4.8.
Presentation
- Minix hard disk driver
- Minix terminal driver
- Memory management
- Minix Exec
- Linux Modules
- Signals
Project 5 assigned, due April 5th (first draft)
and April 8th (final version).
- Tue, Apr 6.
Presentation
- Memory management
- Minix Exec
- Linux Modules
- Signals
Links:
- Thu, Apr 8. Textbook sections 5.1, 5.2, 5.3, 5.4, 5.5
Presentation
- Linux Modules
- Signals
- File Systems
- File System implementation
Links:
Project 6 assigned, due April 27th.
- Tue, Apr 13.
Presentation
- File System implementation
- File System reliability
- File System performance
- Thu, Apr 15. Textbook sections 5.6, 5.7.
- Tue, Apr 20. Minix file operations.
- Thu, Apr 22.
- Tue, Apr 27. Course Review.
- Thu, Apr 29.
- Tue, May 4.
The final exam for this class is
scheduled for Tuesday May 11th, from 12noon to 2pm HST.
The final exam may be taken early -- please speak with the instructor
for further details.