General Information Spring 2012: COP 4932 - Computer Systems Design Principles Instructor: Dan Marinescu Office: HEC 304; Email: dcm@cs.ucf.edu Class: M – Wd; 3 - 4:15 PM, HEC 103 Office hours: M – Wd; 2- 3 PM Class Web site: Textbook: “ Principles of Computer Systems Design; An Introduction'' by Jerome Saltzer and Frans Kaasohoek. Publisher: Morgan Kaufmann, 2009, ISBN 978-0-12-374957-4. Class objectives: Give the students a fresh look at basic principles guiding the design and implementation of operating systems. The focus of the class on the identification of the most important questions the designer of an operating system has to address and “why” a solution is better than others, while traditional operating systems classes focus on “how” existing systems are implemented. Another major departure from the more traditional approach in covering operating systems is the emphasis on performance; several lectures cover computer system performance analysis. We also emphasize the “big picture,” the relationship of operating systems with other subjects from undergraduate curriculum including: computer architecture/computer organization, programming languages, algorithms, networking, databases, modeling and performance analysis. This course covers topics on the engineering of computer software and hardware systems: techniques for controlling complexity; strong modularity using client-server design, virtual memory, and threads; networks; atomicity and coordination; performance. The discussion is anchored in reality and abstract subjects are followed by an in depth analysis of case studies. Class attendance and grading: The students are strongly encouraged to attend every class and be active. Our policy is simple, based on professional standards: on exams you should not collaborate. On all other assignments you are welcome to work with anyone else on ideas and understanding, but your writing should be your own and you should carefully acknowledge all contributions of ideas by others, whether from classmates or from papers you have read. Acts of academic dishonesty will not be tolerated; when detected they lead to unconditional failure of the class. The grading scheme is: Homework and research paper: 30% Project: 35% Midterm: 10% Final: 25% Class outline A. Week 1 a. Class organization b. System complexity c. Sources of complexity d. Coping with complexity e. Complexity of computing and communication systems f. Basic abstractions i. Communication Links ii. Interpreters iii. Memory B. Weeks 2 - 3 a. Networking concepts i. Network architecture; network core; routing ii. Networking protocols (data link, network, transport, application protocols) iii. Congestion control iv. Latency and bandwidth; network performance b. The Internet as a complex system C. Week 4 – Coping with complexity a. Modularity b. Layering c. Hierarchy d. Naming e. Fundamental abstractions – interpreters, memory, communication channels f. The hardware layer i. Processors ii. Memory iii. Disks iv. RAID D. Week 5 a. The software layer i. The kernel ii. File systems b. Case study – the Unix file system c. Naming in Unix E. Week 6 - Naming a. Generic naming model b. Name mapping algorithms c. Practical design of naming schemes d. Metadata and name overloading e. Addresses and names f. Pitfalls in naming g. Unique names and lifetime of names h. Case study URLs (Uniform Resource Locators) F. Week 7 - Modularity a. Soft modularity b. Procedure call conventions and the memory map c. Enforced modularity d. Clients and services e. Heterogeneity f. Remote procedure call (RPC) g. Communication through an intermediary h. Case study – the Web, HTTP, HTML. G. Week 8 a. Case study: DNS - the Internet Domain Name Service b. Case study: NFS – the Network File System c. Peer-to-peer systems d. Midterm H. Week 9 - Processor virtualization a. Virtualization b. Processor virtualization- threads i. Thread state ii. Thread management iii. Kernel and application threads c. Address space d. Processor sharing e. Thread coordination with a bounded buffer f. The YIELD system call I. Week 10 - Concurrency a. Safety, Liveness, Bounded-Wait, Fairness b. Critical sections – a solution to critical section problem c. Locks and Before-or-After actions. d. Hardware support for locks e. Deadlocks f. Signals g. Semaphores h. Monitors J. Week 11 a. WAIT, NOTIFY, AWAIT, ADVANCE, SEQUENCE, TICKET systems calls for thread coordination with a bounded buffer. b. Processor switching c. The scheduler and the processor thread d. Basic scheduling concepts and objectives e. Scheduling algorithms i. First In first Out - FIFO ii. Shortest Job first, SJF – optimality of SJF iii. Round robin iv. Priority scheduling v. Multiple queues, multiple queues with feedback. f. Comparison of scheduling algorithms K. Week 12 – Memory virtualization a. Memory virtualization b. Virtual memory and caching c. Paging, segmentation, paging and segmentation d. Dynamic address translation e. Page fault f. Multi-level memories g. Name resolution in multi-level memories h. The Multi-Level-Memory-Management and the Scheduler L. Week 13 a. Performance of multi-level memories b. Page replacement algorithms i. FIFO ii. OPTIMAL iii. LRU iv. MRU c. Belady anomaly d. The subset property of a page replacement algorithm and total ordering e. Simulation analysis of page replacement algorithms f. Practical implementation of page replacement – the clock algorithm M. Week 14 a. Performance of computing and communication systems b. Performance metric c. Analytical models d. Elements of queuing analysis; M/M/1 systems e. Simulation of computing and communication systems f. Discrete event simulation g. Process-oriented simulation h. Distributed simulation N. Week 15 a. Review b. The big picture