Corso di Sistemi Operativi per Informatica per il Management,
lezione e laboratorio, 2016/2017

 


Docenti: Prof. Davide Sangiorgi (titolare), Dr. Saverio Giallorenzo


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 16/17 sono disponibili qui





    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, 7th Edition, 2007.
  • (Altre edizioni, successive o precedenti, 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.

  • Rispetto ad anni precedenti, quest'anno saranno sara' accentuata la parte su sicurezza, introducendo anche nozioni di crittografia. Puo' essere utile quindi procurarsi materiale specifico su queste parti. 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 Oracle/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

    (Lezioni del Lunedi e Martedi in Aula Ercolani 1, quelle del giovedi in Aula VII di Matematica)
      LUN MAR MER GIO VEN
    8.30-9.30   LAB SO      
    9.30-10.30   LAB SO      
    10.30-11.30          
    11.30-12.30          
    12.30-13.30          
    13.30-14.30 SO          
    14.30-15.30 SO          
    15.30-16.00 SO        
    16.00-16.30 SO       SO  
    16.30-17.30 LAB SO     SO  
    17.30-18.00 LAB SO     SO  
    18.00-18.30 LAB SO     SO  
    18.30-19.00       SO  

    Ricevimento studenti: Giovedi 14.00-15.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

    Le date per le verbalizzazioni saranno indicate sul newsgroup. Normalmente hanno luogo una settimana circa dopo gli appelli scritti. Se ci sono delle esigenze particolari che impediscono di attendere la prossima data di verbalizzazioni, si prega di prendere appuntamento con il docente per email specificandone il motivo .