Operating systems structure and operations; processes, threads and CPU scheduling; deadlocks characterization and management; main and virtual memory management; file system interface and implementation; mass-storage structure and I/O system management.
Shell commands in UNIX/Linux. The C programming language. UNIX/Linux system calls. System programming and inter-process communication in UNIX/Linux. Basics of kernel programming.
Theory
Required Textbook: Sistemi Operativi. A.Silberschatz & P.B.Galvin & G.Gagne, 10ed., Addison-Wesley.
Reference Textbooks:
- Sistemi Operativi. P.Ancillotti & M. Boari & A. Ciampolini & G. Lipari, 2ed., McGraw-Hill.
- I Moderni Sistemi Operativi. A.S. Tanenbaum & H. Bos, 4ed., Pearson.
Laboratory (reference textbooks)
- The Linux Command Line, W. Shotts.
- C didattica e programmazione, A. Kelley, I. Pohl, Pearson, 2nd Edition.
- Understanding the Linux kernel, D. Bovet, M. Cesati, O’Reilly.
- J. Erickson, L’arte dell’Hacking, vol 1, 2008.
Learning Objectives
Knowledge and understanding:
operating systems’ internal structure; operations of operating systems’ components; issues related to design and implementation of operating systems’ components.
Practical application of knowledge and understanding:
deep comprehension of hardware/software relationships and of operating systems interaction with user programs; more conscious and effective use of operating systems and of the tools they provide.
Class lectures: 48 (hours).
Laboratory activities: 36 (hours).
Further information
Attendance to class lectures and laboratory activities: recommended.
Teaching Tools UNIFI E-Learning: https://e-l.unifi.it/.
Prof. Pugliese’s office hours: usually on Tuesday from 2.00pm to 3.30pm, make an appointment by e-mail (rosario.pugliese@unifi.it).
Dott. Ceccarelli’s office hours: by appointment. Contact the teacher by e-mail (andrea.ceccarelli@unifi.it).
Type of Assessment
The exam consists of two tests, one concerning the theory part (with weight 2/3 on the determination of the final mark) and one concerning the laboratory part (with weight 1/3).
The test concerning the theory part consists of an oral exam that may deal with any of the topics covered in class. In addition to theory questions, the test may require carrying out exercises to be solved through the practical application of the theory. The oral exam aims to evaluate the understanding of the internal structure of operating systems, of the functionality of their main components, and of the problems inherent in their design and implementation. In addition to the knowledge of the topics presented in class and the ability to apply the knowledge acquired to solve new problems, the clarity of the presentation, the appropriate use of specialist vocabulary, and the ability to relate different topics of the program to each other will also be assessed.
The test for the laboratory part consists of i) the development of a software project, and a short report, in groups of maximum 3 students, and ii) an oral test to discuss the project and verify of knowledge of the topics of the laboratory part. The mark of the laboratory part is the average of the evaluation of the software project and the oral test. The software project is evaluated according to the criteria: i) quality
of the report; ii) quality of the code; iii) quality of the structure and organization of the files; iv) quality of the compilation process; v) proper functional behaviour of the project. If the project and the related discussion are deemed sufficient, the oral test is based on two sets of questions (GROUP A, 20 questions, and GROUP B, 80 questions), which will be available on the course website. In particular, as a necessary condition for passing the oral test, no gaps are allowed in the answers to GROUP A questions. Answering only questions from GROUP A leads to a mark no higher than 20 to the laboratory part.
Course program
Operating system’s main functions. Mode of operation. Interrupts. System calls. Processes. State diagram. Operations on processes. Processes and threads. CPU management. Scheduling policies. Techniques for deadlocks prevention and detection. Main memory management. Contiguous allocation. Paging. Segmentation. Virtual memory. Pages replacement techniques. Secondary-storage management. The file system. Directories and files. Files access methods. Files allocation on disk. File system interface and implementation. Management of I/O devices: polling, interrupt, DMA. Disk requests’ scheduling policies. Case studies: implementation of some concepts in Windows and UNIX/Linux.
Laboratory module: Shell commands in UNIX/Linux. The C programming language UNIX/Linux system calls. System programming and inter-process communication in UNIX/Linux. Basic concepts of system administration UNIX/Linux. Kernel programming.