ICS 612: Operating Systems
This page is
http://www2.ics.hawaii.edu/~esb/2004fall.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.
This class meets MW 1:30-2:45 in Kuykendall 304.
Goals
In this course, students will:
- Deepen their fundamental understanding of operating systems
by implementing thread systems, file systems, and memory management.
- Broaden their fundamental understanding of operating systems by
studying distributed systems, parallel computer operating systems, and
embedded operating systems.
- practice creating, modify and adapt operating system
- learn about operating system theory, including scheduling,
allocation, and paging algorithms.
Organization
This course has projects, exams, and presentations.
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+), 80% (B), 80% (B-), 77% (C+),
70% (C), 70% (C-), 67% (D+), 63% (D), 60% (D-). 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.
Projects must be turned in on time, and will only be accepted late
for very good reasons. You must do well on the projects to do well in
this class. Exams may be taken early, if requested at least one week
before the scheduled time.
In this course, it is fine for students to collaborate on finding
solutions for projects, but whatever you turn in must have been
written by you and, for coding, must be your code. You may only
collaborate with other students who are taking ICS 612 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 your own and reflect your own
knowledge and understanding
Most project may be done individually or in groups, unless
otherwise specified for the project. Projects will require a computer
on which to install Minix. This may be a system you already own,
perhaps that you are willing to dual-boot, or may be a system borrowed
for the purpose (by way of the instructor) from the Hawaii Open Source Education
Foundation or other sources. There is only a limited number of
such loaner systems.
The textbook is "Operating Systems -- Design and Implementation",
by Andrew Tanenbaum and Albert Woodhull (2nd edition, 1997). The
textbook is available from the UH bookstore and online sellers. The
textbook has a home
page.
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. Since this is a graduate course, you are expected to be
proactive and professional, and you will be held to high standards.
If you have any questions, please contact the instructor.
I am always grateful when students can suggest improvements or
corrections to any notes, even stuff that has already been covered. I
normally acknowledge authors of major new material, and do not
acknowledge people who suggest minor improvements, and in any case
will respect anyone's desire to remain anonymous.
This is the first time I am teaching this course, so I am
particularly open to suggestions of special topics that are of
interest to the students. If the syllabus fails to show some topic
that you were hoping would be covered, please let me know as soon as
possible.
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 23. Introduction and Overview, Book, Chapter 1.
Materials Covered:
- course overview
- course overview
- why study operating systems?
- theory and implementation
- a range of operating systems
- historical background
- Aug 25. Shells
Materials Covered:
- shells and window systems
- what is and what isn't part of the operating system?
- starting programs
- processes
- pipes
- scripting languages
Assignment: read Chapter 1 in the textbook.
Project 1 assigned, due Sep 8th
- Aug 30. Processes, Chapter 2
Materials Covered:
- processes
- process table
- schedulers
- interrupts and context switch
- layered operating system
Assignment: read Chapter 2 in the textbook.
- Sep 1. Posix System Calls, Chapter 1.
Materials Covered:
- Sep 8. IPC and synchronization, Chapter 2
Materials Covered:
- inter-process communication
- races
- pipes
- semaphores
- monitors
- message passing
- read-copy-update (RCU)
Project 2 assigned, due Sep 15th
- Sep 13.
Materials Covered:
- scheduling
- round-robin scheduling
- priority scheduling
- modified priority scheduling
- real-time scheduling
- Minix scheduling
- Minix message passing
- Sep 15.
Materials Covered:
- Minix context switch implementation
- Minix kernel synchronization
- Minix process suspension and reactivation
- a.out and kernel executable formats
- booting
Project 3 assigned, due Sep 29th
- Sep 20. Input/Output, Chapter 3
Materials Covered:
- I/O hardware
- DMA
- structure of I/O software
- deadlocks
- Sep 22.
Materials Covered:
- overview of Minix I/O
- Minix Block Devices
- Sep 27.
Materials Covered:
- Minix RAM disk
- Minix hard disk driver
- Sep 29.
Materials Covered:
- Minix Clock Driver
- Minix Terminal Driver
- Minix System Task
- Oct 4. Exam 1, covering all the material up to now.
- Oct 6. Memory Management, Chapter 4
Materials Covered:
- Minix System Task
- Memory Management: Allocation, Swapping, and Paging
- Oct 11.
Materials Covered:
- paging
- virtual memory hardware
- minix memory management
Project 4 assigned, due October 18th.
- Oct 13.
Materials Covered:
- Minix fork and exit
- Minix exec
- modules
- Oct 18.
Materials Covered:
- Unix/Posix signals
- Minix signals
- Oct 20. File Systems, Chapter 5
Materials Covered:
- file systems: user interface, API
Project 5 assigned, due October 29th.
- Oct 25.
Materials Covered:
- file system implementation
- Oct 27.
Materials Covered:
- network file system
- security
- Nov 1. No classes due to flooding on campus.
- Nov 3. No classes due to flooding on campus.
- Nov 8.
Materials Covered:
- SELinux
- Minix FS implementation (start)
- Nov 10.
Materials Covered:
- Nov 15. Exam 2, covering all the material since Exam 1.
- Nov 17.
Materials Covered:
Project 6 assigned, due December 6th.
- Nov 22. Distributed Computing -- Amoeba
Materials Covered:
- distributed computing
- amoeba
- Nov 24. Security -- Multics
Materials Covered:
- amoeba, continued
- multics overview
- multics security review
- operating system security 30 years later
- Nov 29. Implementation architecture: microkernels -- Mach, exokernel
Materials Covered:
- design issues
- monolithic kernels
- microkernels
- Mach 3.0
- exokernel
- virtual machines
- Dec 1. Cluster and grid computing -- beowulf and SETI@home
Materials Covered:
- grid computing
- beowulf clusters
- Dec 6.
Materials Covered:
Course evaluations, please bring #2 pencil.
- Dec 8. Review.
Materials Covered:
- 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
The final exam covers the entire course. The final exam for this
course is on Monday, December 13th at 2:15pm-4:15pm in Kuykendall 304.
The final may be taken early upon request.