University Politehnica of Bucharest Automatic Control and Computers Faculty Computer Science Department Course file 1. IDENTIFICATION DATA Course title: Operating Systems Design Course teachers: Octavian Purdila Type: advanced Lecture: 3 hours Laboratory: 2 hours Credits: 6 Semester: 2 Package: specialized curriculum (system programming) Prerequisites: Operating Systems, Computer Systems Structure, Microprocessor Design, Digital Computers, Assembly Programming, Programming, Data Structures and Algorithms 2. COURSE OBJECTIVES - - course: The Operating Systems Design course is an advanced course about the concepts that are used throughout the operating systems. The course is focused on a deep analysis of the operating system kernel and its subsystems. The analysis is performed on the Linux and Windows NT kernels. Its objectives are: understanding how the kernel's role in an operating system and how it and its subsystems work; understanding the basic mechanisms dealing with the kernel: concurency, processes, I/O processing, scheduling, virtual memory, etc. The course aims at fixing the theoretic aspects through related homeworks; the homeworks take the shape of kernel modules that interract directly with the operating system kernel. applications: The laboratory is concerned with fixing the concepts presented during the lectures through practical activities and establishing an advanced level of C programming skills. The laboratory aims at accomplishing this through using the kernel programming interface (kernel API) and by acknowledging the mechanisms and the constraints when dealing with kernel programming. The lab objectives are: getting used to the data structures, types and functions the kernel uses; understanding the concepts that stand at the basis of kernel subsystem funtion; gaining advanced knowledge of programming and debugging kernel modules; understanding how the kernel affects the applications. 3. SPECIFIC ABILITIES Advanced C programming skills; understanding the source code in a given program; understanding hardware functions and how to program it; understanding the programming constraints when using a freestanding programming environment. Skills in addressing problems in operating systems, including the use of commands and working with available documentation and the source code. 4. SYLLABUS a. Course: Chapter 1 2 3 4 5 6 7 8 9 Content Introduction System calls Defferable functions Address space Physical memory Virtual memory Filesystems Networking Assembly and linking Hours 3 4 5 5 5 6 5 6 3 Total:24 b. Application: 1 2 3 4 5 6 7 8 9 10 Introduction Kernel modules Kernel API Device drivers Interrupts Filesystem Drivers Defferable actions Block device drivers Networking Plug&play 5. GRADING a) Graded activities : lab test 1: 1.5p lab test 2: 1.5p final exam: 3p lab activity: 2p skill test: 2p b) Minimum requirements for graduating this course: 50% of total points c) Final grade: 2 3 3 3 3 4 3 2 3 2 Total: 28 rounding total points: 41-54 – grade 5; 55-64 – grade 6; 65-74 – grade 7; 75-84 – grade 8; 85-94 – grade 9; 95-100 – grade 10 6. METHODOLOGICAL INFORMATION The lecture starts with a slide-based presentation, as a basis for an interactive presentation with questions and detailed discussions about the concepts introduced on the slides. The slides contain a small amount of information; the emphasis goes on consulting the available bibliography. The slides are available for download starting with several days before the course, and students are required to read them in advance in order to facilitate a smooth presentation, focused on problem-centered analyses rather than mere definitions. The course material includes numerous practical examples that ensure a strong connection between lectures and laboratory activities. Laboratory activities serve to illustrate and structure the main concepts introduced in course lectures, and to assist students in solving assignment tasks. Laboratory materials are available in advance and students are required to read them in preparation for their practical activity. Assignment tasks are designed to assist students in solving kernel API usage problems and giving them a basic set of skills for interracting with the kernel and its subsystems. Questions and discussions on any aspect of the structure, content or design of the lecture or the laboratory activities can be posed directly during class hours or posted on the course site. Students are encouraged to give real-time feedback about the material for the lecture and practical activities. 7. BIBLIOGRAPHY Tanenbaum, A.S. - Modern Operating Systems, 2/E, Prentice Hall, 2001 Tanenbaum, A.S. - Computer Networks, 4/E, Prentice Hall, 2003 Tanenbaum, A.S. - Structured Computer Organization, 5/E, Prentice Hall, 2006 Levine, J.R. - Linkers and loaders, Morgan-Kauffman, 1999 Stevens, R. W. - Advanced Programming in the Unix Environment, AddisonWesley, 1992 Harris, D.B., Hill, M.B., Vyas, J. - Debian GNU/Linux 3.1 Bible, John Wiley & Sons, 2001 Simpson, A. - Windows XP Bible, John Wiley & Sons, 2004 HEAD OF DEPARTMENT COURSE TEACHERS Prof. dr. ing. Nicolae Ţăpuş ing. Octavian Purdilă