ICS 412: Operating Systems
This page is
http://www2.ics.hawaii.edu/~esb/2006fall.ics412/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.
This class meets MWF 9:30-10:20 in Kuykendall 308.
Goals
In this course, students will:
- gain a fundamental understanding of operating systems, focusing
on the fundamental principles of operating system design and
implementation.
- study operating systems practical importance, including Linux and
Windows.
- learn to modify and adapt existing operating system code
Organization
This course has homework assignments, projects, and exams.
All students are required to join the course
mailing list.
Grades are assigned based on your performance on:
- projects, worth a total of 40% of the grade
- homeworks, worth a total of 20% of the grade
- 3 midterm exams and a final, each worth 10% of the grade (total 40%)
Grading will use the (nearly) standard cutoffs of
97% (A+), 93% (A), 90% (A-), 87% (B+), 83% (B), 80% (B-), 77% (C+),
70% (C), 67% (D+), 63% (D), 60% (D-) (no C- will be assigned, due to UH
not considering a C- a passing grade for many purposes). Depending on
the performance of the class as a whole, I may or may not grade more
generously (i.e. grade on a curve), but students should assume that I
will not.
Homeworks and projects must be turned in on time, and will only be
accepted late for very good reasons. You must do well on the
homeworks and projects to do well in this class. Exams may be taken
early, if requested at least two weeks before the scheduled time.
Projects will require a computer on which to install Linux (kernel
version 2.6.17.11, available from kernel.org). This may be a system
you already own, perhaps that you are willing to dual-boot or on which
you are willing to
install a simulator, e.g.
Bochs,
Qemu,
or Vmware,
(there is also
Plex86, but
it does not appear to be very active at this time -- also, vmware seems
to have a 30-day free trial, but be sure you have a plan for what happens
at the end of the 30 days. Finally, one student suggests using the free
VMware player after creating a machine image with
easyvmx),
or may be a system borrowed
for the purpose (by way of the instructor) from the Hawaii Open Source Education
Foundation. If you need such a system, please email the instructor
as soon as possible, but in any case no later than Monday, August
28th.
There are two textbooks, both required. The first is "Modern
Operating Systems", by Andrew Tanenbaum (2nd
edition, 2001). The textbook has a home
page.
The second textbook is "Linux Kernel Development", by Robert Love
(2nd edition, 2005). This textbook also has a home page.
Both textbook should be available from the UH bookstore, other
bookstores in Honolulu, and online sellers.
I re-use these course material, so I am always grateful when
students can suggest improvements or corrections to any notes. I
normally acknowledge authors of major new material, and do not
acknowledge people who suggest minor improvements.
In this course, it is fine for students to collaborate on finding
solutions for homeworks and projects, but whatever you turn in must
have been written by you and be in your own words (and drawings, where
needed). Note that collaboration must be a two-way street, so
copying does not count as collaboration. You may only collaborate with
other students who are taking ICS 412 this semester -- collaborating
with anybody else will definitely be considered cheating. Some of the
homework and project solutions may be found on the web -- you are
welcome to consult and use such material, but if you do so:
- you MUST list the URL(s) from which your information is
derived, and
- any answer must be entirely in your own words and reflect your
own knowledge and understanding
All homeworks are turned in individually, all project may be done
individually or in groups.
Cheating Policy: any cheating will result in a grade of 0
for the assignment or exam the first time it is detected, and a grade
of F for the course for any subsequent instance. There is to be no
collaboration whatsoever on exams: you may study together, but
anything you turn in on an exam must be entirely your own intellectual
contribution. The outreach college's instructor's manual states, in
part:
Plagiarism includes, but is not limited to, submitting, to satisfy an
academic requirement, any document that has been copied in whole or in
part from another individual's work without identifying that
individual.
The UH
law school also has a good definition of plagiarism, including the
following:
The submission or presentation of any work, in any form, that is not a
student's own, without acknowledgment of the source.
If you have any questions, please contact the instructor.
Schedule
This schedule is subject to change.
Presentation notes are in HTML. I usually post notes no later than the
day before the lecture.
- Aug 21
Course overview. Overview of operating systems.
Topics:
- introductions
- course overview
- What is an Operating System?
- What is interesting about Operating Systems?
- a Brief History
- OS concepts
Read Tanenbaum, Chapter 1, by Sep 1th.
Homework 1 assigned, due Sep 1st.
- Aug 23
OS structure, computer hardware review.
Topics:
- OS concepts
- Operating System Structure
- computer hardware review
- Aug 25
System calls.
Topics:
- computer hardware review (continued)
- system calls
One comment from a student
regarding the material discussed in the lecture.
- Aug 28
Processes and threads.
Topics:
- Aug 30
Processes and threads.
Topics:
- Unix segments
- processes
- threads
Read Tanenbaum, Chapter 2, and Love, Chapters 1, 2, 3, and 4,
by September 8th.
Project 1 assigned, due September 8th.
- Sep 1
Process scheduling.
Topics:
- scheduler principles
- scheduler example
- what a scheduler does
- scheduler algorithms
- scheduler implementation
- Sep 6
Inter-process communication.
Topics:
- linux scheduler
- linux thread implementation
- Sep 8
Inter-process communication.
Topics:
- introduction to inter-process communication
- synchronization mechanisms
- Sep 11
Inter-process communication (continued), deadlock, system calls.
Topics:
- synchronization mechanisms
- classical IPC problems
- introduction to deadlock and deadlock prevention
- system call implementation
Read Tanenbaum, Chapter 5, and Love, Chapters 5, 6, and 7,
by February 18th (not part of the exam).
Homework 2 assigned, due Sep 22nd.
Also read: "An
Unreliable Guide To Locking"
- Sep 13
Exam 1, covering Chapters 1 and 2 of Tanenbaum, Chapters 1-4
of Love (chapters 1-3 of the first edition), and the material
covered so far in the lectures, as well as homework 1 and project 1.
- Sep 15
System call implementation
Topics:
- system call implementation
Project 2 assigned,
due September 29th.
- Sep 18
System call implementation, I/O hardware
Topics:
- system call implementation
- I/O principles: hardware and software
- Sep 20
I/O software.
Topics:
- I/O principles: hardware and software
- Sep 22
I/O software, Disks
Topics:
- I/O software
- disk structure
- RAID
- CD/DVD
- Sep 25
RAID, CDs, DVDs.
Topics:
Read Love, Chapters 8, 9, and 10, by October 9th.
- Sep 27
Clocks, Terminals, graphical devices.
Topics:
- clocks
- terminals and displays
- Sep 29
Interrupt handlers, deferring work in Linux.
Linux time and timers.
Topics:
- interrupt handling in Linux
- bottom halves
- linux kernel time
- Oct 2
Linux time and timers.
Topics:
- bottom halves
- linux kernel time
- Oct 4
Linux kernel synchronization.
Topics:
- linux kernel time
- concurrency in the kernel
- atomic operations
- spinlocks, preemption, and interrupts
- semaphores
- Oct 6
Linux code synchronization.
Topics:
- spinlocks, preemption, and interrupts
- semaphores
- reader-writer locking and semaphores, seq locks
- barriers
- big kernel lock
- barriers
- designing for concurrent execution
- locking data structures, not code
- Oct 9
Deadlock, contention, and scalability. Exam review.
Topics:
- achieving deadlock
- preventing deadlock
- curing deadlock
- contention and scalability
- exam review:
- system calls
- I/O hardware and software overview
- disks (including CDs), RAID
- clocks (and linux kernel time), terminals, displays
- linux interrupt handling, bottom halves
- linux atomic operations, locks, semaphores, barriers
- deadlock
- Oct 11
Exam 2
- Oct 13
Virtual memory and paging.
Topics:
- virtual memory
- page tables
- Translation Lookaside Buffer
Homework 3 assigned, due October 20th.
Project 3 assigned, due October 25th.
- Oct 16
Paging hardware and software.
Topics:
- Translation Lookaside Buffer
- page replacement
- page faults
- Oct 18
Linux paging
Topics:
- page faults
- memory zones
- kernel memory allocation
- slab layer
Read Tanenbaum, Chapters 3 and 4, and Love, Chapter 11 (and make
sure you know Chapter 10), by October 25th.
Also skim Tanenbaum, Chapter 7, by the same date.
- Oct 20
Multimedia
Topics:
- multimedia
- real-time scheduling: RMS, EDFS, and Linux
- Oct 23
Real-time scheduling
Topics:
- real-time scheduling: EDFS and Linux
- file systems: API
- file system organization
- sequential file allocation
- Oct 25
Introduction to File Systems.
Topics:
- file systems: API
- file system organization
- sequential file allocation
Read Tanenbaum, Chapter 6, and Love, Chapters 12, 13, 14, and 15, by Nov 3rd.
- Oct 27
File allocation schemes
Topics:
- block file allocation
- inodes
- file system consistency
- journaling file systems
- Oct 30
File system implementation structure.
Topics:
- filesystem and disk access layers
- the Virtual File System (VFS) layer
- VFS objects: superblocks, inodes, dentries, file objects, open file tables
Project 4 assigned, due Wednesday, November 8th.
- Nov 1
VFS, Block I/O
Topics:
- VFS design
- Block I/O
- I/O schedulers
- Nov 3
I/O schedulers, segmentation and chaching
Topics:
- tradeoffs and performance
- address spaces and memory areas
- Nov 6
Segmentation and caching
Topics:
- page table
- page cache
- tree algorithms
- exam review
- Nov 8
Exam 3, covering Tanenbaum, chapters 3, 4, 6, and the overall
concepts of 7, and Love, chapters 10 through 15.
- Nov 13
OS debugging and maintenance
Topics:
- debugging an OS
- code portability
Read Tanenbaum, Chapter 10, and Love, Chapters 18, 19, and page 335 of Chapter 20.
- Nov 15
OS portability
Topics:
- operating system portability
- similar but different operating systems: the Unix family
Homework 4 assigned, due November 27th.
- Nov 17
Unix operating systems
Topics:
- Unix similarities and differences
- Unix signals
- Nov 20
NFS, Linux Ext2 file system
Topics:
- the Network File System (NFS)
- the Linux ext2 file system
Read Tanenbaum, Chapter 11, and
Read Love, Chapters 16 and 17, by November 29th
- Nov 22
MS Windows.
Topics:
- MS Windows brief history
- Windows overview
- Windows 2000 scheduler
- Windows 2000 structure
- Windows 2000 objects
- Windows 2000 registry
- Nov 27
MS Windows 2000.
Topics:
- structure
- objects
- registry
- Nov 29
MS Windows 2000, continued
Topics:
- memory management
- I/O
- file system
Read Tanenbaum, Chapter 12, and Love, Chapter 20 and Appendix A,
by December 6th
Project 5 assigned, due Wednesday,
December 6th.
- Dec 1
Operating System design
Topics:
- windows 2000 security concepts
- Goals and Principles
- Implementation challenges
- Dec 4
Operating System design
Topics:
- OS design process
- Data Structures
- OS Structure
- implementation issues
- operating system trends
Course evaluations, please bring a #2 pencil.
- Dec 6
Operating system trends,
review of the entire course.
Topics:
- OS Structure
- implementation issues
- operating system trends
- resource management on computers
- scheduling: managing the CPU time
- processes and threads, inter-process communication, deadlock
- protection: managing access to memory, disk, other devices
- kernel mode and kernel entry points: system calls, context switches,
interrupts, delayed processing
- input/output: managing devices
- virtual memory: managing physical memory and backups to disk (overlays)
- disks and file systems: managing persistent storage, caching
The final exam covers the entire course. The final exam for this
course is on Monday, Dec 11th at 9:45am in Kuykendall 308. If you
wish to take the final early, please contact the instructor by
Thursday November 30th.