CS-3013 Operating Systems

C-Term 2014

This web page is the official home page of CS-3013, the undergraduate course in computer operating systems at Worcester Polytechnic Institute.

This web site contains materials needed by students in the course, including lecture notes, programming assignments, supplementary data and materials, and reference papers. These pages are updated on a regular basis, and students are responsible for paying attention.

Some pages of this web site are protected and require users to log in with valid WPI user IDs and passwords. Such authentication is necessary to protect copyright material that is included under the fair use doctrine. Such materials are geenerally restricted to only members of the course.

Index

Introduction

Topics

Course Outcomes

Course Information

Office Hours

Testing, Grading, and Practical Matters

Testing

Reading Assignment (pre-term)

Essential Background

Grading

Academic Honesty

Late Policy

Reference Materials

Lecture notes and details of the project assignments are found at the following URLs. These require your WPI userID and password to access.

Lecture Notes

Project Assignments

Lecture Capture


Introduction

CS-3013 is intended for all students of the computational sciences — including traditional Computer Science, Robotics Engineering, Interactive Multimedia and Game Design, and Electrical and Computer Engineering. During the course, we will endeavor to introduce you to the fundamental concepts of computer operating systems and the kinds of things that you need to know about them, whether you intend to work inside of an operating system or not. A list of course outcomes can be found here:–

http://web.cs.wpi.edu/~cs3013/c14/Resources/Outcomes.htm

The course involves classroom lectures and project work. Both components are equally important. In particular, it is not possible to pass the course without a good faith attempt to complete the project assignments.

Project work for this course will include three projects to be undertaken by all students. After that, there are two alternatives:–

·         For students interested in a “heavy duty” software engineering approach, the major project of the term will be to develop a kernel message system inside the Linux kernel.

·         For students who envision themselves mostly as users of operating systems, one or more less intensive projects will be offered that require working with an operating system but not necessarily modifying its kernel.

CS-3013 is the place in the WPI computing science curriculum where we introduce the notion of concurrency — that is, the design of applications, programs, and systems that have many activities executing at the same time. The mastery of concurrency is rapidly becoming an essential skill for all computing professionals, at all levels, and in all of the areas in which the computational sciences apply. This course includes a serious amount of concurrent programming.

Another important concept to be introduced in this course is abstraction. The major abstractions provided by most modern operating systems are processes and threads, virtual memory, files, and sockets and connections. You probably have encountered these terms before, either in previous studies, your professional work, or your general computer literacy. However, it is likely that we will go into these topics in considerably more depth than you have previously done. For example, you may think you know what a process or a file is, but you will probably discover a lot more about them that you did not know.

A cross-cutting concept that is encountered in operating systems and other areas of computing science and technology is caching. Caching is what makes virtual memory work at all, what makes modern computers fast, and what makes distributed games playable. Few operating system textbooks address the concept at all, and fewer attempt a quantitative analysis of it. This course introduces a quantitative approach to understanding caching.

A typical undergraduate operating system course requires about 10-12 weeks, so not all of the essential material can be covered during this term. In particular, the study of the implementation of file systems is deferred to CS-4513, Distributed Systems, and the study of network interfaces and protocols is deferred to CS-3516, Computer Networks.

top

Topics

The following table lists topics of the course and corresponding chapters in the course textbook, Modern Operating Systems, 3rd edition, by Andrew S. Tanenbaum. The order of presentation of topics varies from term to term.

Topics

Text Chapters

Introduction, History, Overview

1

Concurrency — Processes, Threads, Synchronization,
Scheduling, etc.

2

Memory Management and Virtual Memory

3

Files and Persistent Storage

4

Input-Output Devices

5

top


Course Information

This course meets for two 2-hour classes per week for a seven-week undergraduate term (28 hours).

Time and Place: Tuesdays and Fridays, 8:00 AM — 9:50 AM, Fuller Labs 320, January 17 — March 4, 2014.  There will be short break about half-way through each class.

Lecture Capture: Lectures will be automatically recorded by the Academic Technology Center. The recordings will include the lecture slides, any annotations made on the slides from the podium, and the spoken voice of the lecturer. Students may subscribe to these lectures at the following URL:–

Lecture Capture

Professor: Hugh C. Lauer, Ph.D.
Email: <professor’s last name>@cs.wpi.edu
Office hours: TBD; and other times by appointment
Office: Fuller Labs, Room 144

Teaching Assistants:

Jia Wang <wangjia>:– TBD

Angel Trifonov <angelt>:– TBD

Office hours will be held in Fuller A22 or in the Zoo Lab next door

Textbooks:

1.      Andrew S. Tanenbaum, Modern Operating Systems. 3rd edition, Prentice Hall, 2008.

2.      Robert Love, Linux Kernel Development, 3rd edition, Addison-Wesley, 2010.

Note 1:– Earlier editions of Modern Operating Systems by Andrew Tanenbaum are not suitable for this course. Much has changed about operating systems since the 2nd edition was published in 2001.

Note 2:– Undergraduate students planning to take CS-4513 (Distributed Systems) in a future term should retain their copies of the Tanenbaum textbook. It will be directly relevant to the file system topics covered in that course.

Note 3:– The second edition of Linux Kernel Design, by Robert Love, published by Novell Press in 2005, may be used as a substitute for the 3rd edition in this course. However, the Linux kernel has evolved considerably since that 2nd edition was published, and students will be responsible for understanding the differences. An electronic version of the 2nd edition has been placed on reserve in the Gordon Library.

Class e-mail lists: The following list is in the domain cs.wpi.edu
cs3013-all  — to reach all students in CS-3013, the teaching assistants, and the professor
cs3013-staff — to reach just the professor and teaching assistants assigned to this course

