CS 470G - Introduction to Operating Systems

 

Credits: 3

 

Course Description

 

This course provides an introduction of operating system design, internals, and administration. Topics include process management, scheduling, memory management, device drivers, file systems, kernel/microkernel designs, concurrency, synchronization, interprocess communication, security, protection, and operating system administration.

 

Prereqs: CS-315, CS-380, and engineering standing.

 

Needed Skills

 

Students need programming skills and knowledge of machine organization, architecture, and data structures.

 

Learning Outcomes

 

Students will acquire knowledge of the issues involved in the design and implementation of various components of an operating system and the interaction of the various components with hardware as well as their use in application development. More specifically, students will be able to:

1. Understand overall computer system structure and operating system design

2. Apply the process management techniques and be able to write applications using the interfaces provided by the operating system.

3. Apply the process synchronization mechanisms for writing concurrent applications

4. Understand interfaces provided by the memory management component of the operating system

5. Use the interfaces provided by the file system in developing applications.

6. Understand methods used for protecting computer systems resources from unauthorized access.

 

Measures

 

The above outcomes will be evaluated based on the homeworks, programming assignments, and exams which will focus on each of these outcomes. They will also be evaluated based on the students' self-assessment of their mastery of these outcomes performed at the end of the semester.

 

CAC Categories

 

Topic

Core

Advanced

Math Fundamentals

0

0

Data Structures

0

0

Algorithms & Software Design

42

0

Computer Organization and Architecture

0

0

Concepts of Programming Languages

2

0

Social and ethical issues

1

0

Total

45

0

 

Math Fundamentals: none

 

Data structures: none

 

Algorithms and Software Design (42): Core (42): computer and operating system structure (4); process management (8); process synchronization (9); memory management (10); File systems (5); protection and security (6);

 

Computer Organization and Architecture: none

 

Concepts of Programming Languages (2): Core(2): monitors (2);

 

Social and Ethical Issues (2): Discussion of computer security and privacy mechanisms and discussion of professional and academic integrity (no assignments)

 

Oral Communication (presentations)

 

none

 

Written Communication

 

6-10 homeworks and projects, approximately 3-10 pages/assignment

 

Coverage

 

Theoretical Content: 50%

· Processes: operations on processes, cooperating processes, interprocess communication

· Threads

· CPU scheduling: scheduling criteria, scheduling algorithms, scheduling algorithm evaluation, real-time scheduling, multi-processor scheduling

· Process synchronization: the critical section problem, synchronization hardware, semaphores, classical problems of synchronization, monitors

· Deadlocks: methods for handling deadlocks, algorithms for deadlock detection, prevention and avoidance

· Memory management: memory allocation, paging, segmentation, segmentation with paging, virtual memory

· File systems: structure, implementation

· Secondary storage management, disk structure, disk scheduling, disk management

· Protection and security: methods for protecting resources, access matrix, capabilities, access control list, user authentication, program threats, system threats, intrusion detection.

 

Problem Analysis: 25%

· Analyze the various algorithms and methods for the design and implementation of various components of an operating system.

 

Solution Design: 20%

· Design and implement applications using the interfaces provided by the various components of an operating system.

 

Other: 5%

· Course administration, social issues, exams, and demonstrations.

 

Student evaluation and feedback

 

Students receive back their homework and exams. These papers are graded to indicate problems and they point out correct or better solutions. Problems that turn out to be especially difficult are discussed in class.

 

Solutions to most homework assignments are posted on the course web site approximately one week after they are due and before any examination covering the homework material.

 

Course Evaluation Questions

 

The course has helped me:

37. Understand the various components of an operating system

38. Understand memory management

39. Understand process management

40. Understand basic mechanisms for protecting computer resources

41. Understand file system management

42. Understand and apply some OS interfaces for application development

 

Grading

 

A student's grade will be determined by a weighted average of homework assignments, programming exercises, projects, hour examinations, and the final examination. Graduate students will have a different grading scale than undergraduate students. i.e., the cut off for graduate students for each grade will be slightly higher than that for the undergraduate students. The faculty offering the course will make the details available at the beginning of the course.

 

A typical weighting is:

Homework & Programs 40%

Mid-term Examinations 40%

Final Examination 20%

 

Possible Textbook

 

Operating System Concepts, 6th Edition
Silberschatz, Galvin, & Gagne
© 2001 / 0-471-25060-0 Addison Wesley