CS3431 - Operating Systems and Data Management

Instructor

George Riley
Office: GCATT 225
Office hours: TuTh 11am-noon in CoC 135
Email: riley@cc.gatech.edu

Course Summary

CS3431 (Operating Systems) is the introductory undergraduate course which introduces students to the concepts in the design and implementation of computer operating systems. We will cover a wide range of issues in operating system design, and try to understand why things are done in a particular way, more so than how they are done, although we clearly need to know the how in order to understand the why. We will follow the textbook more or less in order, covering at a minimum chapters 1 through 13, with chapters 14 through 16 included if time allows.

Teaching Philosophy

The syllabus gives required reading for each class period, and the students are expected to have read the material prior to class. The class lectures will cover briefly the material in the text, which explains how things are done, and then we will discuss in detail why things are done in certain ways. I encourage (and expect) you to participate actively in the learning process. In particular, I welcome your comments and questions as we cover material in class. One-way lectures quickly becoming boring, both for you and for me. Also, I have found that students often learn more from other students comments than from the instructor! By asking lots of questions, your understanding of the material will be deepened signficantly, and the course will be much more fun!

Teaching/Learning Goals

The purpose of this course is for you to understand the fundamentals of what is happening in an operating system when you as a computer user ask the computer to do something for you. Very few of us will actually design or implement an operating system in our careers, but all of us will use a computer frequently, and often things will not work as we expect. A good solid understanding of what is going on inside the computer when your application is misbehaving will enable us to more easily determine what the problem is and what to do about it. In particular, we will learn and understand:

Textbook (Required)

The required textbook is Operating System Concepts (Fifth Edition) by Silberschatz and Galvin, 1998.

Getting Help

There will be two teaching assistant for this course. They will do all grading of homework assignments and programming projects, and should be your first point of contact when you have questions about assignments or grading.

Students are also encouraged to help each other via postings on the class newsgroup git.cc.class.3431. If you have difficulty understanding a particular homework problem or getting some aspect of the programming assignment working, post a newsgroup message. However, there is a fine line between helping someone and doing their work for them. I will read the newsgroup regularly, and if I feel a student has ``stepped over the line'' in helping, I'll let you know.


Grading

Homework 1 05%
Homework 2 10%
Project 1 15%
Project 2 20%
Midterm 20%
Final 20%
Class Participation 10%
Total 100%

Project 1 Grading Criteria

Proper creation of Philosopher Threads 20%
Proper waiting for each thread to start 20%
Proper blocking in main for threads to complete 20%
Proper management of chopsticks 20%
No starving Philosophers 10%
Commenting 10%
Total 100%

Project 2 Grading Criteria

Test 1 5%
Test 2 5%
Test 3 5%
Test 4 5%
Test 5 5%
Test 6 5%
Test 7 10%
Test 8 10%
Test 9 15%
Test 10 10%
Test 11 10%
Test 12 15%
Total 100%

Syllabus

Day Month Date Topic Reading
Tue Jan 6 Historical Overview Ch 1, pp 1-16



Distributed Systems and Real Time Systems Ch 1, pp 16-20
Thu Jan 8 Hardware I/O Systems Ch 2, pp 23-30



Storage Structure/Hierarchy Ch 2, pp 30-45
Mon Jan 12 Operating System Structures Ch 3, pp 49-66



Homework 1 Assigned
Tue Jan 13 System Programs and Structure Ch 3, pp 66-78



System Design and Implementation Ch 3, pp 78-83
Thu Jan 15 Process Management Ch 4, pp 89-97



Threads and pthreads Ch 4, pp 102-108
Mon Jan 19 HOLIDAY!
Tue Jan 20 Operations on Processes Ch 4, pp 97-102



Homework 1 Due
Thu Jan 22 Interprocess Communications Ch 4, pp 108-116




Ch 4, pp 119-120
Mon Jan 26 CPU Scheduling Ch 5, pp 123-128



Scheduling Algorithms Ch 5, pp 129-144




Ch 5, pp 149-150



Project 1 Assigned
Tue Jan 27 Process Synchronization Ch 6, pp 155-172
Thu Jan 29 Process Synchronization Ch 6, pp 155-172
Mon Feb 2 Classic Synchronization Problems Ch 6, pp 172-189
Tue Feb 3 Classic Synchronization Problems Ch 6, pp 172-189




Ch 6, pp 199-200
Thu Feb 5 Deadlocks Ch 7, pp 207-214
MonFeb9 Deadlock Prevention/Avoidance Ch 7, pp 214-231



Project 1 Due



Homework 2 Assigned
Tue Feb 10 MidTerm



Copy of the Exam



Copy of the Answer Key
Thu Feb 12 Midterm Review
Mon Feb 16 Memory Management 1 Ch 8, pp 239-257



Homework 2 Due
TueFeb17 Memory Management 2 Ch 8, pp 257-272




Ch 8, pp 282-284
Thu Feb 19 File System Implementation 1 Ch 11,pp 369-385
Mon Feb 23 File system Implementation 2 Ch 11,pp 385-391



Project 2 Assigned
Tue Feb 24 File system Implementation 2 Ch 11,pp 385-391
Thu Feb 26 Virtual Memory 1 Ch 9, pp 289-299
MonMar2 Virtual Memory 2 Ch 9, pp 300-330
TueMar3 Files 1 Ch 10,pp 337-349



Files 2 Ch 10,pp 360-366
ThuMar5 Input Output Systems 1 Ch 12,pp 397-414



Input Output Systems 2 Ch 12,pp 414-428
Mon Mar 9 Networks 1 Ch 15,pp 473-491
Tue Mar 10 Networks 2 Ch 15,pp 491-498
Thu Mar 12 Final Exam Review



Class Evaluation



Project 2 Due
Mon Mar 16 Final Exam



Final Exam Answer Key



Final Exam Grading Details

Grades

Student ID (anonymous) HW1 HW2 Prog 1 Prog2 MidTerm Final Participation Grade % Grade Letter
019710010010091941096.9A
02989510010086931095.2A
03897380656263566.8D
04941001001108689591.7A
0595921001006039775.8C
0693871001005781783.0B
07991001001108580792.0A
0810056600360531.8F
09955810010086871090.2A
109060801006247569.3C
1193871001008479788.0B
12900000004.5W
139710010010098921097.9A
14906210010082981091.7A
159749100658090576.8C
1693941001089693795.5A
179090100409287981.3B
1895811001007383786.1B
1910010010010010510110101.2A
208886941007070984.1B
21899610010088661089.9A
221008410011090981098.0A
2388791001008550983.3B
240000001010.0P
250000001010.0P
268464100756177775.2C
271007774408384974.2C
2892741001007473783.4B
2997981001009390995.3A
3095871009093861092.3A
31907480756662569.5C
32100791005064781076.3C
339486100506881977.1C
3400000000.0W
35890000059.5W
36808480906176978.8B
37969410010086841093.2A
38959710010099991099.1A
39967570755180771.0C
4099911001005453777.5C
419257851007977781.3B
42941009210097931096.5A
439478100658286579.1B
4484601001106966781.2B
4592781009093811090.2A
468992201005760767.1D
47001001006477972.2C
48907964757278976.0C
4910080949080881088.7B
50931001001088685994.5A
519389100655963773.0C
528341551005960565.3D
53100947010082771086.7B

Contact Information:

riley@cc.gatech.edu
College of Computing
Georgia Institute of Technology
Atlanta, GA 30332-0280

Last Modified: Jan. 20, 1998