CS 4375: Theory of Operating Systems
Quick links:
Course description,
Course objectives,
Text & Email ,
Labs,
Exams,
TA,
Instructor,
Outline,
Lecture notes,
policy.
Most students enjoy this course because it exposes so much of the
"magic" of how programs are
managed on modern computer systems. For example, a student enrolled
in Theory of Operating Systems will learn
- the mechanisms that permit multiple programs to effectively share
a single computer
- how programs are started, and how they communicate with each other
- how input/output (such as
sound/video/mice/files/windows/networks) are implemented
These functions of a modern operating system are all based on
the application of a few fundamental concepts. This course teaches
these key concepts and "makes them real" by engaging students in the
creation of small programs that implement their key functionalties.
Operating systems design is an exciting area of computer systems that
ties togther architecture, language, and real-world constraints. Many
solutions to the problem of managing a systems explored in this course
involve interesting tradeoffs between flexibility, performance, and
reliability. In order that students gain a mature appreciation of
these trade-offs, this course is conducted in a very interactive
manner. Students are encouraged to dialoge
with each other and the professor to discuss the implications of
design options. An email list facilitates
student/instructor
interaction outside of class.
Since the design of operating systems requires a very practical understanding of computer
architecture, algorithms, and software design, most students
are not prepared for this course before their senior year.
Few programming languages are as well suited to the implementation of
operating systems as "C". For this reason, most labs for this course
must be written in C. Students with little experience in C are
strongly encouraged to review it (some resorce links
are listed below).
Students enrolled in this course will:
- email: efreudenthal at utep.edu
- phone: 915 747 6954
- Office Hours: See my homepage
Students enrolled in this course will:
- Class notes
- Coarse-grained topic outline
- Introduction
- What is an operating system?
- History
- Operating systems for various devices
- Review of computer architecture
- Summary of OS concepts
- System Calls
- Operating System Structure
- Processes and Threads
- Processes
- Threads
- Interprocess communication
- Classical problems
- Scheduling
- Synchronization (mostly deadlock prevention)
- Resources
- Deadlock (another reason why ostriches do not dominate the planet)
- Detection of deadlock
- Stopping systems from entering deadlock (avoidance)
- Designing systems that can not deadlock (prevention)
- Memory Management
- Single address space (both mono- and multiprogramming)
- better nomenclature than book
- virtual memory
- demand v. voluntary systems
- paged v. segmented systems
- Managing paged systems
- exposes a eviction (replacement) problem
- program behavior (locality)
- algorithms
- implementation
- simulation
- Managing segmented systems
- exposes both a placement & eviction problem
- Input/Output
- characteristics of i/o devices
- how to structure drivers
- disks
- terminals, graphical devices
- networked terminals
- power mgmt
- File Systems
- files
- directories
- implementation
- special files (/dev, links, /proc)
- example filesystems
- Multimedia
- File encoding
- processor scheduling issues
- disk scheduling issues
- storage, caching, and transmission issues
- Multiprocessor Systems
- Security
Labs must represent individual work and will contribute heavily
to your final grade. Our TAs are very effective at detecting
plagiarism, which will be reported to the Dean of Students (see
section on academic honesty below).
Students are encouraged to discuss requirements of lab
assignments, and are encouraged to share evaluation test sets.
However, students should prepare their implementations without
detailed knowledge of each others' implementations.
Under normal circumstances, labs must be submitted as tarballs
(see "man tar")
and mailed to the TA (Ryan Spring:
rcspring@utep.edu).
- Assignments (exact due dates announced in class and subsequently
updated here)
- Reference material:
- Lab grades: Your labs must satisfy assignment guidelines
and produce output as specified in the assignment.
Programming assignments are
graded on the following criteria
- Correctness: Your submission should include a test suite to
demonstrate that it functions correctly. Furthermore, the TA may
test your lab using other input.
- Documentation and programming style: Your code should be
documented and written in a
professional, consistent, understandable style.
Every assignment should include a "README" document or web
hierarchy that the TA can easily use to determine
- How to compile & run your program
- The general structure and any non-obvious aspects of your
program.
- The testing strategy utilized for your program
- Any deficits in your program (you will lose less credit if a
problem is documented than if it is discovered by a TA.
- Late policy:
- Labs submitted within 1 week of their deadline will suffer a 25%
credit reduction.
- Labs submitted after this first week will will suffer a 50% credit
reduction.
- Unless special arrangements are made, labs will not be accepted
more than two weeks late.
- Grading rubric (general):
- 4 point scale:
- 0: irrelevant work
- 1: a tiny bit of understanding demonstrated
- 2: good try, shows some understanding, but result is weak
- 3: mostly right
- 4: perfect
- 5: spectacular, extraordinary, shows professionalism well
beyond what is expected. (demonstration of strong performance harms nobody else's grade)
- separate scores for
- following instructions properly (submitted properly, solved
correct problem, used proper tools)
- functions correctly (programmed correctly)
- appropriate algorithm
- well documented, readable, easy to use
Be sure to schedule sufficient time for cleaning up
your code, testing, and the writing of documentation.
Assignments written in an unprofessional style or lacking clear and
useful documentation will suffer severe grading penalties.
Students with weak written communication skills may wish to contact
the UTEP Teaching & Learning center.
Accommodations for Students with Disabilities and Exceptional Circumstances
Individuals with disabilities have the right to equal access and
opportunity. Please contact Dr. Freudenthal or the
UTEP Office of Disabled Student Services (DSSO)
if you have a special circumstance such that an
accommodation would be helpful in permitting you to excel or
demonstrate mastery of the material covered in this course.
Standards of Conduct and Academic Honesty
- Standards of Conduct:
Students are expected to conduct
themselves in a professional and
courteous manner, as prescribed by the Standards of Conduct:
http://hoop.utep.edu/Student_Affairs_Chapter_One-HOP.htm
Graded work should be unmistakably
your own. You may not transcribe or copy a solution taken from
another person, book, or other source ( e.g., a web page).
Copying other's work will
not be tolerated. Professors are required to report
academic dishonesty and any other
violation of the Standards of Conduct to the Dean of Students.
- Permitted collaboration:
Students may discuss requirements, background information, test sets,
and the output of their programs. However, implementations and
documentation must be prepared individually.
- If academic dishonesty is suspected:
You will
receive an incomplete for the lab, and
your case will be referred to the Dean of Students for
adjudication. The Dean of Students has published a website with
complete details concerning the
UTEP Academic Honesty policy at the following arcane URL:
http://studentaffairs.utep.edu/Default.aspx?tabid=4386.
Course Grading Policy
Overall course grading: Grades will be determined from
All assignments are graded on a four-point scale as follows:
Lab & exam grades have a large influence on final grade (typically
40% lab, 60% exams, where the exam component is max(final, 0.6*final +
0.4*midterm)).
Good performance on quizzes and strong class participation can
potentially raise a grade by 0.3.
Class participation: This is a senior-level course, and credit
is derived from professionalism exhibited
by the questions asked and answers provided by students.
"Professional quality" statements are concise, unambiguous, and correctly use
technical terminology. Note that professionals who understand a
lecture can provide answers to questions, and those who are having trouble
following a lecture clearly indicate when
and how they are confused. Thus, lack of interaction is assumed to
indicate disengagement or a lack of understanding. Therefore, it is
essential that each
student interact verbally in class or in writing using the course
email list at least once each week. In addition, class participation
credit will be awarded to students whose assistance to others, in
manners consistent with class policy, is documented by properly filed
assistance reports.
Expectations of UG/Grad Students
Both graduate and
undergraduate students will may attend this course. Graduate students
are expected to demonstrate a higher level of technical competency,
analytical maturity, and communication skills than undergraduates as
demonstrated by (1) class participation, (2) exams and (3) lab
assignments. Some laboratory assignments will have advanced sections
that only graduate students will be required to submit. Finally, the
official course outcomes specify a
range of mastery levels of the topics covered in this course that must
be demonstrated by students in order to earn high marks. In order to
be assigned
similarly high marks, MS candidates are expected to demonstrate higher
levels of mastery.
Playing with VMware
Follow this link.