CS 4315: Operating Systems

Fall 2016 (CRN: 11567, Class mode: Hybrid, Class time: Wednesday 4:00pm-5:15pm)

Instructor:             Dr. Hong Lin

Office:                    N-704A              Tel: (713) 221-2781

E-mail:                   linh@uhd.edu    URL: http://cms.dt.uh.edu/faculty/linh

Office Hours:        Monday-Thursday 2:30pm-3:30pm, and by appointment.

Catalog description: (3-3-0) This course will introduce you to the concepts of operating systems. We will focus on traditional systems utilizing a single processor and the issues that arise when multiple processes must share the processor, memory and I/O resources. The course focuses on three main operating system functions: device management, process management, and storage management (main memory and file system management). Programming examples will be carried out on UNIX.

Textbook: "Operating Systems", 3rd edition, by Gary Nutt, Addison Wesley, 2004.

Supplemental: “The Art of Multiprocessor Programming”, by Maurice Herlihy & Nir Shavit, Elsevier, 2008.

References:  Any book on UNIX/LINUX, any book on C/C++ ).  Some of these include: 

Course Web Page: The course web page is at: http://cms.dt.uh.edu/faculty/linh/courses/cs4315/index.htm.  As the semester progresses, various material will be posted and/or updated in the course schedule including, the course syllabus, projects, homework assignments, and lecture notes.   I will also post course announcements such as exam dates, project/homework deadlines  as well as urgent messages, if needed, on that page.  So you may want to check it regularly. Original Powerpoint presentations are developed by Dr. Gary Nutt (The author of the textbook). However, updates may be added to the lecture notes in the progress of the course.

Course prerequisites: CS 3304

Topic prerequisites: i) Familiarity with computer hardware organizations ii) programming experience with C or C++, and iii) programming experience using data structures such as those discussed in CS3304.

Topic content:

Topic

Textbook Chapter

Introduction

Chapter 1

Quick Overview of UNIX

Chapter 2 & Unix Refs

Operating System Organization

Chapter 3

Computer Organization

Chapter 4

Device Management

Chapter 5

Processes

Chapter 6

CPU Scheduling

Chapter 7

Process Synchronization

Chapter 8

Deadlock

Chapter 10

Memory Management

Chapter 11

Virtual Memory

Chapter 12

File Systems

Chapter 13 (optional)

 

 

Learning Outcomes: At the completion of the course, the student should be able to: 

 

1.

Understand fundamental operating system abstractions such as processes, threads, files, semaphores, IPC abstractions, shared memory regions, etc.

2.

Understand how the operating system abstractions can be used in the development of application programs, or to build higher level abstractions.

3.

Understand how the operating system abstractions can be implemented.

4.

Understand the principles of concurrency and synchronization, and apply them to write correct concurrent programs/software.

5.

Understand basic resource management techniques (scheduling or time management, space management) and principles and how they can be implemented. These also include issues of performance and fairness objectives, avoiding deadlocks, as well as security and protection.

 

Programming Assignments:   There will be some programming assignments to reinforce some of the theoretical concepts discussed in class. Programming assignments are to be written in C on LINUX. You may get a LINUX account on gator in the Academic Computing Lab (800 South Bld). Also, a telnet software "putty.exe" is available here.

Course grade: Course grades will be determined as follows:

Assignment

Weight

2 Midterm Exams

20 % each

Labs & Programming Assign.

30 %

Final Exam

30 %

Total

100%

 

Make-up exam late assignments: Homework/programming assignments are to be completed and turned in by the due date at the beginning of class. Late assignment will not be accepted. There are no makeup exams. If you miss one exam, your grade of the final exam will be counted twice. At most one exam can be missing. All missed grades will be recorded as zeros.

Academic Dishonesty: For this class, all work must be done individually -- no group work is allowed. You are encouraged to generally discuss assignments with fellow students, but may not copy their solution or code. Doing so constitutes academic dishonesty which will be sanctioned with a grade of F, and possibly further disciplinary actions by the University.

Attendance Policy: Your failure to attend class (face to face or hybrid), engage course material (Online only); or make contact with faculty to adequately explain your absence by the 10th class calendar day of the semester will result in your being administratively dropped from this course.  Being dropped from this course may affect your enrollment status and/or your financial aid eligibility.

 

Statement on reasonable accommodations: The University of Houston-Downtown complies with Section 504 of the Rehabilitation Act of 1973 and the Americans with Disabilities Act of 1990, pertaining to the provision of reasonable academic adjustments/auxiliary aids for students with a disability.  In accordance with Section 504 and ADA guidelines, UHD strives to provide reasonable academic adjustments/auxiliary aids to students who request and require them.  If you believe that you have a disability requiring an academic adjustments/auxiliary aids, please contact the Office of Disability Services, One Main St. Suite 409-South Houston, TX 77002.  (Office) 713-226-5227; (Website) www.uhd.edu/disability/; (Email) disabilityservices@uhd.edu.

 

Course Schedule

(This schedule is subject to update. You should check it regularly for assignments and due dates)

Week

Monday

Wednesday

1

8/22
Chapter 1

8/24

Chapter 2

2

8/29

Linux Tutorial

8/31

Linux Lab

3

9/5

Labor Day

9/7

Chapter 3

4

9/12

Multicore – Chapter 1

9/14
Multicore Lab 1 – Java Threads

5

9/19

Review for the 1st test

9/21

1st Test

6

9/26

Chapter 4

9/28

Chapter 4

Chapter 5

7

10/3

Chapter 5

Multicore – Chapter 7

10/5

Multicore Lab 2 – Cache Coherence

8

10/10

Chapter 6

10/12
Chapter 6

Chapter 7 - Part 1

9

10/17

Chapter 7 - Part 2

10/19

Lab exercise - fork()/wait()

10

10/24

Review for the 2nd test

10/26
2nd Test

11

10/31

Chapter 8 - Part 1

11/2

Chapter 8 - Part 2

12

11/7

Chapter 10 - Part 1

11/9
Lab exercise - Mutual exclusion

13

11/14

Chapter 10 - Part 2

11/16

Chapter 10 Lab – Dining Philosopher’s Problem

14

11/21
Chapter 11

11/23
No Class

15

11/28

Chapter 11

11/30

Review for Final Exam

16

12/5

12/7

Final Exam 4:00-6:30pm