Situato nel primo semestre del terzo anno, l'insegnamento di "Sistemi operativi" è essenziale e obbligatorio per un ingegnere informatico e mira a fornire un vantaggio decisivo nella comprensione e nell'utilizzo avanzato dei sistemi operativi.
Questo insegnamento vi guiderà attraverso gli elementi cardine dell'architettura dei sistemi operativi, per poi equipaggiarvi con le conoscenze e le abilità pratiche indispensabili per la programmazione di sistema e la gestione dei processi concorrenti.
Vi specializzerete nei sistemi operativi UNIX-like, con un focus intensivo su Linux. Imparerete a sfruttarne appieno le potenzialità, non solo attraverso l'uso esperto dei comandi utente e di amministrazione, ma anche sviluppando la capacità di programmare direttamente a contatto con le funzionalità più profonde del sistema.
Mandatory course in the Bachelor's Degree program in Computer Engineering, it is held in the first semester of the third year.
Its main objectives are to present the basic elements of the architecture of the operating system and to teach the concepts and methods of concurrent programming.
The course permits students to acquire specific knowledge about UNIX-like operating systems, with particular reference to the Linux system. It also introduces operating system management by means of shell commands, shell scripts, administration commands, and system calls.
Al termine dell’insegnamento, lo/la studente sarà in grado di:
• Descrivere il ruolo di un sistema operativo nell’organizzazione e nella gestione delle risorse hardware e software di un elaboratore.
• Spiegare i principali servizi e le astrazioni offerti da un sistema operativo, con particolare riferimento alla gestione dei processi, della memoria, dei file e dei dispositivi di input/output.
• Confrontare le principali caratteristiche dei sistemi operativi moderni, riconoscendo le specificità fondamentali dei sistemi UNIX/Linux.
• Utilizzare l’interfaccia a riga di comando di UNIX/Linux per operare su file, directory, permessi, processi e flussi di dati.
• Combinare comandi, filtri, ridirezioni e pipe della shell per elaborare dati e risolvere semplici problemi.
• Progettare e realizzare script di shell per automatizzare sequenze di operazioni e semplici attività di gestione del sistema.
• Utilizzare le principali chiamate di sistema e le librerie POSIX per accedere a file e dispositivi e per creare, controllare e terminare processi e thread.
• Analizzare l’esecuzione concorrente di processi e thread, individuando condizioni di competizione, interferenze e possibili situazioni di stallo.
• Selezionare e applicare le primitive di sincronizzazione e di comunicazione appropriate per coordinare processi e thread concorrenti.
• Progettare e implementare semplici programmi concorrenti in ambiente UNIX/Linux, verificandone la correttezza rispetto ai requisiti di sincronizzazione e di comunicazione.
• Classification of modern operating systems.
• Main operating system functionalities.
• Administration of UNIX/Linux systems by means of commands, shells, filters, scripts and scripting languages.
• The architecture of an operating systems considered as a resource manager.
• Process and threads manipulation, i.e., the ability to create, synchronize, terminate processes and threads.
• Use of concurrent programming to solve simple problems.
• Classical synchronization problems.
Per affrontare con successo questo insegnamento, è essenziale possedere solide basi nelle seguenti aree:
• Architettura dei Sistemi di Elaborazione:
o Profonda comprensione dell'architettura di un calcolatore, con particolare attenzione alla struttura della CPU, all'organizzazione gerarchica della memoria e alla rappresentazione dei tipi di dato.
o Conoscenza del funzionamento e dell'utilizzo dei meccanismi di interruzione (interrupt).
• Programmazione Avanzata e Problem Solving in C:
o Padronanza completa della sintassi del linguaggio C, dai costrutti fondamentali a quelli più avanzati.
o Abilità nell'utilizzare e implementare strutture dati statiche e dinamiche (ADT), quali vettori, matrici, liste, code, pile, alberi, ecc.
o Comprovata capacità di risolvere problemi di complessità elevata attraverso la progettazione e la scrittura di programmi efficienti in linguaggio C.
• Knowledge of the language C syntax and semantics.
• Good programming skills in C language and the ability to solve problem by writing programs.
• Knowledge of computer system architecture, with specific reference to the processor and memory organization an to data types and data structures.
• Knowledge of the interrupt mechanism.
• Basics of an assembler language.
• Architettura di un sistema operativo (3.0 h):
o Introduzione e classificazione dei sistemi operativi.
o Struttura di un sistema operativo, risorse gestite e moduli principali.
o Possibili organizzazioni di un kernel.
• Aspetti base del sistema operativo Linux (6.0 h):
o Comandi utente.
o Comandi per la gestione del sistema.
o Demo sui comandi, esempi ed esercizi.
• Aspetti avanzati del sistema operativo Linux (5.5 h):
o Shell.
o Linguaggi di script.
o Esempi ed esercizi.
• Il file system (3.0 h):
o File e allocazione.
o Architettura di un file system.
o Esempi ed esercizi.
• Processi (11.0 h):
o Introduzione ai processi e alla programmazione concorrente (system call fork e wait).
o Controllo avanzato dei processi (system call exec e system).
o Segnali.
o Gestione e comunicazione tra processi (pipe).
o Esempi ed esercizi.
• Thread (6.0 h):
o Concetti principali (esecuzione, passaggio parametri, attesa, etc.).
o Differenze tra thread e processi.
o Tipologie e caratteristiche dei thread.
o La libreria Pthread in ambiente UNIX-like.
o Esempi, esercizi e risoluzione di problemi paralleli.
• Sincronizzazione di processi e thread (7.5 h):
o Soluzioni software e hardware al problema della sincronizzazione.
o Variabili e primitive semaforiche.
o Problemi di sincronizzazione classici (produttore e consumatore, lettori e scrittori, filosofi, etc.).
o Esempi, esercizi si sincronizzazione e risoluzione di problemi paralleli.
• Lo scheduling dei processi (1.5 h).
o Esempi ed esercizi.
• Il problema dello stallo (1.5 h).
o Esempi ed esercizi.
• Esercitazioni di laboratorio su tutti gli argomenti precedentemente indicati su un sistema operativo Linux (15.0 h).
• Operating system architecture (3.0h)
o Operating system classification.
o Structure of an operating system, managed resources and modules.
o Possible organizations of the operating system kernel.
• The Linux operating system (6.0h)
o User commands.
o System commands.
• The advanced Linux operating system (5.5h)
o Shell.
o Script languages.
• The file system (3.0h).
• Processes (11.0h)
o Introduction to processes and concurrent programming.
o Advanced process control.
o Signals.
o Inter-process communication.
• Threads (6.0h)
o Main concepts.
o Differences from processes.
o The PThread library.
• Processes and thread synchronization (7.5h)
o Software and hardware solutions to synchronization.
o Semaphore variables and primitives.
o Classical synchronization problems (producer and consumer, readers and writers, philosophers, etc.).
• CPU scheduling (1.5h).
• Deadlock (1.5h).
L'insegnamento è organizzato in lezioni, esercitazioni e laboratori.
Non vi è alcuna distinzione formale tra ore di lezione e ore di esercitazione. Le esercitazioni, relative ai vari argomenti, sono svolte contestualmente alla trattazione della parte teorica.
L'insegnamento comprende inoltre circa 15 ore di esercitazioni in laboratorio assistite da esercitatori e borsisti.
L’attività di laboratorio comprende esercitazioni pratiche su tutti gli argomenti trattati durante le lezione e le esercitazioni in aula. Per questo motivo i laboratori sono parte integrante e fondamentale del corso.
Le esercitazioni di laboratorio sono svolte utilizzando un sistema operativo Linux (Ubuntu o similare) e prevedono l’utilizzo di tutti gli strumenti base del sistema operativo stesso, dai comandi e dai linguaggi di shell, alla scrittura di script, al file-system a la sua gestione, allo sviluppo di programmi concorrenti in linguaggio C.
The course can be divided into theory lectures, practice lessons and laboratories. There is no formal distinction between theory and practice as almost all course topics involve theory and practice aspects developed during the classroom lessons by the teacher.
Laboratories (about 15 hours overall) allow students to solve typical problems (with complex commands, filters, scripting or C programs on a Linux personal computer) and applying all theory and practice aspects analyzed during the classroom lessons.
• Materiale fornito dal docente:
o Trasparenze proiettate in aula.
o Materiale utilizzato in laboratorio, con particolare riferimento alle eserctazioni di laboratorio e alle relative soluzioni.
o Dispense e opuscoli su argomenti specifici.
• Materiale (didattico e non) a disposizione sul World Wide Web.
• Testi in forma cartacea:
o A. Silbershatz, P. Galvin, G. Gagne, " Sistemi Operativi. Concetti ed Esempi ", Pearson Education Italia.
o A. S. Tanenbaum, H. Bos, “I moderni sistemi operativi”, Pearson Education Italia.
o W. R. Stevens, S. A. Rago, "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company.
All lessons' handouts and laboratory exercises (with solutions) are available from the teacher or the course Web site.
The World Wide Web is also an excellent source of material for selected and specific topics.
The reference texts, covering most, but not all, topics, are the following:
• A. Silbershatz, P. Galvin, G. Gagne, “Operating System concepts”, John Wiley & Sons, Inc.
• A. S. Tanenbaum, H. Bos, “Modern Operating Systems”, Pearson.
• W. R. Stevens, S. A . Rago, "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company.
Slides; Dispense; Libro di testo; Libro di esercitazione; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Video lezioni tratte da anni precedenti; Strumenti di auto-valutazione;
Lecture slides; Lecture notes; Text book; Practice book; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (current year); Video lectures (previous years); Self-assessment tools;
Modalita di esame: Test informatizzato in laboratorio; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Computer lab-based test; Computer-based written test in class using POLITO platform;
...
L’esame consiste in un’unica prova scritta, svolta in presenza e con il computer sulla piattaforma «Esami».
Il corso non prevede una prova orale, salvo il caso, indicato di seguito, in cui sia necessario accertare la regolarità della prova scritta. Gli studenti devono presentarsi muniti di un computer portatile personale idoneo allo svolgimento dell’esame. La prova si svolge in un’aula dotata di prese di corrente. Durante la prova, i docenti forniranno l’assistenza necessaria in caso di eventuali problemi tecnici o di utilizzo della piattaforma.
Gli studenti sono tenuti a conoscere le disposizioni dell’Ateneo relative allo svolgimento degli esami, a procurarsi gli strumenti hardware e software necessari e a verificarne il corretto funzionamento e l’aggiornamento prima della prova. Devono inoltre rispettare il Codice etico dell’Ateneo e segnalare tempestivamente ai docenti eventuali problemi tecnici o infrastrutturali. Qualora emergano elementi che facciano presumere comportamenti illeciti durante la prova scritta, i docenti si riservano il diritto di annullarla o di sottoporre il candidato a un’ulteriore verifica orale.
La prova comprende da 6 a 18 domande, aperte e/o chiuse. Il punteggio massimo attribuibile a ciascuna domanda è indicato esplicitamente nel testo della prova.
Le domande aperte sono valutate dai docenti e ricevono un punteggio compreso tra zero e il massimo indicato, in funzione della correttezza, della completezza e della chiarezza della risposta.
Le domande chiuse possono prevedere risposte numeriche, vettoriali o a scelta multipla, ad esempio “vero/falso”. Per le risposte numeriche e vettoriali, la piattaforma effettua una prima valutazione automatica, assegnando il punteggio massimo alla risposta riconosciuta come corretta e zero a quella riconosciuta come errata. Tale valutazione viene successivamente verificata dai docenti, che possono attribuire alla risposta un punteggio compreso tra zero e il massimo previsto, tenendo conto anche del procedimento seguito e di eventuali errori formali o di inserimento.
Nelle domande a scelta multipla del tipo vero/falso, il punteggio è calcolato automaticamente dalla piattaforma. Sia P il punteggio massimo della domanda, C il numero delle opzioni corrette ed E il numero delle opzioni errate:
• Ogni opzione corretta selezionata vale +P/C punti.
• Ogni opzione errata selezionata contribuisce con −P/E punti.
• Le opzioni non selezionate non producono né punti né penalità.
Il punteggio complessivo della domanda può quindi variare da −P, se vengono selezionate tutte e sole le opzioni errate, a +P, se vengono selezionate tutte e sole le opzioni corrette. Se vengono selezionate tutte le opzioni, il punteggio è pari a zero. La penalizzazione delle selezioni errate è necessaria per evitare che la selezione indiscriminata di tutte le opzioni consenta di ottenere il punteggio massimo.
Per tutte le domande chiuse è necessario rispettare rigorosamente il formato di risposta specificato nel testo.
Le domande sono volte a verificare:
• le conoscenze acquisite durante il corso, relative sia agli aspetti teorici sia a quelli applicativi;
• la capacità di risolvere problemi mediante le conoscenze teoriche e pratiche acquisite, con particolare riferimento ai comandi di shell, ai linguaggi di scripting, agli aspetti fondamentali della programmazione di sistema e alla programmazione concorrente.
La prova dura 130 minuti.
Durante la prova non è consentito consultare appunti, libri di testo o altro materiale, né utilizzare telefoni cellulari, tablet, smartwatch o altri dispositivi elettronici. È ammesso esclusivamente il computer portatile utilizzato per accedere alla piattaforma «Esami». Le eventuali dispense predisposte dai docenti e ritenute necessarie allo svolgimento della prova, ad esempio quelle relative ai comandi della shell Linux, agli script Bash e alla libreria Pthread, saranno rese disponibili direttamente sulla piattaforma. Lo stesso vale per l’eventuale calcolatrice integrata nella piattaforma.
Il punteggio massimo conseguibile nella prova è pari a 36 punti ed è ottenuto sommando i punteggi, comprese le eventuali penalità, attribuiti alle singole domande. Il punteggio complessivo viene arrotondato per eccesso all’intero successivo. La soglia per l’attribuzione della lode è pari a 32 o 33 punti, in funzione della prova; i punteggi pari o superiori a tale soglia sono convertiti in 30 e lode. Gli altri punteggi superiori a 30 vengono convertiti in 30/30.
Gli studenti e le studentesse con disabilita o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unita Special Needs, al fine di permettere al/la docente la declinazione piu idonea in riferimento alla specifica tipologia di esame.
Exam: Computer lab-based test; Computer-based written test in class using POLITO platform;
The exam includes a written test.
During the exam it is not possible to use any book or note but a few reference notes made available by the teachers on specific topics (Linux shell commands, BASH shell scripts, and pthreads library).
The test lasts 100 minutes and includes 6 open questions.
These questions are related to topics presented in the lectures or developed during the classroom and laboratory practices. Those usually involve showing the aquire knowledge in terms of shell commands, script programs, and concurrent programming.
The examination text includes all questions (exercises) and the required space to develop and insert responses and solutions. Additional sheets are not required but permitted when necessary.
It is possible to withdraw in any moment during the written test.
The written test is evaluated as follows:
• Each exercise has a weight equal to 6 points.
• The final mark is equal to the sum of all exercise marks.
• The maximum mark which can be obtained is 36 (6x6=36). All marks larger or equal to 32 or 33 (depending on the written text) will be automatically covnerted in 30 with honour.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.