The aim of this course is to teach how operating systems manage computer resourses acting as an extended machine and how to use them in specific applications. The specific learning goals are:
- the management of CPU times given the constraints of I/O operations and other events;
- the concept of process, the decomposition of computer activity into processes and how processes communicate;
- how CPU scheduling work;
- the concept of system call and the definition of system calls in UNIX/Linux systems;
- learning operating system classification and the oragnization of OS kernel.
The course promotes acquisition of using and programming skills within operating systems like:
- to assess general purpose operating systems according to their main features;
- to use terminal commands and to handle the processed and general state of an operating system;
- to program applications consisting of multiple processes and to manage their communication and interaction;
- to know the issues of concurrent programming and to program access to shared data in simple applications.