CSCI/CMPE 4334 Operating Systems Spring 2018 Instructor: David L. Egle Office: ENGR 3.296 Phone: 665-3518 E-Mail: david.egle@utrgv.edu Website: faculty.utrgv.edu/david.egle/csci4334 Office Hours: MW 1:45-2:45, TR 2-3, F 11-12 Other times by appointment Text: Operating Systems - A Modern Perspective, 3rd Edition, by Gary Nutt Course Prerequisites: CSCI/CMPE 3334 Course Description: The purpose of this course is to teach the design of operating systems. We will cover major topics such as process management, memory management, file systems, and distributed operating systems. Grading: 30% - 2 major exams 15% - Homework 35% - Programming projects 20% - Final exam Projects: There will be a number of programming projects relating to the Linux kernel. All projects will use the C programming language. If you have C++ before, you will have no difficulty understanding the source code given. Project Grading: For each of the projects, I will look for the following items: Clarity: Programs should be well written and well documented. Organization: Programs should be written in well defined modules and interface (parameters) should be well defined. Format: Programs should be clear and very readable. Correctness: Programs should generate correct results. Robustness: Programs should handle unexpected input properly. Simplicity: While achieving the above goals, the simpler the program is, the better. Electronic submission: All projects will be submitted electronically only. Instructions are given separately. Late policy: All assignments should be turned in on their due date. Programs turned in late will be graded on the following basis: no more than 1 week late: 10% penalty no more than 2 weeks late: 30% penalty no more than 3 weeks late: 50% penalty more than 3 weeks late: no credit (grade is 0)
Drops: The last day to drop the course is April 12, 2018 (date subject to change). Students considering dropping the class should be aware of the 3-peat rule and the 6- drop rule so they can recognize how dropped classes may affect their academic success. The 6-drop rule refers to Texas law that dictates that undergraduate students may not drop more than six courses during their undergraduate career. Courses dropped at other Texas public higher education institutions will count toward the six-course drop limit. The 3-peat rule refers to additional fees charged to students who take the same class for the third time. Students Who Need Special Accommodation: If you have a documented disability (physical, psychological, learning, or other disability which affects your academic performance) and would like to receive academic accommodations, please inform your instructor and contact Student Accessibility Services to schedule an appointment to initiate services. It is recommended that you schedule an appointment with Student Accessibility Services before classes start. However, accommodations can be provided at any time. Student Accessibility Services is located in 108 University Center and can be contacted by phone at (956) 665-7005 (Voice), (956) 665-3840 (Fax), or via email at accessibility@utrgv.edu. SCHOLASTIC INTEGRITY: As members of a community dedicated to Honesty, Integrity and Respect, students are reminded that those who engage in scholastic dishonesty are subject to disciplinary penalties, including the possibility of failure in the course and expulsion from the University. Scholastic dishonesty includes but is not limited to: cheating, plagiarism, and collusion; submission for credit of any work or materials that are attributable in whole or in part to another person; taking an examination for another person; any act designed to give unfair advantage to a student; or the attempt to commit such acts. Since scholastic dishonesty harms the individual, all students and the integrity of the University, policies on scholastic dishonesty will be strictly enforced (Board of Regents Rules and Regulations and UTRGV Academic Integrity Guidelines). All scholastic dishonesty incidents will be reported to the Dean of Students. Therefore, you are expected to create your own programs with no assistance from any source other than your notes, textbook, and your instructor. Copying, collusion, and other forms of plagiarism will not be tolerated. Programs which are not your own work will not earn any credit. Mandatory Course Evaluation Period: Students are required to complete an ONLINE evaluation of this course, accessed through your UTRGV account (http://my.utrgv.edu); you will be contacted through email with further instructions. Students who complete their evaluations will have priority access to their grades. SEXUAL HARASSMENT, DISCRIMINATION, and VIOLENCE In accordance with UT System regulations, your instructor is a responsible employee for reporting purposes under Title IX regulations and so must report any instance, occurring during a student s time in college, of sexual assault, stalking, dating violence,
domestic violence, or sexual harassment about which she/he becomes aware during this course through writing, discussion, or personal disclosure. More information can be found at www.utrgv.edu/equity, including confidential resources available on campus. The faculty and staff of UTRGV actively strive to provide a learning, working, and living environment that promotes personal integrity, civility, and mutual respect in an environment free from sexual misconduct and discrimination. Learning outcomes: At the end of this course, the student should be able to: 1. Explain the organization of the classical von Neumann machine and its major functional units. 2. Explain how an instruction is executed in a classical von Neumann machine. 3. Explain different instruction formats, such as addresses per instruction and variable length vs. fixed length formats. 4. Describe the principles of memory management. 5. Explain how interrupts are used to implement I/O control and data transfers. 6. Explain the objectives and functions of modern operating systems. 7. Describe how operating systems have evolved over time from primitive batch systems to sophisticated multiuser systems. 8. Analyze the tradeoffs inherent in operating system design. 9. Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the ability to evolve. 10. Discuss networked, client-server, distributed operating systems and how they differ from single user operating systems. 11. Identify potential threats to operating systems and the security features design to guard against them. 12. Describe how issues such as open source software and the increased use of the Internet are influencing operating system design. 13. Defend the need for APIs and middleware. 14. Describe how computing resources are used by application software and managed by system software. 15. Contrast kernel and user mode in an operating system. 16. Discuss the advantages and disadvantages of using interrupt processing. 17. Compare and contrast the various ways of structuring an operating system such as object-oriented, modular, micro-kernel, and layered. 18. Explain the use of a device list and driver I/O queue. 19. Describe the need for concurrency within the framework of an operating system. 20. Demonstrate the potential run-time problems arising from the concurrent operation of many separate tasks. 21. Summarize the range of mechanisms that can be employed at the operating system level to realize concurrent systems and describe the benefits of each. 22. Explain the different states that a task may pass through and the data structures needed to support the management of many tasks. 23. Summarize the various approaches to solving the problem of mutual exclusion in an operating system. 24. Describe reasons for using interrupts, dispatching, and context switching to support
concurrency in an operating system. 25. Create state and transition diagrams for simple problem domains. 26. Discuss the utility of data structures, such as stacks and queues, in managing concurrency. 27. Explain conditions that lead to deadlock. 28. Compare and contrast the common algorithms used for both preemptive and non-preemptive scheduling of tasks in operating systems, such as priority, performance comparison, and fair-share schemes. 29. Describe relationships between scheduling algorithms and application domains. 30. Discuss the types of processor scheduling such as short-term, medium-term, long-term, and I/O. 31. Describe the difference between processes and threads. 32. Compare and contrast static and dynamic approaches to real-time scheduling. 33. Discuss the need for preemption and deadline scheduling. 34. Explain memory hierarchy and cost-performance tradeoffs. 35. Explain the concept of virtual memory and how it is realized in hardware and software. 36. Summarize the principles of virtual memory as applied to caching, paging, and segmentation. 37. Evaluate the tradeoffs in terms of memory size (main memory, cache memory, auxiliary memory) and processor speed. 38. Defend the different ways of allocating memory to tasks, citing the relative merits of each. 39. Describe the reason for and use of cache memory. 40. Compare and contrast paging and segmentation techniques. 41. Discuss the concept of thrashing, both in terms of the reasons it occurs and the techniques used to recognize and manage the problem. 42. Analyze the various memory portioning techniques including overlays, swapping, and placement and replacement policies. ABET Program Outcomes (a) An ability to apply knowledge of computing and mathematics appropriate to the discipline (b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution (c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs (i) An ability to use current techniques, skills, and tools necessary for computing practice (j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices (k) An ability to apply design and development principles in the construction of software systems of varying complexity
The following is a general outline for the course and may be revised as the semester progresses. Week Topic Chapters 1 Introduction and overview of operating systems 1, 2 2 Operating system organization 3, 4.1-4.3 3 Devices and their management 4.4-4.6, 5 4 Process management 6 5 Process scheduling 7 6 Basic synchronization -- EXAM 1 8 7 High-level synchronization 9 8 Deadlock 10 9 Memory Management 11 10 Virtual memory 12 11 File management -- EXAM 2 13 12 More on file management; Protection & security 13, 14 13 Networks 15 Final Exam Monday May 7, 10:15-12 pm
Electronic Submission of Projects For every programming project you do, you should create a separate directory on the Linux computers in the CS Lab (ENGR 2.212), for example, 4334/proj1. Keep all related files in that directory. When the project is finished, you just send me an email. The subject line should include your full name and project number. In the body of the message, you should tell me the full name of the directory where your program files reside on the computers in the lab. After reading and testing your program, I'll send you an email with my comments and grade. For convenience, please include your email address in every submission. The Linux systems in our lab do not receive email. For each of the projects, you should have the following in your directory: A README file briefly describing your solution to the problem. The file should be in plain text so I can read it without Word or other software. A TESTCASE file listing the test cases you have used and the results generated, and explain what they mean. All source code and user-created header files. A makefile that governs the compilation of the project. Do not leave extra files in your directory. Each file should contain your name, the class section, the assignment number, the date and instructor's name.