ICS 412: Operating Systems
This page is
http://www2.ics.hawaii.edu/~esb/2005spring.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 11:30-12:20 in POST 126.
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.
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). 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. Projects will require a computer on which
to install Linux. 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),
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 me no later
than Thursday, January 13th.
There are two textbooks. 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
(1st edition, 2003). This textbook also has a home page.
Both textbook should be available from the UH bookstore, other
bookstores in Honolulu, and online sellers.
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.
I do re-use 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.
Schedule
This schedule is subject to change.
Presentation notes are in HTML. I usually post notes no later than the
day before the lecture.
- Jan 10
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 Jan 19th. Homework 1
assigned, due Jan 21st.
- Jan 12
OS structure, computer hardware review.
Topics:
- Operating System Structure
- computer hardware review
- Jan 14: System calls.
Slides
- Jan 19
Processes and threads.
Topics:
Read Tanenbaum, Chapter 2, and Love, Chapters 1, 2, and 3,
by January 31st.
- Jan 21
Process Scheduling (start)
Topics:
- scheduler principles
- scheduler example
- what a scheduler does
Project 1 assigned.
- Jan 24
Schedulers.
Topics:
- what a scheduler does
- scheduler algorithms
- scheduler implementation
- linux thread implementation
- Jan 26
Inter-process communication.
Topics:
- introduction to inter-process communication
- Jan 28
Inter-process communication.
Topics:
- synchronization mechanisms
- classical IPC problems
- introduction to deadlock and deadlock prevention
- Jan 31
Inter-process communication (continued), deadlock, system calls.
Topics:
- classical IPC problems
- introduction to deadlock and deadlock prevention
- system call implementation
Read Tanenbaum, Chapter 5, and Love, Chapters 4, 5 and 6,
by February 18th (not part of the exam).
Homework 2 assigned, due Feb 11th.
See also: An
Unreliable Guide To Locking
- Feb 2
Exam 1, covering Chapters 1 and 2 of Tanenbaum, Chapters 1, 2,
and 3 of Love (chapters 1-4 of the second edition), and the material
covered so far in the lectures.
- Feb 4
System call implementation
Topics:
- system call implementation
- Feb 7
I/O hardware
Topics:
- I/O principles: hardware and software
- Feb 9
I/O software, Disks.
Topics:
- disk structure
- RAID
- CD/DVD
Project 2 assigned,
due Wednesday, February 23rd.
- Feb 11
Disks, clocks
Topics:
- disk structure
- RAID
- CD/DVD
- Feb 14
Clocks, Terminals, graphical devices.
Topics:
- clocks
- terminals and displays
Read Love, Chapters 7, 8, and 9, by March 1st.
- Feb 16
Interrupt handlers, deferring work in Linux.
Topics:
- interrupt handling in Linux
- bottom halves
- Feb 18
Linux time and timers.
Topics:
- Feb 23
Linux kernel synchronization.
Topics:
- concurrency in the kernel
- atomic operations
- Feb 25
More Linux kernel synchronization.
Topics:
- spinlocks, preemption, and interrupts
- semaphores
- reader-writer locking and semaphores, seq locks
- barriers
- big kernel lock
- Feb 28
Linux code synchronization.
Topics:
- barriers
- designing for concurrent execution
- locking data structures, not code
- achieving deadlock
- preventing deadlock
- curing deadlock
- contention and scalability
- Mar 2
Review.
Topics:
- 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
- Mar 4
Exam 2, covering Tanenbaum Chapter 5 and Love Chapters 4, 5, 6,
7, 8, and 9.
Read Tanenbaum, Chapters 3 and 4, and Love, Chapter 10, by March 14th.
Homework 3 assigned, due March 14th.
- Mar 7
Virtual memory and paging.
Topics:
- virtual memory
- page tables
- Mar 9
Paging hardware and software.
Topics:
- Translation Lookaside Buffer
- page replacement
- page faults
- Mar 11
Linux paging
Topics:
- page faults
- memory zones
- kernel memory allocation
- slab layer
Skim Tanenbaum, Chapter 7, and re-read Love, Chapter 9, by March 18th.
- Mar 14
Multimedia
Topics:
- Mar 16
Real-time scheduling
Topics:
- Rate Monotonic Scheduling
- Earliest Deadline First Scheduling
- Linux real-time scheduling
Project 3 assigned, due Monday, April 12th.
- Mar 18
Introduction to File Systems.
Topics:
- file systems: API
- file system organization
- sequential file allocation
Read Tanenbaum, Chapter 6, and Love, Chapters 11, 12, 13, and 14, by April 5th.
- Mar 28
File allocation schemes
Topics:
- file systems review
- sequential file allocation
- block file allocation
- inodes
- Mar 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
- Block I/O
- Apr 1
VFS, Block I/O
Topics:
- VFS design
- Block I/O
- I/O schedulers
- Apr 4
I/O schedulers, segmentation and chaching
Topics:
- deadline and anticipatory scheduling
- tradeoffs and performance
- address spaces and memory areas
- page table
- page cache
- tree algorithms
- Apr 6
Segmentation and caching
Topics:
- memory areas
- page table
- page cache
- tree algorithms
- exam review
- Apr 8
Exam 3., covering Tanenbaum, chapters 3, 4, 6, and the overall
concepts of 7, and Love, chapters 9, 10, 11, 12, 13, and 14.
- Apr 11
OS debugging and maintenance
Topics:
- debugging an OS
- code portability
Homework 4 assigned, due April 18th.
Read Tanenbaum, Chapter 10, and Love, Chapters 15, 16, and p. 281
of Chapter 17, by April 18th.
- Apr 13
OS portability
Topics:
- operating system portability
- similar but different operating systems: the Unix family
- Apr 15
Unix operating systems
Topics:
- the Unix family of operating systems
- Apr 18
Signals, NFS
Topics:
- Unix signals
- the Network File System (NFS)
Read Tanenbaum, Chapter 11, by April 21st.
- Apr 20
Linux ext2 file system, MS Windows.
Topics:
- the Linux ext2 file system
- MS Windows brief history
- Windows overview
- Windows 2000 scheduler
- Windows 2000 structure
- Windows 2000 objects
- Windows 2000 registry
Read Tanenbaum, Chapter 11, by April 21st.
- Apr 22
MS Windows 2000.
Topics:
- structure
- objects
- registry
- Apr 25
MS Windows 2000, continued
Topics:
- memory management
- I/O
- file system
- windows 2000 security concepts
Read Tanenbaum, Chapter 12, and Love, Appendices A and B, by April 28th
Project 4 assigned, due Wednesday, May 4th.
- Apr 27
Operating System design
Topics:
- Goals and Principles
- Implementation challenges
- Apr 29
Operating System design
Topics:
- Implementation challenges
- Data Structures
- OS Structure
- May 2
Operating System design, continued
Topics:
- implementation issues
- operating system trends
Course evaluations, please bring a #2 pencil.
- May 4
Operating system trends,
review of the entire course.
Topics:
- 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 Friday, May 13th at 12:00 in POST 126. If you wish
to take the final early, please contact the instructor by May 2nd.