Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
corso SO + LAB, 2007/2008
[go: Go Back, main page]

Corso di Sistemi Operativi per Scienze di Internet,
lezione e laboratorio, 2007/2008

 


ATTENZIONE: per sostenere una prova (scritto, progetto, orale) occorre iscriversi. Ci si iscrive su questa pagina. Regole e istruzione per l'iscrizione si trovano qui. CHI NON SI ISCRIVE NON POTRA' SOSTENERE LA PROVA

Docenti: Davide Sangiorgi (titolare), Michele Schirinzi, Alan Schmitt


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. Le specifiche del progetto saranno fornite piu' avanti nel corso.

    Le date degli appelli 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
    - Corba (cenni)

     

    10: Protezione e sicurezza
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    - protezione attraverso diritti di accesso e capacita'
    - autenticazione
    - minaccie principali (software, di sistema, virus
    - firewall
    - il modello di sicurezza di Java


    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: Installazione e Configurazione dei Sistemi Operativi
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    - installazione di Linux



    TESTI DI RIFERIMENTO

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

    Referenza principale:

  • Silberschatz, Galvin, and Gagne,
    Operating Systems Concepts with Java, 6th Edition
    John Wiley and Sons, 6th Edition, 2004.
  • (E' apparsa anche la settima edizione; ad ogni modo edizioni successive o precedenti alla sesta sono valide)


    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,
    Third edition, Pearson Addison Wesley, 2004.
  • Per il laboratorio di SO
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Parti su Unix:

  • Glass, Ables.
    Unix for Programmers and Users.
    Prentice Hall, 3rd edition, 2003

  • 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

    Due ottimi testi (ma certamente non i soli):

  • Ken Arnold, James Gosling, and David Holmes,
    The Java Programming Language,
    Third Edition , Addison-Wesley, 2000.
  • David Flanagan,
    Java in a Nutshell,
    Third Edition, O'Really, 1999
  • Documentazione ``free'' (laboratorio)


    Dal Java home site:

    -- The Java Tutorial:
    http://java.sun.com/docs/books/tutorial/index.html

    -- The Java Language Specification:
    http://java.sun.com/docs/books/jls/second_edition/html/

    -- Code Conventions for the Java Programming Language:
    http://java.sun.com/docs/codeconv/index.html

    -- RMI Documentation
    http://java.sun.com/products/jdk/rmi/
    http://java.sun.com/j2se/1.4/docs/guide/rmi/getstart.doc.html
    http://java.sun.com/docs/books/tutorial/rmi/index.html

    -- Java API Documentation:
    http://java.sun.com/products/jdk/1.4/docs/api/index.html



    LUCIDI

    I lucidi usati nel corso sono disponibili qui

    ORARIO

      LUN MAR MER GIO VEN
    10.30-11.30          
    11.30-12.30          
    12.30-13.30          
    13.30-14.30       SO  
    14.30-15.30 SO LAB SO   SO  
    15.30-16.30 SO SO/LAB SO   SO  
    16.30-17.30 SO(*) LAB SO(*)   LAB SO  
    17.30-18.30       LAB SO  
    (*) = fino alle ore 17

    Ricevimento studenti: Martedi 13.00-14.30

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

    NEWSGROUP

    unibo.cs.scienzeinternet.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 .