CS 433

Operating Systems

Spring 2004 Syllabus

 

Homepage               :               http://courses.csusm.edu/cs433ke                            
Instructor                :                Kayhan Erciyes
Email                      :               kerciyes@csusm.edu
Phone                     :               (760) 750-8015
Lectures                  :               TR 10:00-11:15, SCI 2243
Office Hours           :               TR 15:00-16:00 SCI 2227
Grader                    :               Greg Park (park029@csusm.edu)
Prerequisites            :               CS 311 and CS 331
Emergency Contact :               Jo Ann Espinoza at 750-4118
                                         
1. Description
 
CS 433 is an upper division course which  provides an introduction to the operating system concepts and gives an insight 
to the design and implementation of the operating systems. We emphasize implementation in CS 433 as well as design.
 The methodology we follow is the comprehension of the concepts first, followed by the design process. We actually
 implement a small operating system kernel to reinforce the understanding of the basic concepts.
 

2. Text Book

Operating System Principles, L.Bic and A.Shaw, Prentice-Hall, 2002

       Reference Book:  Operating Systems,  XP Version (6th ed), Silberchatz and Galvin, Wiley

3. Lecture Notes :

There will be lecture notes as slides posted on the homepage of the course. Some of the material in the lecture notes may not exist in the text book and you are responsible with whatever is covered in the class based on the lecture notes. They will be posted latest before every lecture they are reviewed. My notes are based on the publishers of the text book.

4. Topics:

1.      Process Management and Coordination : Processes, Threads, Synchronization,  Semaphores, Scheduling, Deadlocks, Kernel realization

2.      Memory Management ; Physical memory, Paging and Segmentation, Virtual Memory, Sharing

3.      File Systems and Input/Output : File System models and implementation, disk management, device management

4.       Protection and Security : Protection interface, viruses, cryptography concepts, internal protection mechanisms

5.      Distributed Systems : Structures, synchronization and communication

 

5. Written Assignments:

There will be 5 written assignments. You should hand these in hardcopy and in the class or in my office mailbox by the due dates.  Important announcements (e.g. changes in due dates) can be made in the lectures. Therefore, your attendance, among other reasons,  is required and is very important.

6. Programming Assignments – The Kernel Design :

A very efficient way of learning how operating systems are designed is to design one. You will implement a small operating system kernel which has a similar functionality to UNIX but it is very much scaled down. It consists of 4 layers and mainly provides process management rather than memory, file or input/output management. However, these can be implemented on top of these four layers without much difficulty. We will simulate processes by Solaris/POSIX threads. You will have an account on the department Sun and a LINUX machine and you can use either. Each kernel layer is made into a programming assignment. You need to make a layer work to make a layer above it work too. I will however provide a sample layer code after the due dates but it is best that you use your own code so that you will understand it better. Coding can be done in C/C++ and you may find it easier to code in C as we get involved in some low level coding, however choose the language that you are most comfortable with. The kernel layers can be realized in groups of maximum 2. If you work in a group of  two, you are responsible for the whole of the assignment. In the scheduled due date for the assignment, you (as the group) will show the operation of the code and will be asked questions on your assignment. The grading of these programming assignments is as follows :

·         Correctness (20 pts) : If your program works as specified,  you get the full points. It may work partially.

·         Demo ( 5 pts)  :  Are you well informed of how your code works. This will be assessed by few questions at demo time.

·         Completeness (15 pts) : Does your code have all the functions required ? There should not be any missing items. Note that in some cases, you may have a working code that is not complete.

·          Documentation (10 pts.) : Comment all of your code for yourself  not to get lost when you have trouble and for us to understand what you have done. This is mandatory. Comment your functions such as input parameters, what it does, comment your code describing what it does at key points (not every line). When the design of the layer is an important part, this section may be broken down to the design (usually 5 pts) and the documentation (5 pts.)

         Last but not least, GDB, the C/C++ debugger is your best friend when in trouble. If you are not familiar with it, it is not too late to start learning it.

            There will also be a programming project similar to the projects described in Part 5 of the text book. The purpose is to have some hands-on experience on operating system concepts such as input/output, memory management and file systems which is not covered by the kernel assignments. You may propose a project topic by the due date. Projects can also be done in groups of max 2.  

7. Exams:

There will be a  midterm (in class) that will cover whatever is covered up to that point.  The final  is comprehensive but will concentrate on the second half of the course. All of the exams are open books, open notes and open minds.

8. Cheating, Plagiarism, etc.:

You may discuss the solution of a problem with other students, but if you end up with a similar solution out of many for a given problem, you should cite your peers. Do not copy others’ assignments or labs. The more you rely on the others to write or correct your programs, assignments, the worse you will do on the exams and later courses. Any copying of programs and their parts will be penalized as Plagiarism according to the university policy. You may not submit identical or nearly identical work.

9.  Incompleteness :

Please refer to the CS program policy about Incompletes posted on our Web page. Incompletes apply only to "emergency" cases.

10. Grading:

1.       Written Assignments                 30 %

2.       Programming Assignments         24 %

3.       Project                                        6  %

4.       Midterm                                    15 %

5.       Final                                         25 %

Total                                               100 %

This is an absolute scale. You can guarantee yourself a  particular grade by attaining the appropriate overall percentage.

 

11.  CS 231 Spring 2004 Tentative Lecture Schedule

Date

Topic

Reading

Assigns

1/20

Introduction, Overview

Ch.1

 

1/22

OS Concepts

Ch.1

 

1/27

Process Management I

Ch.2.1-2.2

A1 out

1/29

 Process Management II

 

 

2/3

Threads

 

K1 out

2/5

Solaris and POSIX Threads

Ch. 4.3-4.4

 

2/10

Implementing Kernel I

Ch. 4.1-4.2

A1 due,A2 out

2/12

Process and Thread Scheduling I

Ch. 5.1-5.2

 

2/17

Process and Thread Scheduling I

Ch.5.3-5.4

K1 due, K2 out

1/19

Implementing Kernel II

Ch.4.2

 

2/24

Process Synchronization I

Ch.2.3-2.4

A2 due,A3 out

2/26

Process SynchronizationII

Ch.2.4-2.5

 

3/2

Implementing Kernel III

Ch.4.5

K2 due, K3 out

3/4

Deadlocks I

Ch.6.1-6.3

 

3/9

Deadlocks II

Ch. 6.4-6.7

A3 due

3/11

MIDTERM (in class)

 

 

3/16

Physical memory

Ch.7

K3 due, K4 out

3/18

Virtual Memory I

Ch.8.1-8.2

 

3/23

Virtual Memory II

Ch.8.3

 

3/25

Memory Sharing

Ch.9

Project out  Proposals due

3/30

 Spring Break

 

 

4/1

Spring Break

 

 

4/6

File System Interface

Ch.10.1-10.5

A4 out, K4 due

4/8

File System Implementation

Ch.10.6-10.8

 

4/13

Input-Output Systems I

Ch.11.1-11.3

 

4/15

Input-Output Systems II

Ch.11.4-11.5

 

4/20

Protection and Security

Ch.12

A4 due, A5 out

4/22

Internal Protection

Ch.13

 

4/27

Distributed Systems Structures

Ch.3.2;Ch.5.4

 

4/29

Distributed System Comm

Notes

 

5/4

Review I

 

A5 due

5/6

Review II

 

Project Due