Lehigh University
COLLEGE HOME | LEHIGH HOME | SEARCH




   

CSE 303   Operating System Design (3)

Instructor:  Daniel Lopresti

Current Catalog Description
Process and thread programming models, management, and scheduling. Resource sharing and deadlocks. Memory management, including virtual memory and page replacement strategies. I/O issues in the operating system. File system implementation. Multiprocessing. Computer security as it impacts the operating system. Prerequisites:  ECE 201 and CSE 109.

Textbook
Andrew S. Tanenbaum, Modern Operating Systems, 2nd Ed., Prentice-Hall.

References 

Course Goals 
• To develop an understanding of basic operating system concepts.
• To become aware of resource management issues and how they are solved.
• To gain experience with different models of computation and communication (processes, threads, RPC, multiprocessing) supported by modern operating systems.

Prerequisites by Topic
• Systems programming in C and/or C++, including data types and data structures.
• Computer architecture: instruction sets & processing, memory and I/O subsystems.

Major Topics Covered in the Course
• System calls
• Processes
• Threads
• Interprocess communication
• Process scheduling
• Deadlocks
• Memory management
• Paging and segmentation
• I/O software and device drivers
• File systems
• Multiprocessor operating systems
• Operating system security

Laboratory projects (specify number of weeks on each)
 One-week programming assignments:
  a. Processes vs. threads:  creation and communication
  b. Race conditions and mutual exclusion
 Two-week programming assignments:
  a. File system and directory structures in Unix
  b. Programming the Beowulf multiprocessor using MPI
 One-week simulator assignments:
  a. Process scheduling
  b. Memory management

Estimate CSAB Category Content
                                                                          CORE      ADVANCED
Data Structures                                                                          1  
Computer Organization and Architecture                                    1
Algorithms Software Design                                                       1  
Concepts of Programming Languages   
 
Oral and Written Communications
Every student is required to submit at least  __0__  written reports (not including exams, tests, quizzes, or commented programs) of typically  __n/a__  pages and to make  __0__  oral presentations of typically  __n/a__  minutes duration. Include only material that is graded for grammar, spelling, style, and so forth, as well as for technical content, completeness, and accuracy.

Social and Ethical Issues
Because operating systems typically run at the highest level of privilege, the students are made aware of the potential for disaster by poorly written code and the importance of responsible software engineering. This is tested throughout the course in homework assignments, quizzes, and exams. Four lectures at the end of the course are devoted to issues regarding computer security, attacks on computer systems by unethical individuals (“crackers”), and how to prevent such events from occurring. This material is tested during the final exam.

Theoretical Content
1. Algorithms for process scheduling and deadlock avoidance (4 lectures)
2. Algorithms for memory management (7 lectures)
3. Algorithms for I/O scheduling (1 lecture)
4. Algorithms for file system implementation (3 lectures).
5. Models for parallel computing (3 lectures)
6. Computer security, data encryption and user authentication (4 lectures)

Problem Analysis
The students are assigned a combination of written homeworks and programming projects. For the former, they must determine the nature of the question, the relationship to the material we have studied, and an appropriate technique for performing the requested computation or explaining in written terms the required answer. Each of the programming projects requires the student to break the problem into smaller pieces using top-down design. They must then code the required solution in either C or C++ under the Unix operating system, debug it, and test it using input we provide along with their own test cases. Several of the programming projects involve multiple communicating processes and/or threads; hence, the students must also learn how to analyze parallel programs and the special problems they induce.

Solution Design
The students engage in programming projects using either C or C++ under Unix. Their solutions must express in program code the basic operating system techniques they learn about during class. Typically, this will involve implementing data structures and algorithms we have discussed explicitly or that they are assumed to know from the course's prerequisites. To receive full credit, they must produce code that is well-structured, documented, and that works.

 

     
image


©2008 P.C. Rossin College of Engineering & Applied Science
Computer Science & Engineering, Packard Laboratory, Lehigh University, Bethlehem PA 18015