08574 - SISTEMI OPERATIVI

Anno Accademico 2025/2026

  • Docente: Renzo Davoli
  • Crediti formativi: 12
  • SSD: INF/01
  • Lingua di insegnamento: Italiano
  • Moduli: Renzo Davoli (Modulo 1) Luca Sciullo (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Bologna
  • Corso: Laurea in Informatica (cod. 8009)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente conosce la struttura e i metodi di costruzione dei moderni sistemi operativi multiprogrammati. È in grado di installare, programmare e amministrare un sistema operativo.

Contenuti

  • Modulo 1:

    Sistemi Operativi: definizione e storia

    Programmazione Concorrente

    Struttura dei S.O.

    Scheduling

    Gestione Risorse

    Gestione Memoria Centrale

    Gestione memoria secondaria

    File System

    Sicurezza nei Sistemi Operativi

     

    Modulo 2:

    Linguaggio C

    System Call

    Tool per la programmazione

    Shell Scripting

    Linguaggio Python


  • Testi/Bibliografia

    Consigliati (sono più o meno tutti equivalenti)

    • Silbershatz, Galvin, Gagne. Applied Operating System Concepts. Addison Wesley (qualsiasi edizione)
    • Gary Nutt. Operating Systems - A modern Perspective. Addison Wesley
    • Tanenbaum, Woodhill. Operating System Design and Implementation. Prentice Hall
    • William Stallings. Operating Systems. Prentice Hall
    Per le esercitazioni di Laboratorio:
    • Michael Goldweber, Renzo Davoli µMPS3 Principles of Operation
    • Michael Goldweber, Renzo Davoli Student Guide to the Pandos Operating System.
    • Richard Stevens. Advanced Programming in UNIX. Addison-Wesley
    • Eric Steven Raymond. The Art of Unix Programming. Addison-Wesley
    Approfondimenti:
    • G. Andrews. Concurrent Programming. Benjamin/Cummings, 1991.
    Documentazione on-line

    Metodi didattici

    • Lezioni frontali alla lavagna, con anche l'ausilio di slides, rese disponibili sul sito del corso (vedi Link ad altre eventuali informazioni)

      Editor cooperativi, wiki del corso, canale telegram, mailing list.

      Esercitazioni in aula di programmazione concorrente, di interazione con system call, di scripting.

      Progetto di Laboratorio da svolgere in gruppo (al di fuori delle ore di lezione)


    In considerazione della tipologia di attività e dei metodi didattici
    adottati, la frequenza di questa attività formativa richiede la
    preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di
    formazione sulla sicurezza nei luoghi di studio,
    [https://elearning-sicurezza.unibo.it/] in modalità e-learning.

    Modalità di verifica e valutazione dell'apprendimento

    L'esame di Sistemi Operativi è composto da un progetto, una prova pratica in laboratorio, una prova scritta, e (opzionalmente) da una prova orale.

    Sono previsti sei appelli (Maggio, Giugno, Luglio e Settembre 2025, Gennaio e Febbraio 2026) per la prova scritta e la prova pratica.

    Progetto

    Il progetto viene svolto in gruppi di max 4 studenti al di fuori delle ore di lezione. È comunque prevista una collaborazione con docente e tutor durante le lezioni per dubbi, domande e consigli. Il progetto è diviso in due o tre fasi. Scopo del progetto è la realizzazione di un Sistema Operativo didattico.

    La scadenza per la consegna delle fasi verrà decisa durante il corso. Di norma la prima fase ha scadenza il giorno antecedente l’inizio della lezioni del II semestre, l’ultima consegna dell’ultima fase a settembre 2026

    Il voto finale sarà calcolato come media pesata dei voti delle fasi. Le percentuali saranno rese pubbliche una volta definite le specifiche del progetto per l’anno accademico in corso

    Concorrono all'attribuzione del voto: La coerenza con le specifiche del problema, lo stile di programmazione, l’efficienza, la padronanza della conoscenza del codice consegnato, l’abilità di ragiornare su possibili evoluzioni del progetto.

    Consegnata l’ultima fase, il gruppo presenta il progetto in una riunione organizzata su appuntamento. Il docente ed il/i tutor discuteranno con i singoli componenti del gruppo i dettagli implementativi e decideranno il voto personale (che potrà essere ridotto rispetto al voto del gruppo per gli studenti che daranno prova di aver scarsamente collaborato allo sviluppo del progetto.

    Prova Pratica

    La prova pratica richiede la soluzione di problemi di shell scripting, programmazione di sistema, programmazione python e amministrazione di sistema. Durante la prova gli studenti possono consultare qualsiasi documento e, usando i sistemi del laboratorio, possono cercare informazioni liberamente su Internet (incluso usare strumenti di IA)

    Lo svolgimento della prova pratica avviene in un laboratorio del dipartimento, e la consegna avviene tramite e-mail al docente. La prova pratica è seguita da una breve discussione col docente sulle soluzioni agli esercizi consegnate. Lo scopo della discussione è di verificare che il candidato comprenda e sia in grado di gestire le soluzioni consegna.
    I parametri di valutazione sono: funzionamento coerente con le specifiche, stile del codice, efficienza, abilità di descrivere ogni dettaglio delle soluzioni consegnate e di valutare col docente effetti di modifiche al codice.

    Il voto è valido per l'intero anno accademico (fino all'appello di febbraio).

    Prova Scritta

    L’esame scritto è suddiviso in due "parti"

    programmazione concorrente: Viene richiesto di risolvere alcuni problemi di programmazione concorrente, utilizzando le primitive viste a lezioni (semafori, monitor, message passing)

    parte generale: Questa parte della prova scritta è una sorta di orale. Le domande sono sull'intero programma del corso, e richiedono ragionamento (ovvero, non sono nozionistiche).

    Sebbene diviso in due parti il compito è unico e non è possibile consultare nessun documento durante lo svolgimento della prova. Per poter superare la prova scritta è necessario (ma non sufficiente) ottenere un voto almeno quasi sufficiente (i.e. almeno 16/30) in ognuna delle due parti. Il voto di uno scritto è valido per l'intero anno accademico (fino all'appello di febbraio), se uno studente che ha ottenuto una valutazione sufficiente si presenta per sostenere nuovamente la prova scritta perde la valutazione precedente. Il voto (in trentesimi) e' composto da:

    • 1 punto per l'esercizio -1 (essersi iscritti per sostenere l'esame)

    • 1 punto per l'esercizio 0 (scrivere correttamente il proprio nome e cognome, la matricola e la posizione nell'aula (riga e colonna).

    • 30 punti per i rimanenti esercizi quale media aritmetica fra le due parti.

    Esiste quindi un "bonus" di due punti per l'esercizio 0 e -1. Nelle prove scritte il voto massimo e' comunque 30 (31 e 32 verranno considerati 30), il voto minimo 0. Fatta salva la condizione necessaria vista sopra, la prova si intende superata se il voto finale è di almeno 18/30.

    Al termine dello svolgimento della prova verrà immediatamente mostrata la soluzione. A questo punto è possibile chiedere che il compito non venga valutato. Compiti valutati gravemente insufficienti (minore di 10/30) comporteranno la perdita del "bonus" dell'esercizio 0 e -1 per la prova successiva. I voti delle prove scritte vengono pubblicati sul mailing list in forma anonima (matricola/voto); per i voti gravemente insufficienti viene indicato solo GINS (gravemente insufficiente).

    Nel messaggio con i voti vengono anche indicati la data e il luogo dove gli studenti possono prendere visione dei propri compiti corretti. È caldamente consigliata la partecipazione. Questo suggerimento serve agli studenti per poter prendere coscienza dei vostri errori nella speranza che non vengano ripetuti in futuro.

    Durante la sospensione invernale delle lezioni verrà svolta una prova parziale scritta sui temi della programmazione concorrente. Se svolta con esito positivo questa prova sostituisce la prima parte del compito: gli studenti con voto sufficiente alla prova parziale possono svolgere nelle prove scritte degli appelli d'esame la sola parte generale.

    Il voto di Sistemi Operativi

    Superate tutte le tre prove il voto complessivo viene calcolato come media ponderata fra voto del progetto (25%) prova pratica (25%) e scritto (50%). Il voto deve essere arrotondato all'intero piu' vicino, il mezzo punto esatto viene arrotondato al voto piu' alto. E' possibile chiedere la registrazione del voto proposto come voto del corso tramite mail al docente. La mail con subject "esame sistemi operativi: voti" deve contenere: la propria matricola, voto dello scritto e data di svolgimento, voti del progetto e data di discussione, voto della prova pratica e data di svolgimento.

    Prova Orale

    La prova orale è facoltativa. Per accedere all'orale, è necessario conseguire una votazione di almeno 18 in tutte le prove (scritto, progetto, prova pratica). La prova orale è obbligatoria solo per chi vuole ottenere la valutazione di 30 e lode nell'esame di sistemi operativi. Per la lode occorre dimostrare non solo la conoscenza dei temi trattati nel corso ma una effettiva predisposizione per la materia e uno specifico interesse personale. La valutazione finale prende come punto di partenza i voti ottenuti nelle altre prove: può essere la stessa valutazione, subire un incremento o un decremento in base al grado di preparazione dello studente.


    Strumenti a supporto della didattica

    Sistema distribuito dipartimentale (DISI). Laboratorio Ercolani. Personal computer degli studenti (BYOD)


    Non viene fatto uso di software proprietario, verra' studiato solo software libero. Gli studenti potranno quindi approfondire ogni tema a loro piacimento ed utilizzare liberamente la conoscenza acquisita nel corso.

    Link ad altre eventuali informazioni

    http://www.cs.unibo.it/~renzo/so/

    Orario di ricevimento

    Consulta il sito web di Renzo Davoli

    Consulta il sito web di Luca Sciullo

    SDGs

    Istruzione di qualità Imprese innovazione e infrastrutture Partnership per gli obiettivi

    L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.