- Credits:
3.0
- Class
hours: Tuesday & Thursday, 9:30 - 10:45pm, SEM 261
- Call
numbers:
- CS
446: #31171 (max. enrollment 35)
- CS
646: #31173 (max. enrollment 10)
The principles, components, and design of modern operating systems,
focusing on the UNIX platform. Topics include: concurrent processes,
inter-process communication, processor management, virtual and real memory
management, deadlock, file systems, disk management, performance issues, case
studies, etc.
- Data
Structures (CS 302)
- Microprocessor
System Design (CPE 301)
- C/C++
or Java programming experience in UNIX-like environment
- Required
Textbooks
- Recommended
Textbooks
This is a tentative list of topics, subject to modification and
reorganization.
- Introduction
to Operating Systems
- Role
of an O/S
- O/S
History and Features
- Types
of O/S
- Major
O/S Components
- System
Calls
- O/S
Software Architecture
- Examples
of O/S
- Processes
& Threads
- Process
Description & Control
- Process
Scheduling
- Threads
- Multithreading
Models
- Thread
Libraries
- Concurrency
& Synchronization
- The
Critical-Section Problem
- Synchronization
Hardware
- Semaphores
- Deadlock
& Starvation
- Deadlock
Prevention
- Deadlock
Avoidance
- Deadlock
Detection
- Memory
Management
- Partitioning
- Paging
- Segmentation
- Virtual
Memory
- Page
Replacement
- CPU
Scheduling
- Scheduling
Algorithms
- Performance
Evaluation
- Multiprocessor
Scheduling
- Thread
Scheduling
- Real-Time
Scheduling
- Input/Output
- I/O
Devices
- I/O
Software
- Disk
Scheduling
- Disk
Caching
- Examples
of I/O
- File
System
- File
Description
- File
Directories
- File
Storage Implementation
- Examples
of File Systems
- Networking
& Distributed Systems
- Distributed
vs. Centralized Systems
- Types
of Networks
- Protocols
- Routing
- WebCT Except this web page, all course
materials will be posted at the WebCT.
- Lab
Assignments There will be three lab assignments
involving quite a bit of programming in UNIX environment. These lab
assignments can be considered "mini-projects" with the same
topic for everyone. They will require turning in code that compiles and
runs properly and sometimes a report documenting this program
(specifications, implementation, user manual, etc.). Note that knowledge
of C/C++ or Java in UNIX environment is required for these assignments.
- Quizzes
There will be in-class quizzes approximately one in every three weeks.
Exact date for some of these quizzes will not be exposed beforehand.
These quizzes will be open book/notes and extremely time-constrained,
i.e., 15-30mins. Questions in these quizzes will be designed to give you
an opportunity to test and affirm your knowledge of the course content.
- Activities
There will be three in-class activities. There will be a quiz associated
with each of these activities. The activities will require participation
from every student.
- Homework
There will be homework assignments approximately one in every three
weeks.
- Late
policy Late assignments will be penalized according to
the sliding scale below.
- Exams There will be one
midterm exam and one final exam (see Schedule
for tentative dates). All exams will be open book/notes.
- Academic
Integrity There will be no team projects or reports in
this class, therefore all assignments and exams must be prepared
strictly individually.
Any form of cheating such as plagiarism or ghostwriting will incur a
severe penalty, usually failure in the course. Please refer to the UNR policy on Academic
Standards.
- Disability
Statement If you have a disability for which you will
need to request accommodations, please contact the instructor or someone
at the Disability Resource Center (Thompson Student Services - 107) as
soon as possible.
Both grading policy and scale are subject to change. Failure in either the programming (i.e., lab
assignments) or the tests (i.e., quizzes
+ homework + midterm exam + final exam) will result in failure in the course.
• Grading Policy
Lab Assignments
|
30%
|
Quizzes
|
10%
|
Homework
|
10%
|
Midterm Exam
|
25%
|
Final Exam
|
25%
|
|
• Late Assignment Policy
less than 1 day late
|
25% deducted
|
between 1 and 2 days late
|
50% deducted
|
between 2 and 3 days late
|
75% deducted
|
over 3 days late
|
100% deducted
|
|
• Grading Scale (Tentative)
90% - 100%
|
A-, A
|
80% - 89%
|
B-, B, B+
|
65% - 79%
|
C-, C, C+
|
55% - 64%
|
D
|
0% - 54%
|
F
|
|
Note: Saturdays and Sundays do not count toward missed days. For
example, there is 1 "day" between Friday, 2pm and Monday, 2pm.
Similarly, there is 1 day between Monday, 2pm and
Tuesday, 2pm.
Important
Note: Re-grading requests can only be made within the first week
after the graded assignments/tests are returned to the students.
This is a tentative schedule including the exam dates. It is subject to
readjustment depending on the time we actually spend in class covering the
topics. Slides presented in class and assignments will be posted at the WebCT. See the acknowledgment for the course materials. Permanent
reading assignment: it is assumed that you are familiar with
the contents of the slides of all past
meetings.
Date
|
Lectures
|
Assignments & Notes
|
Tue, Jan 19
|
Lecture #1: Introduction (1) - Role of an O/S
|
• Read Silberschatz et al.,
Ch. 1.1-1.2
|
Thu, Jan 21
|
Lecture #2: Introduction (2) - O/S Types,
Components & Architecture
|
• Read Silberschatz et al.,
Ch. 1.3-1.10, 2.1-2.8
• Read Molay, Ch. 1
|
Tue, Jan 26
|
Lecture #3: Introduction (3) - O/S History &
Features
|
• Read Silberschatz et al.,
Ch. 1.11-1.13
|
Thu, Jan 28
|
Lecture #4: Processes & Threads (1)
|
• Read Silberschatz et al.,
Ch. 3.1-3.3
|
Tue, Feb 2
|
Lecture #5: Processes & Threads (2)
|
• Read Silberschatz et al.,
Ch. 4.1-4.4
|
Thu, Feb 4
|
Lecture #6: Processes & Threads (3)
|
•
Lab Assignment 1 out
|
Tue, Feb 9
|
Review of Processes & Threads
|
•
Homework 1 out
|
Thu, Feb 11
|
Activity 1
|
|
Tue, Feb 16
|
Lecture #7: Concurrency & Synchronization (1)
|
• Read Silberschatz et al.,
Ch. 6.1-6.2
|
Thu, Feb 18
|
Lecture #8: Concurrency & Synchronization (2)
|
• Read Silberschatz et al.,
Ch. 6.3
•
Homework 1 due
|
Tue, Feb 23
|
Lecture #9: Concurrency & Synchronization (3)
|
• Read Silberschatz et al.,
Ch. 6.4-6.6
•
Lab Assignment 1 due
|
Thu, Feb 25
|
Lecture #10: Deadlocks (1)
|
• Read Silberschatz et al.,
Ch. 7.1-7.3
•
Homework 2 out
•
Lab Assignment 2 out
|
Tue, Mar 2
|
Lecture #11: Deadlocks (2)
|
• Read Silberschatz et al.,
Ch. 7.4-7.6
|
Thu, Mar 4
|
Activity 2
|
•
Homework 2 due
|
Tue, Mar 9
|
Lecture #12: Memory Management (1)
|
• Read Silberschatz et al.,
Ch. 8.1-8.3
|
Thu, Mar 11
|
Midterm Exam (in-class)
|
|
Tue,
Mar 16
|
Spring
Break – NO CLASSES
|
|
Thu,
Mar 18
|
Spring
Break – NO CLASSES
|
|
Tue, Mar 23
|
Lecture #13: Memory Management (2)
|
• Read Silberschatz et al.,
Ch. 8.4, 8.6
|
Thu, Mar 25
|
Lecture #14: Memory Management (3)
|
• Read Silberschatz et al.,
Ch. 8.5, 9.1-9.3
•
Homework 3 out
|
Tue, Mar 30
|
Lecture #15: Memory Management (4)
|
• Read Silberschatz et al.,
Ch. 9.4-9.6
|
Thu, Apr 1
|
Lecture #16: Memory Management (5)
|
•
Lab Assignment 2 due
|
Tue, Apr 6
|
Lecture #17: CPU Scheduling (1)
|
• Read Silberschatz et al.,
Ch. 5.1, 5.2
•
Lab Assignment 3 out
|
Thu, Apr 8
|
Lecture #18: CPU Scheduling (2)
|
• Read Silberschatz et al.,
Ch. 5.3
•
Homework 3 due
•
Homework 4 out
|
Tue, Apr 13
|
Lecture #19: CPU Scheduling (3)
|
|
Thu, Apr 15
|
Lecture #20: Input/Output (1)
|
• Read Silberschatz et al.,
Ch. 13.1-13.5
|
Tue, Apr 20
|
Lecture #21: Input/Output (2)
|
• Read Silberschatz et al.,
Ch. 12.1, 12.2, 12.4, 12.5
• Homework 4 due
|
Thu, Apr 22
|
Lecture #22: File System (1)
|
•
Homework 5 out
|
Tue, Apr 27
|
Lecture #23: File System (2)
|
|
Thu, Apr 29
|
Lecture #24: Networking & Distributed Systems
|
|
Tue, May 4
|
Review
|
• Lab
Assignment 3 due
• Homework 5 due
|
Fri, May 7 (7:30am)
|
Final Exam (in-class, at noon)
|
|
The slides and other materials for this course are in-part based upon the materials
from a number of people/sources, including:
·
Official website for the Stallings text: companion site
·
Official website for the Silberschatz
text: companion
site
·
René
Doursat from UNR http://www.cse.unr.edu/~doursat/teaching_unr_cs446_s06.html
·
Ben Y. Zhao from UCSB: http://www.cs.ucsb.edu/~ravenben/classes/cs170
·
Sushil Louis from
UNR: http://www.cse.unr.edu/~sushil/class/os/index.html
ABET
Criterion 3 Outcomes
|
Course
Outcomes
|
Assessment
Methods/Metrics
|
a, b, c, j
|
Knowledge of the fundamental components of an operating system.
|
·
Define and explain the followings in written assignments and exams:
o
the origins and challenges of
automated system operation,
o
strategies and components of modern
operating systems, and
o
various tradeoffs between resource
management techniques.
·
Design and implement the resource management tasks undertaken by an
operating system in programming assignments.
|
a, b, c, i
|
Knowledge of system
programming techniques as well as the ability to use related system calls.
|
·
Use system calls and system programming techniques in program
assignments.
·
Define and explain design and implementation issues of operating
system software components in written assignments and exams.
|
a, b, c
|
Ability to quantitatively evaluate different software implementation
techniques.
|
·
Solve and model quantitative performance evaluation methods of an
operating system in written assignments and exams.
·
Model and simulate of resource allocation and scheduling algorithms
of an operating system in programming assignments.
|
ABET
Criterion 3 Outcomes:
a)
an ability to apply
knowledge of computing and mathematics appropriate to the discipline
b)
an ability to analyze a
problem, and identify and define the computing requirements appropriate to
its solution
c)
an ability to design,
implement, and evaluate a computer-based system, process, component, or
program to meet desired needs
d)
an ability to function
effectively on teams to accomplish a common goal
e)
an understanding of
professional, ethical, legal, security and social issues and responsibilities
f)
an ability to communicate
effectively with a range of audiences
g)
an ability to analyze the
local and global impact of computing on individuals, organizations, and
society
h)
recognition of the need for
and an ability to engage in continuing professional development
i)
an ability to use current
techniques, skills, and tools necessary for computing practice
j)
an ability to apply
mathematical foundations, algorithmic principles, and computer science theory
in the modeling and design of computer-based systems in a way that
demonstrates comprehension of the tradeoffs involved in design choices
k)
an ability to apply design and
development principles in the construction of software systems of varying
complexity
|