UTEP CS 4375: Theory of Operating Systems
(and sometimes EE 4374: Operating Systems Design)
Text & Email
Course outline and lecture notes
Most students enjoy this course because it exposes so much of the
"magic" of how programs and resources are
managed on modern computer systems.
More precisely the learning outcomes of this course enable students describe and analyze
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 functionalities.
- mechanisms and policies that enable the efficient illusion of concurrent execution of multiple programs upon one (or more) CPUs
- mechanisms and policies that enable a "virtual" address spaces that may be larger than allocated memory
- security mechanisms and policies that protect processes from unauthorized access to their memory or files
- data structures and algorithms used to organize persistant storage
- how resources such as cpu time, memory, and persistent storage are managed and allocated
- challenges in concurrency and approaches to avoiding race conditions and deadlock
- the role of device drivers in providing generic programming interfaces to i/o devices
- the intertwined role of interrupts, traps, paged and segmented memory translation, and supervisor mode in enabling multi-tasking, isolation, system calls, access to i/o devices, and timers
- coarse estimations of access time to persistent storage devices
The course includes frequent quizzes, a super-quiz (that serves as a midterm) and a final exam. All grading is explicitly mapped to course learning outcomes, which are generally assigned boolean scores indicating whether the students' work indicates an appropriate level of mastery. In order to appropriately assign credit for skill mastery in the context of clerical errors, "clerical accuracy" is also included as an additional skill that is graded on all test instruments. In order to enable the computation of a final grade largely dependent upon a comprehensive final to not be overly sensitive to errors caused by student stress, test and quiz grades are aggregated on a skill basis - which permits skills demonstrated in multiple (prior) quizzes to over-ride corresponding skills that may not be demonstrated on the final exam.
Operating systems design is an exciting area of computer systems that
ties together architecture, language, and real-world constraints. Many
solutions to the problem of managing a systems explored in this course
involve interesting trade-offs 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 dialog
with each other and the professor to discuss the implications of
design options. An email list facilitates
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 superficial understandings of the C language will struggle in this course and I strongly encourage all students attending CS4375 to carefully review "The C
Programming Language" by Brian Kernigham and Dennis Ritchie.
Students enrolled in this course will:
- Learn the role of operating systems.
- Learn the theory underlying how operating systems are
implementer and the implications of resulting design choices.
- Develop practical skills needed to understand and modify
operating system code, feel competent to do so, and understand
why it matters
- Acquire sufficient knowledge to be able to solve problems & know how
to learn additional relevant info when needed.
- email: efreudenthal at utep.edu
- phone: 915 747 6954
- Office Hours: See my homepage
- TAs will be present for the first 10 minutes of their office hours and depart if nobody is present or expected.
- If you need to meet a TA at a particular time, please send them email.
- Lecture notes
- Coarse-grained topic outline
- What is an operating system?
- Operating systems for various devices
- Review of computer architecture
- Summary of OS concepts
- System Calls
- Operating System Structure
- Processes and Threads
- Inter-process communication
- Classical problems
- Synchronization (mostly deadlock prevention)
- 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)
- Managing segmented systems
- exposes both a placement & eviction problem
- characteristics of i/o devices
- how to structure drivers
- terminals, graphical devices
- networked terminals
- power mgmt
- File Systems
- special files (/dev, links, /proc)
- example filesystems
- File encoding
- processor scheduling issues
- disk scheduling issues
- storage, caching, and transmission issues
- Multiprocessor Systems
- Midterms: at least one, date to be determined.
- Final: as specified by university guidelines
- Quiz: About once each week.
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.
- Lab assignments and their due dates are listed on this web page: Labs.
- Submitting lab assignments
- Assignments are to be submitted using subversion. See https://sites.google.com/site/theoryofoperatingsystems/labs.
- 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
- 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
reduction of one letter grade. (e.g A lab that would otherwise be
graded as a "B" will instead earn a "C".
- Labs may be re-submitted for re-grading one week after grades
are released. Up to one half of credit lost on previous submission
can be recovered.
- Re-submissions should be made as changes committed to the same
directory in subversion as the initial submission.
- Students are not
required to ever resubmit.
- Students must explicitly request
re-grading after re-submission by sending email to the TA prior to
the due date corresponding to their submission. If a
student does not notify the TA, they are at risk of it not being graded.
- Late assignments will be considered to be re-submissions.
- No re-submissions are accepted more than one week after initial
announcement of grades.
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:
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, solution strategies, and the output of their programs. However, implementations and
documentation must be prepared individually.
Students are strongly encouraged to document advice received from others and all other resources utilized in the preparation of their assignments.
- If academic dishonesty is suspected:
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:
Course Grading Policy
Overall course grading: It's posted on this web page: Exams and Grading
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
similarly high marks, MS candidates are expected to demonstrate higher
levels of mastery.
Cygwin (UNIX-like environment for Win-32)
The Cygwin tools provide a nice set of Posix tools for windows and
vista. Configuration instructions are posted on the
Xming and Cygwin page of the web site for CS3432.
Started in Linux/UNIX and SVN
Linux under virtualization
This is another way to run linux - just pickup a virtualization system
such as vmware, configure a virtual machine, and instal linux onto it.