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:
Operating Systems Concepts with Java, 6th Edition
John Wiley and Sons, 6th Edition, 2004.
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):
Operating Systems,
Third edition, Pearson Addison Wesley, 2004.
Per il laboratorio di SO
~~~~~~~~~~~~~~~~~~~~~~~~
Parti su Unix:
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):
The Java Programming Language,
Third Edition , Addison-Wesley, 2000.
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
| 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 |