Web Page:
www.cs.pdx.edu/~harry
Short Bio:
Click Here
Office space at PSU: Fourth Ave Bldg, room 120-13
Office hours: Tuesday and Thursday, 4:00-5:00 PM
Office phone: 503-725-9815 (No messages; only answered when I'm in)
Grader: Isaac Kasukonis
E-Mail: ijk3@pdx.edu
Office Hours: ??? (@ fishbowl)
Catalog Description:
Introduction to the principles of operating systems and concurrent programming.
Operating system services, file systems, resource management, synchronization.
The concept of a process; process cooperation and interference.
Introduction to networks, and protection and security.
Examples drawn from one or more modern operating systems.
Programming projects, including concurrent programming.
Major Topics Covered in the Course:
Processes, inter-process communication, concurrent programming, scheduling, memory management, file systems, synchronization, device management, introductions to protection & security and to networking.
When and Where:
Tuesday & Thursday, 2:00PM - 3:50PM
Academic and Student Recreation Center (ASRC), room 215
First Class: Tuesday, September 30, 2014
Holiday: Veteran's Day, Tuesday, November 11, 2014 -- No class
Holiday: Thanksgiving, Thursday, November 27, 2014 -- No class
Mid-Term Exam #1: October 23, 2014 (tentative)
Mid-Term Exam #2: November 18, 2014 (tentative)
Final Exam: Monday, December 8, 2014, 10:15AM - 12:05PM
The final will be comprehensive. It will be closed book and closed notes.
Required Textbook:
[photo from Amazon.com]
Modern Operating Systems (fourth edition),
Andrew S. Tanenbaum, Herbert Bos, Prentice Hall Publishers, 2014,
ISBN-10: 013359162X,
ISBN-13: 978-0133591620.
The textbook will be available through the PSU Bookstore. Amazon carries this book for $135.00 (new) or $142.65? (used).
(Amazon Page)
Supplemental Reference Material:
The BLITZ System,
Harry Porter, approx. 241 pages, September 18, 2007.
This packet documents the BLITZ software we'll be using in this
course. It may be purchased for approx $xxxxx at CleanCopy, located on 1510 SW 6th Ave; 503-221-1876.
(This material
is also available online and you can print it yourself, instead of purchasing it...
What's in the packet)
Course Outline
Week 1: (Chapter 1: Introduction)
History
Types of Operating Systems
Overview of Hardware
Fundamental Concepts
Processes, Threads, Deadlock
Memory Management, Virtual Memory
I/O and File Systems
Shell Programs
System Calls
Week 2,3: (Chapter 2: Processes and Threads)
The Process
States (ready, running, blocked)
Implementation
The Thread
User-level thread packages
Interprocess Communication
Mutual Exclusion, Critical Regions
Semaphores
Monitors
Dining Philosophers, Producer/Consumer, etc.
Scheduling Algorithms
Week 4: (Chapter 3: Deadlocks)
Resource Contention
Deadlock Detection
Deadlock Avoidance
Deadlock Prevention
Starvation
Two-phase locking
Exam #1 (end of week 4)
Week 5,6: (Chapter 4: Memory Management)
Multiprogramming
Swapping
Virtual Memory, Paging, Page Tables
Page Replacement Algorithms
Segmentation
Issues
Week 7,8: (Chapter 5: Input/Output)
Device Controllers
Memory-Mapped I/O
Direct Memory Access
Interrupt Handlers
Device Drivers
Disks
Clocks
Character I/O
GUIs
Power Managements
Exam #2 (end of week 7)
Week 9,10: (Chapter 6: File Systems)
Files (attributes, operations)
Directories
Hierarchical Systems
Implementation
Reliability, Performance
Log-based Systems
Prerequisites:
The official course prerequisites are:
CS 200: Computer Systems Programming I
CS 201: Computer Systems Programming II
CS 311: Computational Structures
Students should have previous familiarity with
programming in a high-level object-oriented language (such as C++ or Java);
assembly language programming; CPU organization, instruction sets, registers; program development in the Unix environment (edit, compile, link, load, execute, makefile, using the shell); the Unix system call interface; basic data structures (lists, trees, graphs);
object-oriented concepts (class, object, method).
CS 311 (Computational Structures) is also listed as a prerequisite. The material in
311 is not closely related to this class.
It is the student's responsibility to ensure that he/she has the
appropriate background before attempting this class.
To complete the projects, students need to know the basics of Unix/Linux. They need to be familiar with commands like ls, mkdir, cd, pwd, cp, mv, rm, cat, less, man, make, and how to edit text files. Here is a link to a good tutorial:
www.ee.surrey.ac.uk/Teaching/Unix/index.html.
Homework Assignments:
There will be approximately 5 homework assignments, of two weeks each. Due dates are (tentatively):
HW 1: End of 2nd week
HW 2: End of 4th week
HW 3: End of 6th week
HW 4: End of 8th week
HW 5: End of 10th week
Homeworks are due at the beginning of class. Late homeworks will not be accepted without prior approval.
Attendance:
Attendance in class is mandatory. Successful students will arrive on-time, relaxed and full of curiosity.
Attendance will be checked regularly and will count for part of your grade.
Regarding Due Date and Time:
Please bring your project and homework submissions to class.
All assignments are due at the beginning of class, and not one second later!
I will collect submissions before lecture and I will not accept submissions after
I begin class.
The reason I am such a stickler about this is that I do not want students to miss
lectures because they are trying to finish up a project or homework.
Plan ahead; all due times are "hard."
I will make extensions to deadlines in the case of medical emergencies
and business travel if you contact me ahead of time.
Working Together:
I encourage students to discuss the material in this class.
Feel free to discuss the programming projects amongst yourselves.
However, the programming project is not a group project.
You must create the code on your own!
It is okay to look at someone else's code for the purposes of helping that person or for comparing your different approaches, but each student must do the coding alone. You must type in every line of code you submit. You must not copy another student's code. Do not look at some one else's code, then turn around and type that code in. You must create your code on your own.
It will be considered cheating to copy code.
Grading:
The exams may test on material covered only in class and on material
covered only in the reading assignments.
Your grade will be based approximately, as follows.
These percentages are tentative and subject to change.
10% - Homeworks
25% - Projects
15% - Midterm Exam #1
15% - Midterm Exam #2
30% - Final
5% - Attendance
Incompletes will not be given.
My grading procedures and point system are discussed
here.
MailMan Mailing List: PorterClassList2
A "MailMan" e-mailing list will be maintained for this class.
From time to time I may post notices about the class and hints/comments
about assignments. Students are encouraged to send mail to the list, too.
All students should
subscribe to this list. Go to the following web page and
enter your email address and a password and click "subscribe".
https://mailhost.cecs.pdx.edu/mailman/listinfo/porterclasslist2/
The MailMan program will email you a confirmation message. You must reply, but you can simply hit your email "reply" button. After being adding to the mailing
list you will get a "welcome" message from me.
NOTE: I am teaching another class with an almost identical mailing list name.
CS-333 uses "PorterClassList2" and CS-201 uses "PorterClassList". Please use the correct list name!
To post a message to all the list members, send email to:
PorterClassList2@mailhost.cecs.pdx.edu
For additional documentation, see
staff.imsa.edu/~ckolar/mailman/mailman-userguide-0.1.pdf (pdf, 159 kb)
(By the way, if Internet Explorer does not work with MailMan on the Mac, use the "Safari" web browser instead.)
Using "FTP" to Obtain Class Files:
You may wish to use an "ftp" program to transfer class files
from my directory (the "remote") to your computer (the "local").
If you want to use the standard UNIX ftp program, type the following command:
ftp ftp.cs.pdx.edu
Then, login using the name
anonymous
You'll be asked to provide your email address as a password.
Then, change to my directory. For example, to get to the directory
containing the files for project 1, at the "ftp>" prompt type:
cd /pub/users/harry/Blitz/OSProject/p1
To list all the files in the remote directory, type:
ls
To copy the files without translating NL to CR-NL (which can be a problem with Windows machines), type
binary
To copy all files from the remote directory into the current directory on your local machine, type
mget *
Other useful FTP commands are
get <filename>, help, quit, pwd
To suppress verbose interaction, answer "a" to the "mget filename [anpqy?]?" prompt, if it appears.
For further info, in UNIX type:
man ftp
Hints on how to study effectively:
Here is a document I wrote, which you may find useful or interesting:
Professor Porter's Study Tips
Snow Closure:
For inclement weather information, call the University switchboard, 725-3000,
for a recorded message about university-wide class cancellation.
Snow closure info is also available at:
www.flashnews.net/pdx.html (click on "View Current Info").
Other Cancellations:
If I should need to cancel class for any reason, I will email the class mailing list.
Problems / Comments on This Web Page