COSI 131a: Fall 2022
Operating Systems
Course Objectives and Outcomes
This course is an introduction to computer systems organization
and operating systems. The objectives of the course are for you
to learn three things:
-
The first thing is how operating systems and, more generally,
computers work. The goal is to demystify the interactions
between the software you have written in other courses and
hardware. A student graduating with a CS degree should be able
to describe the chain of computer system events that occurs from
when a user hits the reboot button to when user's program runs,
reading input and displaying results, from the register level to
operating system level to the application level. This is
philosophically important, but it is also of practical interest
to developers who need to figure out how to make a system do
what they want it to do.
-
The second thing is for you to learn the core ideas in operating
systems: resource sharing, virtualization, memory
protection, scheduling, concurrent programming, file systems,
transactions, etc. Such ideas are often best explained as
abstractions that some software layer (usually the operating
system) provides above imperfect hardware to make that hardware
usable by programmers and users. The intent is for you to
understand such abstractions well enough to be able to
synthesize new abstractions when faced with new problems.
-
Many of the ideas and abstractions that we will cover are
relevant not only to OS kernels but also to many large-scale
systems. Thus, a third goal of this course is to enhance your
ability to understand, design, and implement such systems.
Method:
-
Lectures and reading assignments from the textbook will cover the
concepts and techniques.
-
Homework problem sets will test and improve your knowledge of the
material. The intent is for you to use these as mini exams to
self-assess your knowledge of the course material and evaluate your
performance.
-
Perhaps the most valuable part of this class will be the
programming assignments. They will require you to apply in
practice the concepts covered in the lectures and will require
you to defend your design decisions. You will gain experience
with implementing in Java advanced synchronization and file
systems algorithms. The projects will be done individually or in
two-person teams, providing collaborative project experience.
-
There will be three in-class quizes testing the mastery of
the material covered in the course. Unless stated otherwise,
the quizes will be closed book and will
cover material from lectures, readings, problem sets, and the
projects.
-
As with most technical courses, besides ability and motivation,
it takes time to learn and master the subject. Expect to spend an
additional 15 hours a week outside of class time on the
average.
Topics Covered
Introduction: OS organization, Modularity, Protection. Machine
organization: CPU, Memory, Devices, Interconnect. Hardware abstraction layer,
Assembly Language. CPU abstractions: Processes, Address spaces,
Threads. I/O Concurrency. Performance metrics. Scheduling Policies.
Concurrency and Synchronization: Race conditions, Critical Section, Mutual
Exclusion, Locks, Monitor synchronization. Multicore synchronization
performance. Deadlock. Memory management: Logical and Physical
addressing, Address translation, TLB, Virtual Memory, Demand paged virtual
memory, Page Replacement Policies. Persistence: Anatomy of devices,
Performance metrics. File Systems and Disk Management, Naming, Data vs Metadata,
Crash Consistency and Recovery, Atomicity, Careful Ordering, COW, Journaling,
Transactions.
Schedule, Lecture Notes and Assignments
Please see
LATTE.
Logistics
- Where
- Lectures: Gerstenzang 121
- When
- Tuesday and Thursday 2:20-3:40pm
- Where
- Announced Recitations: Rosenstiel 118
- When
- Monday 10:00-11:30am
Professor
Prof. Liuba Shrira
- Office
- Volen 258
- Email
-
liuba@cs.brandeis.edu
- Office Hours
- Thursday 4:00-5:00pm or by appointment
Course Requirements
Assignments
There will be four problem sets (i.e., written
assignments) and three programming
assignments. Both problem sets and programming assignments will be
announced in class and posted on
LATTE (Brandeis'
online courseware). You will also
use LATTE
to submit your assignments.
You can find instructions on how to pack and submit your programming assignments on LATTE.
Readings
-
Textbook: Operating System Concepts with Java (10th Ed) by
Avi Silberschatz, Peter Galvin, and Greg Gagne.
-
Texbook: Operating Systems: Principles and Practice (Second Edition) By Thomas Anderson and Michael Dahlin. ISBN 978-0-9856735-2-9.
-
Additional Readings will be assigned periodically and either
distributed in class or linked on this web page.
-
It is also recommended that you buy or borrow a text on
Java. For example, the classic reference is The Java
Programming Language by Ken Arnold and James Gosling. There
are also numerous online Java references, including:
Prerequisites
COSI 12b and 21a. You should have familiarity with Linux and
Java. All programming assignments will be written in Java and must
run on a Linux box (do not rely on the portability of Java!).
Evaluation
Exams
There will be three (alternatively, two) in-class quizes. There is no final exam.
Grading
Grades will be apportioned roughly as follows:
Category | Weight (%) |
Problem Sets | 10 |
Programming Assignments | 45 |
Quiz 1 | 15 |
Quiz 2 | 15 |
Quiz 3 | 15 |
Late Policy
Each student has 2 free late days which can be applied to any of the
assignments except PA3 and PS4.
The 2 days can be split between 2 assignments.
You will need to tell us if you plan to use your late days.
After the 2 late days are exhausted, each additional day
that an assignment is late will come with a significant grade penalty on that assignment.
Days Late | Penalty |
1 | 5% |
2 | 10% |
3+ | 10% + 10% each additional day |
7+ | No credit |
A "day" is defined as the 24-hour period following the
time that an assignment is due. Weekends do not count towards the
number of days late.
For example, once you have exausted your 2 free late days, and an assignment is due on a Tuesday at 11:55pm, and
you turn it in the following Monday before 11:55pm, it will be 4
days late (Wednesday + Thursday + Friday + Monday = 4), so the
late penalty will be to subtract 35% of the possible score from
your score.
Tutorials
There will be an introductory Tutorial/Review for each project. The tutorials
are not mandatory but
highly recommended. The date and
time of the tutorial will be announced in advance in the the lecture and also posted on LATTE close
to the tutorial date once the room is finalized.
Typically, the tutorials run either in Recitation or in the evening 7-9 pm and are recorded as a
back up for students who have a conflict and can not attend.
Students with Disabilities
If you are a student with a documented disability on record at
Brandeis University and wish to have a reasonable accommodation
made for you in this class, please see Prof. Shrira immediately.