It is required the ability to write code in some imperative high level programming language: the student should properly use the main constructs of high level programming languages, and has perfectly clear in mind the notions of compiler, interpreter, static error and runtime error. Moreover, it is required the knowledge of the main components of the hardware, in particular the role of CPU, RAM, Unit Control and ALU; the student must know the notion of instruction set and be able to write down simple programs in assembly, possibly with recursive procedures. The knowledge and abilities needed for successfully attending this course are delivered in the fundamental courses of Programmazione and Architetture degli Elaboratori, which, therefore, are mandatory prerequisites.
Course Prerequisites
It is required the ability to write code in some imperative high level programming language: the student should properly use the main constructs of high level programming languages, and has perfectly clear in mind the notions of compiler, interpreter, static error and runtime error. Moreover, it is required the knowledge of the main components of the hardware, in particular the role of CPU, RAM, Unit Control and ALU; the student must know the notion of instruction set and be able to write down simple programs in assembly, possibly with recursive procedures. The knowledge and abilities needed for successfully attending this course are delivered in the fundamental courses of Programmazione and Architetture degli Elaboratori, which, therefore, are mandatory prerequisites.
Teaching Methods
48 hours out of 72 will be dedicated to lectures and 24 to exercises. The lectures are delivered by the instructor and conducted with the aid of slides, which are made available to students on the e-learning website. The exercises will be proposed by the instructor and solved interactively through cooperation among students and between students and the instructor.
Assessment Methods
Final exam. It consists of a written test. Students will be required to solve exercises that demand a deep understanding of the topics covered during the lectures. In particular, the exercises are designed to assess whether the student knows the functionalities of operating systems and is able to implement simple features. The exam usually lasts two hours. The exercises must be solved without the aid of slides or any other type of material.
Contents
Role and objectives of the operating system Typical functionalities of an operating system Evolution of hardware and operating systems Machine organization Interrupts and their implementation User/kernel modes and transitions Role of interrupts Processes Scheduling with and without preemption Process Control Block (PCB) Context switch Threads Memory Management Unit (MMU) Memory layout of programs Paging and virtual memory Exercises on synchronization