This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2023spring.ics612/index.html instead.
Theory of Operating Systems, ICS 612
This page is
http://www2.hawaii.edu/~esb/2023spring.ics612/index.html, ICS 612,
CRN 89458.
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 2021. If you wish to look
ahead, please refer to that courses, since many of the same subjects will
be covered, although details may vary.
- Mon, Jan 9. Course introductions.
Overview
- course overview
- why study operating systems?
- theory and implementation
- a range of operating systems
- historical background
- Wed, Jan 11. 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 1st.
- Wed, Jan 18.
Install Minix, and maybe Linux and/or seL4 -- come to class, but no
lecture. If possible, please bring your device, and if possible, please
install a virtual machine such as qemu or vmware before coming to class.
Please see the administrative page for details, under the heading
"System".
- Mon, Jan 23. Processes and Schedulers.
Overview
- project 1 (review)
- scripting languages
- processes and threads
Assignment (not graded): write small test programs to become comfortable
with pthreads and mutexes.
- Wed, Jan 25. The seL4 kernel.
Overview
- thread synchronization
- process table
- schedulers
- interrupts and context switch
- layered operating system
- layered operating system
Read, understand, and run thread_example.c and
ThreadExample.java.
- Mon, Jan 30. SeL4 and System Calls. Chapter 1.3 and 1.4 of the textbook
Overview
- seL4
- capabilities
- seL4 API and Objects
- seL4 threads
- seL4 scheduler
- Posix system calls
- Minix system calls
Links:
Assignment: read Chapter 1 of the textbook, with particular emphasis
on Section 1.3. Also read Chapters 1, 2, and 3 of the
seL4
Reference Manual, by February 4th.
- Wed, Feb 1. System Calls, Virtual Machines, introduction to Scheduling. Chapter 1.5
Overview
- Posix system calls
- Minix system calls
- virtual machines
- scheduling:
- round-robin scheduling
- priority scheduling
- modified priority scheduling
- real-time scheduling
Links:
Project 2 assigned, due February 13th.
- Mon, Feb 6. 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
- scheduling: round-robin, priority (and modified priority), real-time
- seL4 and Minix scheduling
- Interprocess communication
- Race conditions
- Locks
- Pipes
- Message passing, including in Minix
- Monitors
Links:
- Wed, Feb 8.
Presentation
- Special kinds of locks
- Pipes
- Message passing, including in Minix
- Minix context switch and interrupt handling
- seL4 interrupt handling
Links:
- Mon, Feb 13. Minix context switch.
Presentation
- Minix interrupt handling
- seL4 interrupt handling
- Minix system call handling
- Minix kernel synchronization
- Minix process suspension and reactivation
- a.out and kernel executable formats
- booting
- Wed, Feb 15.
Minix system calls, synchronization, and process suspension and reactivation.
Presentation
- a.out and kernel executable formats
- Wed, Feb 22. 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
- Mon, Feb 27. Midterm Exam 1.
- Wed, Mar 1. I/O. Textbook sections 3.1 and 3.2.
Presentation
- booting
- I/O hardware
- DMA
- structure of I/O software
Links:
- Datasheet for the
PIC 12F675. The description of the A/D converter is in section 7,
beginning on page 41.
Project 3 assigned.
Part 1 is due March 8th, Part 2 is due March 20th.
- Mon, Mar 6. I/O. Textbook sections 3.1 and 3.2.
Virtual Memory. Textbook sections 4.1, 4.2, 4.3.
Presentation
- structure of I/O software
- device drivers
- daemons
- Virtual Memory: Minix, Linux, seL4
- Wed, Mar 8. 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
- Minix device drivers
- Minix block driver and block I/O
- Minix RAM disk driver
Links:
- Mon, Mar 20. 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
- Wed, Mar 22. Textbook sections 3.6, 3.7, 3.8
Presentation
- Minix device drivers
- Minix block driver and block I/O
- Minix RAM disk driver
Project 4 assigned, due April 10th.
- Mon, Mar 27. Holiday, Prince Kuhio day.
- Wed, Mar 29. Textbook sections 4.1, 4.2, 4.3, 4.4, 4.5, 4.6
Presentation
- Minix block driver and block I/O
- 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
- Mon, Apr 3. 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
- Wed, Apr 5. Midterm Exam 2.
- Mon, Apr 10. Textbook sections 4.7 and 4.8.
Presentation
- Minix hard disk driver
- Minix terminal driver
- Memory management
- Minix Exec
- Linux Modules
- Signals
- Wed, Apr 12.
Presentation
- Memory management
- Minix Exec
- Linux Modules
- Signals
Links:
Project 5 assigned, due April 14th (first draft) and April 18th (final version).
- Mon, Apr 17. Textbook sections 5.1, 5.2, 5.3, 5.4, 5.5
Presentation
- File Systems
- File System implementation
Project 6 assigned, due May 1st.
- Wed, Apr 19.
Presentation
- file system implementation
- file system reliability
- file system performance
- Mon, Apr 24. Textbook sections 5.6, 5.7.
Presentation
- file system reliability
- file system performance
- Minix FS in-memory data structures
- Wed, Apr 26. Distributed computing and security overview.
Presentation
- distributed computing
- security overview
- more Minix FS
Links:
- Mon, May 1. Course Review.
Presentation
- operating systems overview
- interfaces: APIs, shells, window systems
- processes and threads, scheduling, interrupts, IPC and synchronization, context switches
- exec, fork, memory management, signals
- I/O and device drivers
- file systems
- security
- operating system structure: distributed, cluster, and grid computing
- projects
- discussion
- Wed, May 3.
Student Presentations on project 6 or other topic.
The final exam for this class is
scheduled for Monday May 8th, from 7:30am to 9:30am HST.
The final exam may be taken early -- if interested, please speak
with the instructor.