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