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.
Required Textbook: Sistemi Operativi. A.Silberschatz & P.B.Galvin & G.Gagne, 10ed., Addison-Wesley.
- 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.
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).
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 Thursday from 2.00pm to 3.30pm, make an appointment by e-mail (email@example.com).
Dott. Ceccarelli's office hours: by appointment. Contact the teacher by e-mail (firstname.lastname@example.org).
Type of Assessment
The exam consists of two tests, one concerning the theory part (weighing 2/3 on the determination of the final grade) and one concerning the laboratory part (weighing 1/3).
The theory test consists of a written exam that covers all the topics of the program carried out in class. The test includes both theory questions and exercises to be solved through the practical application of theory. At the request of the student or teacher, if the student has achieved a score equal to or greater than 17 in the written test, it is also possible to take an oral exam. In this case, the grade of the theory test is determined by the arithmetic mean of the scores obtained in the written and oral tests.
The theory test aims to evaluate the understanding of the internal structure of operating systems, of the functionalities 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 problems, the clarity of the presentation, the appropriate use of the specialized vocabulary and the ability to relate different topics of the program.
The laboratory test consists of i) developing a software project, with a short report, in groups of maximum 3 students, and ii) an oral test that includes the discussion of the project and the verification of knowledge of the topics covered in the laboratory module. The grade of the laboratory test is determined by the average of the scores obtained in the evaluation of the software project and in the oral exam. The project is evaluated according to the criteria: i) quality of the relationship; ii) quality of the code; iii) quality of the file structure and organization; iv) quality of the compilation process; v) correct functional behavior of the project. The verification of the topics covered in the course through an oral exam, once it is established that the project and the related discussion are sufficient, is based on two sets of questions (GROUP A, consisting of 20 questions, and GROUP B, consisting of 80 questions), which will be made available on the course website. In particular, as a necessary condition for passing the oral exam, gaps in the answer to the questions of GROUP A are not allowed. Answering only the questions of GROUP A allows to obtain a score for the part of the laboratory module not exceeding 20.
Due to the COVID-19 emergency, face-to-face examination methods can be switched to remote mode, following any University provisions. In addition, the written exam for the theory part can be switched to an oral exam. Any changes will be communicated exclusively through the course website.
Operating systems main objectives and tasks. Resource management. Interrupt. Operating system services. User interfaces. System calls and APIs. Concurrent model and processes. States diagram. Process scheduling. Process operations. Processes and threads. Multithreading models. CPU management. Scheduling criteria and algorithms. Deadlock: characterization and management methods. Main memory management. Logical and physical address spaces. Swapping. Contiguous memory allocation. Segmentation. Paging. Page replacement algorithms. Secondary memory management. The file system: interface and implementation. Directories and files. File access and allocation methods. Free space management. Management of an I/O device: polling, interrupt, DMA. Disk structure and management. NVM devices. Scheduling of disk requests. RAID structure.
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.