Knowledge and understanding: Upon completion of the course, the student will have acquired the knowledge of the basic concepts inherent to the design of operating systems and the writing of programs that exploit System Calls in Linux / UNIX environment. At the end of the course the students: will have acquired knowledge of the structure of Operating Systems; the relevant project issues and policies used for virtualization and the management of resources (CPU, main memory, mass storage, peripherals); will have acquired knowledge about the concepts of process and thread and their management; will have acquired knowledge on management techniques of mutually exclusive resources; will have become familiar in the interaction with the Linux shell.
Applying knowledge and understanding: at the end of the course the students will be able to write applications containing system calls for the: creation and management of processes; send / signal management; interaction and communication between processes; manage competition over shared resources; creation of multithreaded applications.
Making judgements. On completion of the course, the student will be able to choose a suitable software solution based on Linux API for each of the subjects treated inside the course.
Communication skills. On completion of the course, the student can communicate his conclusions and recommendations about design and use of operating systems with the argumentation of the knowledge and rationale underpinning these, to both specialist and non-specialist audiences clearly and unambiguously.
Learning skills. On completion, the student will be able to continue to study in a manner that may be largely selfdirected or autonomous.
The course is essentially based on lectures, which include the development of exercises by the teacher. The proposed exercises are addressed by the teacher through the use of computer connected to the projector. The course also includes practical exercises carried out by the students. These exercises are carried out in the University's multimedia rooms. Each student is assigned a task that must be performed on the computer. The teacher supervises the work of the students by providing the explanations and teaching aids necessary to complete the assigned tasks. The methods of carrying out the teaching described above allow the achievement of the pre-established training objectives, which include the acquisition of knowledge and the ability to apply knowledge.
If the teaching is given in a mixed or remote way, the necessary changes with respect to what was previously stated may be introduced, in order to respect the program envisaged and reported in the syllabus.
The topics in bold represent the minimum skill to be acquired.
UNIT 1: INTRODUCTION TO OPERATING SYSTEMS. GNU/LINUX. SYSTEM CALL. VIRTUALISATION.
UNIT 2: PROCESSES AND THREAD
UNIT 3: SCHEDULING OF CPU
UNIT 4: SYNCHRONISATION.
UNIT 5: INTER PROCESS COMMUNICATION (IPC)
For the theory:  Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, “Operating System Concepts”, Pearson.
or:  Andrew S. Tanenbaum, “I moderni sistemi operativi", Pearson.
For the technical examples and exercitations:  R. Stones, N. Matthew, “Beginning Linux Programming”, 4th edition, Wrox Press, 2007.