MCS 370, Fall Term 1996 Operating Systems Instructor: Stephen J. Hartley, office Korman 293, phone (215) 895-2678. E-mail: shartley@mcs.drexel.edu Home page: http://www.mcs.drexel.edu/"shartley Time: 1:30--3:00 pm, Tuesday and Thursday. Office Hours: 12 noon--1:00 pm, Tuesday and Thursday; and by appointment. If you need to make an appointment, or if you have a question, you can always reach me by electronic mail at the above address. Textbooks: Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall, 1992. ISBN 0-13-588187-0. This is also the textbook for MCS 720 (Operating Systems I), and MCS 721 (Operating Systems II). Stephen J. Hartley, draft manuscript of ``ConcurrentProgramming: The Java Programming Language,'' available from theCampus Copy Center, 3907 Walnut Street, $17.70 including tax. Call 386-6410 a day or two ahead of time to make sure a copy is available for you. Online Resources: Class directory: "shartley/MCS370 Class newsgroup: drexel.mcs.class.mcs370 Class Web page: http://www.mcs.drexel.edu/"shartley/MCS370/ References: Items on reserve at the library. One copy of each of the textbooks. Andrew S. Tanenbaum, Operating Systems: Design and Implementation, Prentice-Hall, 1987. Harvey M. Deitel, An Introduction to Operating Systems, second edition, Addison-Wesley, 1990. Abraham Silberschatz, James L. Peterson, and Peter B. Galvin, Operating System Concepts, third edition, Addison-Wesley, 1991. Peter J. Denning, ``The Fifteenth Level,'' Proceedings ACM Sigmetrics Conference on Measurement and Modeling ofComputer Systems, Nashville, TN, May 16-20, 1994. Prerequisites: MCS 361, Concurrent Programming, the foundation course for the OS track. Although there are no prerequisites for MCS 361 stated in the Catalog, you will have a very tough time in this course if you have not had MCS 170, MCS 172 (ComputerProgramming I and II), and MCS 260 (Data Structures). You will also have a tough time if you have not had MCS 281 and MCS 282, System Architecture I and II. Finally, you will have a very tough time if you have not had MCS 280, C and UNIX. See me if you do not fulfill the prerequisites! General Course Description: From the Catalog for MCS 720, Operating Systems I (a better description than what is in the catalog for MCS 370): ``The classical internal algorithms andstructures of operating systems: CPU scheduling, memory management, and device management. Considers the unifying concept of the operating system as a collection of cooperating sequential processes. Topics include: file systems, virtual memory, disk request scheduling, concurrent processes, deadlocks, security and integrity.'' Note that MCS 361 covers concurrent processes. From Tanenbaum's OS book (p. 1, 4, 5): ``The most fundamental of all the system programs is the operating system, which controls all the computer's resources and provides the base upon which the application programs can be written. ... [T]he function ofthe operating system is to present the user with the equivalent ofan extended machine or virtual machine that is easier to program thanthe underlying hardware ... [and] to keep track of who is using which resource, to grant resource requests, to account for usage,and to mediate conflicting requests from different programs and users.'' Goals: The goal of this course isto acquaint you with the terminology of operating systems and the concepts and algorithms behind their design and implementation. This course and MCS361 (Concurrent Programming) constitute the operating systemssequence. You will also get some Java programming experience. Grading: The course grade will be determined as follows: programming assignments 40% one hour test 25% final exam 25% homeworks, attendance, class participation 10% Final letter grades for the term will be basedon a curve. Regular attendance in class is expected; an attendance sheet for you to sign will be passed around every class period. Good attendance will be taken into consideration to decide border-line letter grade cases. ``Class participation'' means being prepared for the material to be covered in class each day, asking thought-provoking questions, and providing insightful answers in class. Class participation will also be used to help decide borderline cases. Tests: There will be one in-classhour test about midway through the term and then the final exam. They will be closed book and closed notes. Exam questions will include definitions, short answer, and numerical type problems. They will cover however far we have gotten before each one. The final exam will be comprehensive but will stress the material after the mid-term. Assignments: Therewill be several programming assignments during the term. There will also be written assignments,drawn from the problems at the ends of the text chapters. Finally, there will be a project or paper or class presentation (talk in front ofthe class). There is not enough time for me to grade all homework and programming assignments. Therefore I will designate each homework problem or programming assignment as either (1) to be handed in for grading, or (2) to be worked, prepared, or done by you butnot handed in for grading. Note on category (2) (see ``How ThisClass Will Be Run'' below): you might be called on to answer a homework problem or describe your programming solution in class. It will count against you if you are absent orunprepared when randomly called on. Late Policy: My policy is to take 20 (twenty) percent off for each day (or part of a day) that a written or programming assignment that is to be handed in for grading is turned in late.The weekend counts as 24 hours (one day). This is not meant to be mean but to encourage you to plan your time carefully and to reward those who do. All assignments may be turned in at the beginningof class on the specified due dates or handed to me no later than 5 pm on the due date. Work may be turned in after 5 (five) days late for zero credit and it MIGHT be used to determine borderline cases at the end of the term. Each student will start the term with a ``bank'' of 3 (three) late days. You may ``draw'' on this bank by indicating on the top of an assignment the number of late days you are using from your current balance. The number of days drawn from your balance will then be subtracted from the actual number of days lateto determine the late penalty. If you draw from your balance, you must also write at the top of the assignment your new balance. Your balance cannot be overdrawn and cannot be increased by turning in an assignment early. How This Class Will Be Run: First, I will collect any homework due that was assigned to be turned in for grading.Then, I will go over what I think are the important points in the chapter(s) being covered. Next, I will explain in more detail whatever in the book seems not completely clear. Then I will answerwhatever questions you have about the material. Finally, I will callon people randomly to present in class homework problems that have been assigned but not to be handed in for grading (category (2) above). Academic Integrity: You must do all of the programming assignments and homeworks that are handed in for grading individually. In preparing the solutions for assignments, you may consultwith other students and the course instructor regarding general methods of solution. However, the final submission handed in for grading must be your own work. Copying of the solutions of others is expressly forbidden. Allowing others to copy your solutions is expressly forbidden. Penalties for violation of this will range from a grade of zero on the assignment to a grade of F for the course,effective immediately, and a letter to the Office of the Dean. By registering in this course, each one of youis explicitly making the following pledge of honesty: ``I understand that all tests, exams, homework, and programming assignments handed in for grading in this course are to be done individually, unless otherwise explicitly instructed by the professor. All homework andprogramming assignments handed in under my name are individual efforts: I am to solve, design, develop, and debug these assignments myself. I understand that it is permissible to discuss verbally general methods of solution and points of confusion with other students or the professor. However, the final submission willbe my own work. I will not copy anyone else's programs or written work, either electronically or by manual entry, nor will Iallow anyone to copy my work, nor will I have anyone other than myselfprepare any portion of my work. Copying of the solutions of others isexpressly forbidden. I will not allow any other person to create, norto copy, any part of my assignment handed in with my name on it.'' Notes: An ``incomplete'' grade will be assigned only under extremely exceptional circumstances, such as suddenly being hospitalized in a coma. If for some reason you cannot take the exams at their scheduled times, you must let me know before the exam isgiven, and the reason must be valid, for example, illness or participation in official university-sponsored events. Illness requiresa note from your doctor and university-sponsored activities require anote from your faculty sponsor. For reading news and sending/receiving e-mail,and for the programming assignments using the Java programming language, you will be using the department's network of Sun workstations running a variant of UNIX called Solaris. Everybody willbe given UNIX accounts as soon as possible. Course Outline: We will cover Chapters 1 through 8 of the text, except sections 2.2 and 2.3; in other words, we willcover all of Part I of the text except the concurrency topics (covered in MCS 361, Concurrent Programming). The week numbers areonly approximate. _Topic_________________Chapter____Week__#__Week_of___ Introduction 1 1 Sep 24 Processes 2.1, 2.4 2 Oct 1 Memory Management 3 3-4 Oct 8 File Systems 4 5-6 Oct 22 --- Test --- 7 Nov 5 Input/Output 5 8 Nov 12 Deadlocks 6 9 Nov 19 UNIX Case Study 7 10 Nov 26 MS-DOS Case Study 8 11 Dec 3 --- Final Exam --- Dec 10