Corso di Sistemi Operativi per Informatica per il Management,
lezione e laboratorio, 2024/2025



(per AA 2025/26: le informazioni sotto riguardo struttura e contentui del corso e delle prove da superare, rimangono valide; dettagli come lucidi, materiale di sostegno, orario corso, tutor, saranno aggiornati piu' avanti)

 




Docenti: Prof. Davide Sangiorgi (titolare), tutor Dr. Alfonso Esposito , Dr. Michele Persiani , Dr. Matteo Trentin


Trovate sotto:

  • Il programma delle lezioni e del laboratorio di SO

  • I testi principali di rifererimento

  • Link ai lucidi principali

  • Orario delle lezioni

  • Newsgroup corso

  • Verbalizzazioni (ATTENZIONE: nuova procedura, da Giugno'25)
  • Trovate qui le modalita' d'esame (DA LEGGERE ATTENTAMENTE!).

    Per le specifiche del progetto consultare questa pagina

    Le date degli appelli per l'AA 24/25 sono disponibili qui





    PROGRAMMA DEL CORSO
    (i contenuti indicati sotto potrebbero essere modificati durante l'anno;
    per questo fare riferimento ai lucidi forniti e pubblicati di volta in volta)

    1: Introduzione
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - cosa e' un SO e a cosa serve
    - accenni di storia dei SO
    - il programma del corso


    2: Richiami di architettura
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - Multiprogramming, time-sharing systems
    - IO devices
    - memoria
    - meccanismi di protezione hardware (user mode e monitor mode,
    operazioni privilegiate, timer interrupt)


    3: Organizzazione generale di un SO
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - i servizi offerti da un SO
    - struttura di un SO


    4: Processi e threads
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - il concetto di processo
    - stati possibili
    - rappresentazione di un processo
    - lo scheduling dei processi e il context switch
    - il concetto di thread
    - esempi di thread

     

    5: Concorrenza e comunicazione
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - cosa e' la concorrenza
    - multiprocessing vs multiprogramming
    - esempi di cooperazione tra processi
    - race condition, interferenza, sincronizzazione
    - regioni critiche
    - semafori
    - deadlock e starvation
    - costrutti di sincronizzazione ad alto livello
    - comunicazione tra processi


    6: Scheduling della CPU
    ~~~~~~~~~~~~~~~~~~~~~~~

    - perche' lo scheduling
    - fattori di ottimizzazione
    - algoritmi principali (FCFS,SJR, Priorita', Round Robin)
    - Java thread scheduling


    7: Gestione della memoria
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    - indirizzi logici e fisici
    - swapping
    - frammentazione
    - condivisione di codice e/o dati
    - paginazione
    - memoria virtuale


    8: File system
    ~~~~~~~~~~~~~~~

    - cosa e' un file; tipi di files; operazioni
    - metodi di accesso
    - directory (tipi, operazioni)
    - organizzazione (locazione su memoria, file fisici e logici, apertura
    e chiusura di file, mounting)


    9: Distributed comunication
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - socket; in unix, in Java
    - Remote Procedure Call (cenni)
    - Remote Method Invocation, in Java

     

    10: Sicurezza e cenni di Crittografia
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - autenticazione
    - minaccie principali (software, di sistema, virus
    - firewall
    - crittografia


    LABORATORIO

    1: Java threads
    ~~~~~~~~~~~~~~~

    - creazione di thread
    - gestione e stati (comandi: suspend, resume, etc..)
    - esempi


    2: Sincronizzazione tra processi
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - esempi Java usando semafori
    - sincronizzazione ad alto livello in Java:
    locks, wait, notify, sincronizzazione su blocchi di codice, etc.
    - esempi piu' complessi


    3: Comunicazioni su rete
    ~~~~~~~~~~~~~~~~~~~~~~~~

    - parte 1: socket in Java
    - il package java.net
    - esempi


    - parte 2: JavaRMI
    - richiamo concetti di base
    - creazione di oggetti remoti
    - RMI registry
    - uso delle URL
    - esecuzione
    - altri esempi


    4: Linguaggi piu' avanzati per rete e servizi
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    5: Sicurezza e Crittografia
    ~~~~~~~~~~~~~~~~~~~~~~~~




    TESTI DI RIFERIMENTO

    Per le lezioni su SO
    ~~~~~~~~~~~~~~~~~~~~~

    Referenza principale:

  • Silberschatz, Galvin, and Gagne,
    Operating Systems Concepts with Java,
    John Wiley and Sons.
  • (Ne esistono varie edizioni; ovviamente da preferire le ultime, ma anche edizioni passate, sono ok, se basate su Java)


    Esistono anche varie traduzioni in italiano di questi testi: raccomando, per quelli che preferiscono un testo italiano, le versioni pubblicate dalla Pearson-Addison Wesley, perche' la traduzione e' piu' accurata.


    Altre referenze (i concetti trattati a lezione sono spiegati bene anche qui):

  • Gary Nutt,
    Operating Systems,
    Pearson Addison Wesley.

  • Nella parte su sicurezza, introdurremo anche nozioni di crittografia. Puo' essere utile quindi procurarsi materiale specifico su questa parte. Esempio il capitolo dedicato su

  • James F. Kurose, Keith W. Ross
    Computer Networking: A Top-Down Approach,
    Pearson Addison Wesley.
  • Per il laboratorio di SO
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Parti su Java:

    Ci sono tantissimi libri disponibili su Java.
    Le cose nuove rispetto alle
    parti viste nel corso di programmazione al primo anno sono
    thread, socket e RMI

    Ci sono anche tutorial e materiale recuperabile online, in particolare sul sito ufficiale Java

    Un libro su Java che mi sento di consigliare fortemente, perche' e' fatto molto bene, comprende le parti su concorrenza e distribuzione, e propone molti esercizi, e' il seguente:

  • Silvia Crafa
    Oggetti, concorrenza, distribuzione.
    Esculapio



  • LUCIDI

    I lucidi usati nel corso sono disponibili qui

    ORARIO

    Aule: sempre in E2.

      LUN MAR MER GIO VEN
    9.00-10.00         SO
    10.00-11.00         SO
    11.00-12.00         SO
    12.00-13.00         LAB SO
    13.00-14.00     SO SO/ LAB SO LAB SO
    14.00-15.00     SO LAB SO  
    15.00-16.00     SO LAB SO  
    16.00-17.00          
    17.00-18.00          
    18.00-19.00          

    Ricevimento studenti: Giovedi 16.00-17.00

    (si raccomanda di avvisare prima, e prendere appuntamento, con una email)

    NEWSGROUP

    Newsgroup su google groups chiamato infoman-so, a cui si puo' accedere qui: https://groups.google.com/forum/#!forum/infoman-so

    VERBALIZZAZIONI

    Per le verbalizzazioni, la procedura e' cambiata a partire da Giugno 25, a seguito di direttive Ateneo: sono stati definiti su almaesami degli appelli (fittizzi) dedicati alla verbalizzazione, sotto la dicitura "Verbalizzazione : corso integrato di sistemi operativi e laboratorio". Pertanto se si vuole verbalizzare occorre iscriversi ad un appello di verbalizzazione (avviamente, per questo e' necessario avere superato lo scritto e il progetto). La verbalizzazione stessa sara' effettuata il giorno stesso dell'appello o nei giorni immediatamente successivi. Per le date, consultare questa pagina .