Course web sites: The following URL points to the home page of the course web site for the course:–

http://web.cs.wpi.edu/~cs3013/c14/

All lecture notes, project assignments, reference documents, and other materials for this course are available on this site. Handouts that are missed in class may be retrieved here.

NOTE:– To comply with copyright laws, some portions of the course web site are password protected. To access them, please enter your WPI username and password when prompted.

Discussion Board: During this term, the mailing list CS-3013-all will be used as a discussion board. If you are bothered by the quantity of mail on this list, please set up a filter to capture it for later reading.

Absences: Students needing to be absent from class should notify the professor by e-mail or in person as soon as possible.

top

Office Hours and Schedules

Sunday

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

8:00

 

 

Class

 

 

Class

 

9:00

 

 

 

 

 

10:00

 

 

 

 

11:00

 

 

 

 

Noon

 

 

HCL

 

HCL

 

1:00

 

JW

AT

 

2:00

 

 

3:00

 

AT

 

JW

HCL 

 

4:00

 

 

 

5:00

 

 

 

 

 

 

6:00

 

 

 

 

 

 

 

                        HCL — Hugh C. Lauer
                        JW — Jia Wang
                        AT — Angel Trifonov

Testing, Grading, and Practical Matters

Testing

There will be no final exam in this course. Instead, there will be a short quiz each week. The dates of quizzes are:–

·         January 24

·         January 31

·         February 7

·         February 14

·         February 21

·         March 4

Each quiz will be approximately 20-25 minutes except the last one, which will be 50-60 minutes. All quizzes are cumulative, in the sense that any topic at any time in the course may be asked on any subsequent quiz.

Each quiz will be graded separately. In determining the final grade for the course, the quiz with the lowest score among the first five will be thrown out. This is intended to accommodate unexpected absences, illnesses, or “bad days.” If classes are canceled due to weather or other emergency on a quiz day, that quiz will be skipped and an alternative will be worked out.

The final quiz is required in order to pass the course; skipping the final quiz is equivalent to taking an NR for the course.

Quizzes will typically be handed out at the beginning of class. Students who finish quizzes early should remain quietly in their seats.

Reading Assignment (pre-term)

You are required to read and understand all of Chapter 1 of the Tanenbaum textbook by the end of the first week of the course. The quiz of Friday, January 24, will include the material of this chapter.

top

Essential Background

You should have some knowledge of computer organization and elementary data structures, and you need a strong programming background. Neither C++ nor Java can be used inside the Linux kernel, so programming projects within the kernel must be done in the C programming language.

Grading

Grades for the first seven weeks of this course will be assessed approximately as follows:–

·         Quizzes: (total ~45%)

·         Projects: (total ~45%)

·         Class Participation: (~10%)

Class participation is an essential part of the grade for the course. If you attend lectures but never say anything or never engage in class discussions and the class e-mail list, it may be enough to reduce your grade by one full letter or more.

Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a “B,” which indicates that the basic objectives on assignments and quizzes have been met. A grade of “A” will indicate significant achievement beyond the basic objectives and a grade of “C” will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless exceptional, extenuating circumstances exist.

If there are any circumstances that limit or restrict your participation in the class or the completion of assignments, please contact the professor as soon as possible so that we can work something out.

top

Academic Honesty

Unless explicitly noted, all work is to be done on an individual basis. Any violation of the WPI guidelines for academic honesty will result in no credit for the course and referral to the Corporate and Professional Education. More information can be found at

http://www.wpi.edu/Pubs/Policies/Honesty/policy.html

That being said, you are strongly encouraged to discuss with each other about ideas, course material, and especially the challenges you encounter in working with the Linux kernel.

Late Policy

Unless you have contacted the professor prior to the day on which it is due, late submissions will be penalized 10% of total assignment value for the first day or partial day, and an additional 15% for the second day or partial day. No assignment will be accepted after the second late day. All assignments are due at the time indicated on the assignment. Projects must be submitted as directed in class.

Although this policy may seem stringent, the professor is usually willing to make exceptions to students to address specific circumstances, provided that they contact him well before the assignment is due!

However, no late assignments will be accepted after the last day of class. There is not enough time between the last day of class and the date that grades are due to accommodate late assignments.

top


 

 

 

 

 

 

 

 

 

 

 

Project Work

There will be approximately four programming projects during the term. The duration of a project assignment is based on the amount of time it is expected to take. For example, a two-week assignment means that you should have completed half by the end of the first week. There won’t be enough time to do it all in the second week.

This course uses virtual machines to provide platforms on which students can build, modify, and debug the kernel of operating systems. A virtual machine is a simulation of computer hardware that has enough performance and fidelity to be indistinguishable from actual computer hardware. Each virtual machine runs on real hardware and a real operating system, together called the host system. Your experimental operating system is called the guest system.

By working in a virtual machine, you can modify it, debug it, and crash it, all without harming the host system.  If the guest operating system crashes or things go bad, you can roll back to a previously stable state or replace it entirely with a known good one. All in all, this is a safe place in which to work on the most sensitive part of the operating system without harming your other work or anyone else.

All programming projects of this course will be carried out and graded on these virtual machines. The host system may run VMware Workstation, VMware Player, or VMware Fusion on your own personal computer. The guest system for all students is Ubuntu 12.04.3. The virtual machine made available to each member of the class will contain this preinstalled and updated with a recent kernel. Do not attempt to use a different operating system or to update it to a later version than distributed in class. All project grading is predicated on using this guest operating system.

To install your virtual machine and operating system, go to the Project Assignments page of this course website.

top