OPERATING SYSTEMS - channel 1

ING-INF/05 - 6 CFU - 1° Semester

Teaching Staff

LUCIA LO BELLO


Learning Objectives

The students shall acquire knowledge and skills about:

- Operating system design and programming in Linux/UNIX environments.

- Resource virtualization and management (CPU, central memory, secondary memory, peripherals).

- The concept of process and thread and how to handle both.

- Concurrency control on mutual exclusive resources.

- Linux shell commands.

The student will develop programming skills with the system calls for:

-process creation and management, signal generation and handling, interprocess communication;

- concurrency control;

- creating and managing multithread applications.



Detailed Course Content

Operating Systems Introduction

Operating systems concepts. History and classification of operating systems. The POSIX standard.

System calls.

Operating systems structure. Multiprocessor OS structure.

Processes and Threads

Processes, Threads.

Signals and signal handling.

Thread implementation. POSIX threads. The pthread.h library.

Scheduling. Real-time systems scheduling. Linux scheduling.

Concurrency.

Critical regions. Race conditions. Mutual exclusion. Busy waiting. Semaphores and Mutexes. Program examples.

Interprocess Communications

Unnamed Pipes, FIFOs, Message queues, Shared memory.

Classical IPC problems. Program examples.

Client/server model. Sockets.

Deadlocks

Deadlock characterization, detection, prevention, avoidance.

Memory Management.

Virtual memory. Page replacement. Segmentation.

File Systems.

File. Directories. File system implementation.

File system examples.

Input and Output.

I/O Hardware. I/O Software.

Case Studies

Linux, Windows.



Textbook Information

1) Theory: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, “Sistemi Operativi, Concetti e esempi”, Nona Edizione, Pearson, ISBN 9788865183717.

Alternative option for theory: Andrew S. Tanenbaum, “I moderni sistemi operativi 4/Ed.", 2016, ISBN 9788891901019.

2) Programming part: R. Stones, N. Matthew, “Beginning Linux Programming”, 4th edition, Wrox Press, 2007. Disponibile in rete




Open in PDF format Versione in italiano