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

 




Docenti: Prof. Davide Sangiorgi (titolare), Dr. Matteo Trentin , Dr. Gejsi Vjerdha


Trovate sotto:

  • Il programma delle lezioni e del laboratorio di SO ( che potrebbero pero' essere modificati durante l'anno )

  • I testi principali di rifererimento

  • Link ai lucidi principali

  • Orario delle lezioni

  • Newsgroup corso

  • Verbalizzazioni
  • Trovate qui le modalita' d'esame (DA LEGGERE ATTENTAMENTE!).

    Le specifiche del progetto saranno fornite piu' avanti nel corso.

    Le date degli appelli per l'AA 23/24 saranno fornite piu' avanti nel corso





    PROGRAMMA DEL CORSO (indicativo)

    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
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - Il linguaggio Jolie


    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: Mercoledi, Berti Pichat 5 ; Giovedi, Tonelli; Venerdi, Cremona.

      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 LAB SO  
    13.00-14.00     LAB SO LAB SO SO
    14.00-15.00         SO
    15.00-16.00         SO
    16.00-17.00          
    17.00-18.00          
    18.00-19.00          

    Ricevimento studenti: Giovedi 15.00-16.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, inviare una email al titolare del corso con soggetto "verbalizzazione" usando la email istutuzionale (ovviamente occorre avere superato sia la prova scritta/orale che il progetto). Le verbalizzazioni vengono effettuate normalmente qualche settimana dopo gli appelli, quando si sono accumulate un po' di richieste (non preoccupatevi quindi se la verbalizzazione non avviene immediatamente dopo la vostra email). Se ci sono delle esigenze particolari, si prega di contattare il docente.