Theory of Operating Systems, ICS 612
This page is
http://www2.hawaii.edu/~esb/2019spring.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 Fall 2011. 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 8. Course introductions.
Overview
- course overview
- why study operating systems?
- theory and implementation
- a range of operating systems
- historical background
- Thu, Jan 10. Install Minix, and maybe Linux and/or seL4 (come
to class, but no lecture).
- Tue, Jan 15. 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 January 29th.
- Thu, Jan 17. Processes and Schedulers.
Overview
- project 1 (review)
- scripting languages
- processes
- process table
- schedulers
- interrupts and context switch
- layered operating system
Assignment: read Chapters 1 and 2 of the
seL4
Reference Manual, by Tuesday Jan 22.
- Tue, Jan 22. 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 24.
- Thu, Jan 24. System Calls. Chapter 1.4.
Overview
- Posix system calls
- Minix system calls
Links:
- Tue, Jan 29. Virtual Machines, introduction to Scheduling. Chapter 1.5
Overview
- virtual machines
- scheduling
- Thu, Jan 31. Scheduling. Chapter 2.4.
Overview
- round-robin scheduling
- priority scheduling
- modified priority scheduling
- real-time scheduling
- seL4 and Minix scheduling
- Minix message passing
Links:
- Tue, Feb 5. 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.
Presentation
- Minix scheduling
- Interprocess communication
- Race conditions
- Locks
- Pipes
- Message passing, including in Minix
- Monitors
Project 2 assigned, due February 17th.
- Thu, Feb 7.
Presentation
- Minix scheduling
- Interprocess communication: pipes
- Message passing, including in Minix
- Monitors
- Minix context switch
- Minix interrupt handling
Links:
- Tue, Feb 12. Minix context switch, system calls, synchronization, and
process suspension and reactivation.
Presentation
- Minix context switch
- Minix interrupt handling
- Minix system call handling
- Minix kernel synchronization
- Minix process suspension and reactivation
- a.out and kernel executable formats
- booting
Links:
- Thu, Feb 14. Exam review.
Presentation
- shell, fork, and exec
- Posix system calls
- kernel structure: monolithic, microkernel, layered
- processes, scheduling, context switch
- virtual machines
- IPC, races, locks, deadlocks, monitors, pipes, and message passing
- Minix
- seL4
- Tue, Feb 19. Exam 1.
- Thu, Feb 21.
Presentation
- Minix a.out and kernel executable formats
- booting
- I/O hardware
- DMA
- structure of I/O software
Project 3 assigned, due March 4th.
- Tue, Feb 26. I/O. Textbook sections 3.1 and 3.2.
Presentation
- 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.
- Thu, Feb 28. Virtual Memory. Textbook sections 4.1, 4.2, 4.3.
seL4
Reference Manual, Chapter 7.
Presentation
- Virtual Memory
- Virtual Memory in Minix
- Virtual Memory in Linux
- Virtual Memory in seL4
- Tue, Mar 5.
Presentation
- Virtual Memory: page faults, copy-on-write, free page management, kernel memory, segmentation
- Virtual Memory in Minix
- Virtual Memory in Linux
- Virtual Memory in seL4
Links:
Project 4 assigned, due March 24th.
- Thu, Mar 7. Textbook sections 3.3, 3.4, 3.5, 3.6
Presentation
- Virtual Memory in seL4
- Minix device drivers
- Minix block driver and block I/O
- Minix RAM disk driver
Links:
- Tue, Mar 12. Textbook sections 3.6, 3.7, 3.8
Presentation
- Minix RAM disk driver
- Minix hard disk driver
- Minix terminal driver
Links:
- Thu, Mar 14. Textbook sections 4.1, 4.2, 4.3, 4.4, 4.5, 4.6
Presentation
- Minix terminal driver
- Memory management
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 28. Exam Review.
Textbook sections 3.1-3.8, 4.1-4.6
seL4
Reference Manual, Chapter 7.
Presentation
- booting
- I/O hardware, DMA, I/O software
- device drivers
- memory (i.e. address space) management
- virtual memory
- Tue, Apr 2. Exam 2.
- Thu, Apr 4. Textbook sections 4.7 and 4.8.
Presentation
- Minix Exec
- Linux Modules
- Signals
Links:
Project 5 assigned, due April 7th (first draft)
and April 10th (final version).
- Tue, Apr 9. Textbook sections 5.1, 5.2, 5.3, 5.4, 5.5
Presentation
- Signals
- File Systems
- user interface
- API
- implementation
- Thu, Apr 11.
Presentation
- File Systems
- File System implementation
- File System correctness
Project 6 assigned, due April 29th.
- Tue, Apr 16.
Presentation
- File System implementation
- File System correctness
- File System performance
- Thu, Apr 18. Textbook sections 5.6, 5.7.
Presentation
- Minix FS in-memory data structures
- Minix FS disk layout
- Minix buffer cache
- Minix inodes and superblock
- Minix opening files
- Tue, Apr 23.
Presentation
- Minix:
- reading and writing files
- pipes
- linking and unlinking
- slow system calls
- distributed computing overview
- Thu, Apr 25.
Presentation
- distributed computing, continued
- security overview
- multics security
- file system review
Links:
- Tue, Apr 30. 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
- Thu, May 2. Student Presentations on project 6 (or other topic)
The final exam for this class is
scheduled for Tuesday May 7th, from 12noon to 2pm HST.
The final exam may be taken early -- please speak with the instructor
for further details.