A hands-on introduction to operating systems,
including
topics in: multiprogramming, communication and synchronization, memory
management, I/O subsystems, and resource scheduling polices. The
laboratory
component consists of constructing a small kernel, including functions
for
device I/O, multi-tasking, and memory management.
Prerequisites: CMSC
311,
CMSC 330
Objective
An in-depth understanding of how an operating
system manages
resources in a computer and provides programmers with a machine and
device
independent interface.The emphasis of
this class will be on operating system concepts. Running examples will
be drawn
from contemporary OS’s including UNIX, Windows, and Linux.
Topics
·Introduction to Operating Systems (1 week)
·The Cyclone Programming Language (0.5 weeks)
·Concurrent Processes (2 weeks)
·Kernel implementation techniques (1 week)
·CPU scheduling (1 week)
·Memory Management (2 weeks)
·File and I/O Systems (2 weeks)
·Security and Protection (1 week)
·Networking and Distributed Systems (2 weeks)
·Objects and Naming (1 week)
·Window and Display Services (0.5 weeks)
Text
Operating System
Concepts6th
Edition or newer,Siberschatz,
Galvin and Gagne, Addison-Wesley 2002.
Programming Projects
Understanding operating system concepts is a
hands-on
activity. In this class, students will build a
working operating system, starting from a small kernel. The
programming projects will require students to
read and
understand the provided code, write new modules, and debug the
resulting
system. The provided code is written in C, and a small amount of
Intel 80x86 assembly language. The programming
assignments will be time consuming and students taking
this class should plan their class schedules accordingly.
Projects are due at 6pm on the due date. However, projects may be
turned in late up until 9am the following morning, receiving a 15%
penalty. If you are unable to complete a programming assignment
due to
illness
or family emergency, please see your instructor as soon as possible
to make
special arrangements. The instructor reserves the right to fail,
regardless of overall numeric score, students who do not
submit a good faith attempt to complete all programming assignments.
Cyclone. Students can
program the projects in C, or alternatively use the research
programming language Cyclone. Like
Java, Cyclone is type-safe. This means that certain types of
errors, like dereferencing outside the bounds of an array or accessing
freed storage, are not possible. At the same time, Cyclone
provides the low-level control needed to program an operating
system. Therefore, using Cyclone means that you will not have to
debug these sorts of errors, which can be quite hard to find.
Cyclone also provides a number of advanced features - like pattern
matching, exceptions, type inference, and parametric polymorphism -
that make the programming task simpler.
At the same time, Cyclone's compiler is a research prototype, so it may
have bugs, and its error messages are not always easy to
understand. Therefore, aside from an introductory project to get
students acquainted with Cyclone, its use will be optional. As an
extra incentive, students who use Cyclone can receive a small amount of
extra credit. We will spend one or two lectures going over
Cyclone in class.
Grading
Student grades will be determined as follows:
Programming
Assignments (6 total)
40%
Midterms
(2 each worth 15%)
30%
Final
Exam
30%
Re-grade policy.All requests to change grading of homework,
programming projects, or exams must be submitted in writing (all such
requests must be
start through a request at grades.cs.umd.edu,
in most cases you will have
to then talk to a TA and/or Prof) within one
week of when the assignment was made available for pickup. Requests
must be
specific and explain why you feel your answer deserves additional
credit. A
request to re-grade an assignment can result in the entire assignment
being
re-evaluated and as a result the score of any
part of the assignment may be increased or loweredas
appropriate.
Academic Integrity. All
work that you submit in this course must be
your own;
unauthorized group efforts will be considered academic dishonesty. See
the
Undergraduate Catalog for definitions and sanctions. Academic
dishonesty is a
serious offense that may result in
suspension or expulsion from the University. In addition to any
other
action taken, the grade “XF” denoting “failure due to academic
dishonesty” will
normally be recorded on the transcripts of students found responsible
for acts
of academic dishonesty. Sharing of code on programming assignments is a
form of
academic dishonesty. Please read this statement
for further information.
Responsible Conduct
Cell phones.As a courtesy
to your fellow
classmates,
pagers and cell phones must be off or on vibrate during class.Having cell phones or pages ring during
class can result in points being deducted from your semester grade.
Office Hours and E-mail. Questions
concerning the content of the course or project should, as a general
rule, be directed to the newsgroup, csd.cmsc412. This allows your
question to be answered by whoever is monitoring the newsgroup, and the
answer to it can benefit all newsgroup readers. Please do not
send e-mail directly to the TAs or Instructors with technical questions.
We
(the TAs and professors) are happy to answer
questions
during office hours and on the newsgroup.However,
office hours and email are not intended as a replacement for lecture.
As a
result, we will only see people during office hours or respond to your
newsgroup questions if
you regularly attend class. Due to our own work schedules, we may not
respond
to electronic questions instantly.However,
we will
try to respond to your email by the next regularly scheduled office
hour after
you send it. If you cannot make it to scheduled office hours,
feel free to make an appointment by e-mail or after class.