Diario delle Lezioni
A.A. 2013/2014

Sistemi Operativi e Lab.
Ingegneria Informatica - Laurea Triennale


Data
Argomento
Tipo
N Ore
Riferimento
Mer. 26/02/2014
Introduzione al corso: programma, modalita\' di esame e testi consigliati (Lucidi Programma); necessita\' di registrazione per gestione liste prove in itinere ed esami. Illustrazione del sito: oltre l\'applicazione per gli esami la sezione dei Lucidi (comunicazione della password di lettura). Generalità su cosa è un Sistema Operativo e, soprattutto, su cosa fa un Sistema Operativo. Definizione di Multiprogrammazione e di Sistema Operativo Multiprogrammato: introduzione al concetto di processo (entità attiva che esegue un programma, entità passiva) e ai vari \'tipi\' di processi (I-O bound e CPU bound). Definizione di Multiprocesso e di Multiutenza. Brevemente il caso dei Sistemi Operativi Real-Time (processi con priorità) e dei Sistemi Operativi Time-sharing (scheduling a quanti di tempo). Sistema Operativo come gestore delle risorse: possibile individuazione di diversi livelli del Sistema Operativo o macchine virtuali (esempio del Sistema Operativo MS-DOS). (Lucidi Introduzione sui SO, 1-10)
L
2
Ven. 28/02/2014
Spiegato presenza del Registro on-line delle lezioni sul sito (che mi ero dimenticata la volta scorsa). Sistema Operativo come gestore delle risorse: in particolare: primo livello di un sistema Operativo: Nucleo/Kernel. Ripreso concetto di processo: stati di un processo (esecuzione, sospeso e pronto) e transizioni di stato, descrittore di processo (code dei processi pronti e code di sospensione) e cambio di contesto. Algoritmi di scheduling non preemptive e preemptive; esempi di algoritmi di scheduling: algoritmo round-robin basato su quanti di tempo (preemptive con uso di un timer); algoritmo di scheduling a priorità statica basato su più code, una per ogni livello di priorità algoritmo a priorità dinamica con uso di quanti di tempo differenti e meccanismi di penalizzazione/promozione con priorità che quindi cala o cresce sulla base del consumo del quanto di tempo. Accennato a gestore I/0. Gestore della Memoria con riferimento alla Memoria Virtuale. Interfaccia utente: il Processore Comandi. Punti di vista: utente e quindi esterno o del Sistema Operativo e quindi interno. (Lucidi Introduzione sui SO, 11-18) File System - Organizzazione logica: file, necessità descrittore di file e direttori. Strutturazione dei direttori: direttori ad albero (nome assoluto, relativo al direttorio corrente e relativo semplice) e a grafo (concetto di Link). (Lucidi File System, 1-7) Uso di PC collegato in rete e videoproiettore. Nel seguito fra parentesi si indicano i lucidi della sezione \"Lucidi su UNIX e il Bourne Shell\" cui il registro fa riferimento. Introduzione a UNIX: sistema operativo multigrammato (e multiprocesso) e multiutente (Luc. 1). Spiegazione della fase di autenticazione: file /etc/passwd (Luc. 2, 3 e 4), esempio di comando eseguito diverso da una shell e comando who. Processore comandi come processo e generatore di processi: in genere, un processo associato all\'esecuzione di ogni comando (eccezioni: comando exit e cd) (Luc. 13); mostrato l\'invocazione di diverse shell e i comandi ps e id. Nell\'ultima ora, presentazione del meccanismo per creare un direttorio sul desktop che viene automaticamente salvata sul server LICA (lica2) e che deve essere usato durante gli esami. Da ultimo tentativo di registrazione nell\'applicazione che servirà per l\'iscrizione agli esami, ma problemi con il server e quindi lasciato da fare a casa.
L
4
Lun. 03/03/2014
Shell - Ripreso comando ps: mostrato opzioni -f (full) e -l (long) per sottolineare il concetto di processo padre e processo figlio e di UID e GID; mostrato anche opzioni -a (all) o l\\\'equivalente -e per fare vedere tutti i processi attivi nel sistema. Introdotto comando man. File system: file come stream di byte e come astrazione unificante per file ordinari, direttori e file speciali come i dispositivi (contenuti in /dev) (Luc. 5). Struttura del File SYSTEM di UNIX: direttori tipici (Luc. 7). Spiegato nomi di file che: iniziano con il carattere punto, molto lunghi e con più caratteri punto: comando cat per la visualizzazione di file di testo. Approfondimento su ls: varie opzioni (Luc. 16). Spiegato funzionamento dei comandi which e whereis. Spiegato \".\" e \"..\" e il suo effetto sull\'albero che diventa un grafo e mostrato esempi di uso: in particolare, cd .. o cd ../.. Nomi assoluti, relativi al direttorio corrente e relativi semplici (Luc. 6): mostrato simulazione della gerarchia del lucido. Spiegato metacaratteri principali trattati dalla shell (* e ?) (sempre Luc. 6): mostrato con opzione -x della shell il funzionamento di * e ?. Protezione dei file (Luc. 8): diritti di accesso (r, w e x) per user, group e other. Concetto di superutente (root) e spiegato come avvengono i controlli. Fatto vedere accesso allo stesso file da parte di due utenti diversi, ma appartenenti allo stesso gruppo. Il comando chmod, versione simboli ed ottale: effetto diverso sull\'accesso ad un file. Significato dei diritti di accesso per i direttori. Comandi chown e chgrp solo per il SUPERUTENTE (Luc. 15).
L
2
Mer. 05/03/2014
Shell - Concetto di link (hardware) per i file (comando ln, Luc. 10) e differenze con il comando cp per copiare file; cancellazione file (comando rm). Spiegato come si realizza in UNIX il concetto di link: struttura direttori (Luc. 11) con i-number e i-node (Luc.12): mostrato uso di opzione -i di ls. Mostrato funzionamento dei link hardware per i direttori e comando mkdir. Concetto di link software per file e direttori: comando ln -s. Ripreso sintassi generale comandi (Luc. 14): in particolare, comandi multipli sulla stessa riga separati dal simbolo di punto-e-virgola (;) e spiegato alcuni comandi non ancora presentati come il comando rmdir (solo con direttorio vuoto) e comando mv (sulla base dei comandi ln e rm); spiegato anche il significato del nome catenate per il comando cat. I 3 bit speciali per i file eseguibili (SUID, SGID): introdotto il concetto di real ed effective UID e GID nel descrittore di un processo (Luc. 9). Il comando passwd come esempio di uso di SUID per accedere al file /etc/shadow su cui ha l\'accesso in scrittura e lettura solo l\'utente root (super-utente).
L
2
Ven. 07/03/2014
Guida all\'installazione ambiente di lavoro. In particolare, Ubuntu 12.04 32bit su Oracle VirtualBox. Editor di testo: vi, vim, vimtutor. Uso della shell: console grafica e testuale; esercizi a riga di comando: ls, cp, mv; esempi di nomi assoluti e relativi; directory corrente e comando cd; permessi di accesso ai file; modifica dei permessi con chmod e chown; man e la documentazione in linea. Cenno all\'Open Source, licenza d\'uso GPL e Free Software Foundation, progetto GNU. (Prof. Bicocchi)
E
4
Lun. 10/03/2014
Shell - Completato discorso su SUID: secondo esempio di uso di SUID e cioè programma che visualizza un file leggibile solo dal proprietario con accesso di un utente che non è il proprietario (concetto di PATH e valore della corrispondente variabile d\'ambiente). Spiegato significato dello sticky bit per i direttori: esempio di /tmp. Generalizzazione del concetto di file (Luc. 8 del File System). Concetto di filtro e di standard input, standard output e standard error: associazioni di default e loro modifica con RIDIREZIONE (Luc. 18, 19). Ripreso schema di esecuzione di un comando con un processo figlio con trattamento della ridirezione (Luc. 20). Ridirezione in uscita per creare file vuoto (ridirezione a vuoto). Primi esempi di ridirezione in uscita e in append usando il comando pwd e ls. Comandi che possono essere usati sia come comandi normali che come filtri (di nuovo Luc. 18). Uso come filtri in particolare per ridirezione in ingresso (oltre che in uscita): in particolare il filtro cat usato sia come semplice editor (concetto di EOF da tastiera, ^D) sia come alternativa al comando cp. Esempio di programma in C che si comporta come filtro facendo uso dei concetti di standard input e standard output e quindi leggendo con scanf e scrivendo con printf un carattere alla volta. Altri esempi di filtri (di nuovo Luc. 18): more, sort, grep, rev, head, tail, wc (con opzioni -c, -w, -l). Ridirezione dello standard error (Luc. 22) e uso di /dev/null.
L
2
Mer. 12/03/2014
Shell - Piping: composizione di comandi/filtro (Luc. 23, 24). Realizzazione mediante piu\' processi e canali di comunicazione. Esempi che mostrano la presenza di un processo per ogni comando in piping: uso anche del filtro tee. Esecuzione di comandi in background (Luc. 25): problema di ridirezione standard output (consigliata) e dello standard input (necessaria almeno in Bourne shell!). Uso del comando kill. Altri comandi: date, who o w, whoami e who am i, diff e find (Luc. 17). Concetto di ambiente di shell (Luc. 27): il processo SHELL generato all\'esecuzione di ogni comando riceve per copia l\'ambiente dello shell padre (con ad esempio, PATH, HOME e direttorio corrente). Schema del funzionamento della SHELL (Luc. 28): ripreso concetto di comandi interni (speciali). Spiegato concetto di variabile di shell: valore come stringa, sintassi assegnamento e sintassi per riferire il valore (Luc. 28). Differenza fra variabili di ambiente e variabili di shell: il comando export per passare una variabile di shell nell\'ambiente (esempio relativo).
L
2
Ven. 14/03/2014
Uso della shell. Ridirezione; comando cat; link e link simbolici; variabili d\'ambiente; quoting di variabili; creazione ed uso di directory; semplici shell script. (Prof. Bicocchi)
E
4
Lun. 17/03/2014
Shell - Sostituzioni attuate dallo shell (Luc. 29). Mostrati gli ulteriori metacaratteri [ ] (Luc. 30) con vari esempi (Luc. 31). File comandi in BOURNE-SHELL (Luc. 33): primo esempio con le variabili di ambiente PATH, HOME e direttorio corrente (file provacomandi). Ripreso concetto di variabile shell (Luc. 34): esempio di variabili shell con necessita\' sia di valutazione di comandi (uso di backquote ``) che del comando expr (file provaVar). Inibizione delle sostituzioni attuate dallo shell (Luc. 32): esempi vari e necessita\' di eval (file provaSost). Passaggio di parametri nei file comandi (Luc. 35): primo esempio di uso (file DIR). Comando shift (Luc. 35) e altre pseudo-variabili predefinite (Luc. 36): $*, $#, $? (concetto di return code dei comandi, Luc. 37), $$. Esempio unico (file provaPar).
L
2
Mer. 19/03/2014
LEZIONE DI RECUPERO (rispetto alle esercitazioni in laboratorio) Shell - Ripreso altre pseudo-variabili: $$ e soprattutto $? (concetto di return code dei comandi, Luc. 37): mostrato vari esempi di valore di ritorno di successo (valore zero) ed insuccesso (diverso da zero). La struttura di controllo if per realizzare l\'alternativa semplice (Luc. 39): primi esempi semplici (if1 e if2). Introdotto il comando test (Luc. 38): altri esempi di if (file if3, DIRCTL e DIRCTL1). Altri esempi di if anche con il comando read (Luc. 36, file LeggiEMostra): uso di ridirezione per i file comandi e necessità di ridirezione su /dev/tty (Luc. 43, file LeggiEMostra1). La struttura di controllo case per realizzare l\'alternativa multipla (Luc. 40): primo esempio di uso che esegue controllo sul numero dei parametri (file nroPar) e quindi altri esempi di uso (file readCase e append).
L
2
Mer. 19/03/2014
Shell - Strutture di controllo per i cicli: 1) for (Luc. 41) con diversi esempi (file for1, for1Bis, for2, for3, for4 e crea); 2) while e until (Luc. 42) con un esempio ciascuno (file ce e ceUtente). Uscite anomale per i cicli: exit che termina il processo e specifiche per i cicli break e continue. Altri due esempi: file mostra e file lista (con uso di opzione -n per il comando echo).
L
2
Ven. 21/03/2014
Struttura degli shell script; Escaping di caratteri particolari; passaggio di argomenti; la variabile $# e gli argomenti della command line; test su file e directory; il costrutto case; il comando grep per la ricerca di testo in un file; la variabile PATH. (Prof. Bicocchi)
E
4
Lun. 24/03/2014
Ripreso concetto di creazione di un processo di sotto-shell e copia dell\\\'ambiente di shell da padre a figlio (Luc. 46). Ripreso comando export (Luc. 46) per inserimento delle variabili di shell nell\'ambiente: con esempio mediante lo shell jsh. Eccezione di non creazione sotto-shell per i comandi interni o built-in: elenco parziale (Luc. 47) Primo esempio di ricerca di un file in una gerarchia con due file comandi con discorso generale iniziale di come strutturare le soluzioni: due file comandi, uno iniziale con vari controlli sui parametri e uno ricorsivo (ma non spiegato ancora cosa vuol dire). Illustrato il primo file comandi (Luc. 45, file Beginc.sh) e tutti i controlli con esempi di invocazioni sbagliate/corrette. Settaggio variabile PATH e chiamata al secondo file comandi (file Cercadir.sh): mostrato il risultato della esecuzione nella prima versione (con ricerca breath-first). Mostrato secondo file comandi, quello ricorsivo, nella versione con ricerca breath-first (Luc. 46 e file Cercadir.sh): mostrato alla lavagna passo-passo quello che succede nelle varie attivazioni ricorsive. Esercizio che conta tutti i file presenti in una gerarchia svolto in vari modi: versione con file temporaneo globale che raccoglie tutti i nomi assoluti dei file contati (ver2 e file contaA.sh e contaB.sh), versione con variabile globale e valore di ritorno (ver1 e file contaA.sh e contaB.sh) e lasciato da guardare le ulteriori due versioni: versione con variabile locale e valore di ritorno (ver4 e file contaA.sh e contaB.sh) e versione con uso di scrittura e lettura in un file temporaneo globale del valore del conteggio (ver3 e file contaA.sh e contaB.sh).
L
2
Mer. 26/03/2014
Shell - Soluzione della parte Shell di un testo di esame (5 Aprile 2001- Fondamenti di Informatica II) con in particolare discorso generale iniziale di come partire: due file comandi, uno iniziale (file princ.sh) e uno ricorsivo (file esplora.sh); mostrato in dettaglio il primo file comandi con invocazioni sbagliate e alcune giuste. Illustrato file ricorsivo mostrate due soluzioni nello stesso file (file esplora.sh). Commentato in generale testo delle ultime due prove (Gennaio e febbraio 2014) in particolare per quanto riguardava la presenza di DUE gerarchie nel testo. Spiegato testo della prova in itinere di due anni fa (13 Aprile 2012, nella sezione Testi Prove Scritte) e quindi soluzione su due file comandi: prima versione con uso di file temporaneo usato come variabile globale (ver1 e file fasi1e2.sh e FRC.sh) e lasciato da guardare seconda versione con uso di variabile locale e valore di ritorno con exit (ver2 e file fasi1e2.sh e FRC.sh). Spiegato testo di una prova d\'esame di due anni fa (11 Luglio 2012, nella sezione Testi Prove Scritte) e quindi soluzione su file comandi (file 11Lug12.sh e 11Lug11R.sh).
L
2
Ven. 28/03/2014
Ricerca ricorsiva; controllo degli argomenti: nome assoluto, relativo, semplice, argomento numerico, controllo argomento con singolo carattere; conteggio ricorsivo di file; determinazione della massima profondità di una gerarchia; soluzione compiti svolti. (Prof. Bicocchi)
E
4
Lun. 31/03/2014
Il linguaggio C come linguaggio di sistema (Luc. C/UNIX 1-3): caratteristiche di basso livello ed interazione con il sistema operativo UNIX, modello di programma e primitive. Operazioni di sistema (PRIMITIVE) per accedere ai file (Luc. File System 9-11): creazione/cancellazione e lettura/scrittura; ottimizzazione: apertura/chiusura. Visione di basso livello dei file per UNIX/LINUX (Luc. C/UNIX 4-6): Tabella dei file aperti (TFA) per ogni processo ===> file descriptor (o handle) come indice della TFA. Operazioni su file: creat, open, close. File descriptor per standard input, output ed error. Note su close e open/creat (Luc. C/UNIX 18). Relazioni fra TFA dei singoli processi e tabelle di sistema (Luc. Unix Tabelle 1-7): Tabella dei file aperti e Tabella degli I-NODE attivi.
L
2
Mer. 02/04/2014
File C - Struttura del File System fisico. File system logico: concetto di MOUNT e comando DF (con anche opzione -i). I-node e metodo di allocazione dei file di UNIX e primitiva SYNC. Esempi di apertura: 1) di un file con stampa del file descriptor ritornato dalla open con verifica anche di rassegnazione dello stesso fd in seguito ad una close (programma provaopen.c sul sito); 2) ripetuta dello stesso file per calcolare la dimensione della TFA di ogni processo (programma proveopen.c sul sito). Discorso generale sui metodi di accesso (Luc. File System 12-13): sequenziale (concetto di file pointer) e diretto; concetto di End-Of-File. Ripreso concetto di File pointer in C/UNIX e altre operazioni su file in UNIX/LINUX (Luc. C/UNIX 8-10): read e write. Esempi: a) copia di file (con parametri e controlli, Luc. C/UNIX 14, saltati Luc. 11-13) con spiegazione variabile di ambiente umask che può avere effetto sui diritti specificati all\'atto della creazione; b) copia con ridirezione (Luc. C/UNIX 15). Implementazione della ridirezione in ingresso e in uscita (Luc. C/UNIX 19): Simulazione in C della ridirezione in ingresso e in uscita con stampe su standard error (programma ridir-conperror.c sul sito).
L
2
Ven. 04/04/2014
Soluzione compiti svolti con controllo dei parametri iniziali e ricerche ricorsive, semplici, e multi-fase. (Prof. Bicocchi)
E
4
Lun. 07/04/2014
File C - Implementazione di un \'clone\' di cat (programma mycat.c sul sito). Concetto di BUFSIZ (Luc. C/UNIX 16) con esempio banale che ne stampa il valore: discorso sulla granularita\' della lettura/scrittura su file. File e multiutenza: ricordato che i controlli all\'atto della open vengono effettuati considerando UID e GID effettivi, non reali (Luc. C/UNIX 17). Tabelle per l\'accesso ai file (Luc. Unix Tabelle 8-10): implementazione nel Kernel di Linux. Operazione non sequenziali: lseek (Luc. C/UNIX 20). Primo esempio di append su un file (Luc. C/UNIX 222, esercizio del Luc. 21 lasciato da guardare) e altro esempio di lseek (modifica di tutte le occorrenze di un carattere in un file-Esercizio d\'esame di Fondamenti di Informatica II del 22 Settembre 1999 sul sito). Approfondimenti open (Luc. C/UNIX 7): esempio con vari casi. Seconda versione di append su file. File C - Ripreso discorso di ridirezione: sintassi avanzata con indicazione del numero di fd da usare (Luc. Shell 21). Esempi relativi: programmi provaoutfd3.c e provafd3.c sul sito.
L
2
Mer. 09/04/2014
File C - Primitive LINK e UNLINK (Luc. C/UNIX 24): esempio di versione semplificata del comando MV. Primitive ACCESS, STAT e FSTAT (Luc. C/UNIX 25-27): esempi relativi. Processi UNIX: modello ad ambiente locale e sue eccezioni relativamente a file system e codice (Luc. Processi 1). Rientranza, scheduling, memoria virtuale, swapping e modi di esecuzione dei processi anche in Linux (Luc. Processi 2-3). Immagine di un processo: parte utente e di kernel (Luc. Processi 4-5). Tabelle di sistema: Process Table e Text Table (Luc. Processi 4 e 6-7). Descrittore di processo in LINUX (Luc. Processi 8). Stati di un processo in UNIX (Luc. Processi 9).
L
2
Ven. 11/04/2014
PRIMA PROVA IN ITINERE: BOURNE SHELL (2 turni di 28 studenti l\'uno per un totale di 56 iscritti).
E
4
Mer. 23/04/2014
Shell - Presentato la correzione della prova in itinere.
L
1
Lun. 28/04/2014
Processi UNIX - Iniziato a presentare la primitiva fork() alla lavagna, in particolare usata dalla SHELL per generare un processo figlio per eseguire un comando non interno e parlato della condivisione di codice. Primitive per la gestione dei processi: creazione ===> fork e sui effetti (Luc. Processi 10-11). Primo esempio semplice: due versioni (la seconda con primitive getpid, getuid e getgid, Luc. Processi 19). Uso del valore di ritorno della fork (Luc. Processi 12): secondo esempio semplice. Osservazioni su fork (Luc. Processi 13) in particolare relativamente ad ambiente locale. Condivisione I/O pointer file aperti da padre prima della fork (Luc. Processi 14-15) e condivisione in generale di un file (Luc. Processi 16-17). Primitive wait/exit in generale (Luc. Processi 20-22). Vari esempi di fork e wait: un caso di errore (senza recupero di valore di exit) e due versioni di recupero valore di exit (prima, Luc. Processi 23, con operatori bit-a-bit e seconda, fatta vedere velocemente, con uso di macro).
L
2
Mer. 30/04/2014
Processi UNIX - Processi ZOMBIE (Luc. Processi 25) ed ereditati da INIT (Luc. Processi 26): due esempi relativi. Famiglia di primitive EXEC: execv, execl, execvp e execlp; effetti exec (Luc. Processi 27-28). Esempi semplici di uso (Luc. Processi 29-30). Completato famiglia di primitive exec: execve e execle (Luc. Processi 31). Esempio di uso di fork ed exec (Luc. Processi 32-33): considerazione su ottimizzazione della primitiva fork in Linux con copy-on-write. Connessione con comportamento della SHELL: in particolare, implementazione ridirezione e quindi file aperti prima di exec e comportamento del SUID (un esempio ciascuno).
L
2
Ven. 02/05/2014
NON TENUTA PER PONTE DECISO DALL\'AMMINISTRAZIONE CENTRALE!
E
4
Lun. 05/05/2014
Processi UNIX - Inizializzazione del sistema UNIX e comportamento della shell (Luc. Processi 34-35). Esempio di un programma che simula in modo molto semplice un processore dei comandi (Luc. Processi 36): uso della primitiva di gestione degli errori perror (Luc. Processi 37). Presentato problema Produttore(i)/Consumatore(i) per passare informazioni (dati) da un processo all\'altro: quindi presentato caso di padre e figlio (Luc. Processi 38). Interazione fra processi in UNIX (Luc. Pipe 1). Comunicazione mediante PIPE (Luc. Pipe 2): creazione pipe e omogeneita\' con i file (Luc. Pipe 3-4).
L
2
Mer. 07/05/2014
Processi UNIX - Calcolo della lunghezza di una pipe (Luc. Pipe 5). Processi che possono comunicare tramite una pipe: necessita\' di relazione di parentela (Luc. Pipe 6). Esempio Produttore (padre) e Consumatore (figlio) usando una pipe (Luc. Pipe 7): necessita\' di chiusura dei lati non necessari (Luc. Pipe 8). PIPE - Problemi: pipe senza scrittore (Luc. Pipe 12) e pipe senza lettore (Luc. Pipe 13). Esempio di possibile implementazione del PIPING dei comandi (Luc. Pipe 10-11): primitiva DUP (Luc. Pipe 9).
L
2
Ven. 09/05/2014
Introduzione all\'uso del compilatore gcc; Hello world in c; Libreria C e file header; uso di man per le funzioni della libc; la funzione main; prototipi di funzioni; ripasso sulla sintassi del C; tipi di variabili; Stampa formattata con printf (interi, caratteri e stringhe); gli argomenti della linea di comando e gli argomenti della funzione main; argc e argv; Parsing di opzioni e argomenti; Implementazione del comando head di Unix introducendo le primitive di accesso ai file open(), read() e write(). (Prof. Bicocchi)
E
4
Lun. 12/05/2014
Processi UNIX - Esercizio di esame di Sistemi Operativi VOD e relativa soluzione della sola parte C: 19 Febbraio 2001. Presentato limiti delle Pipe e necessita\' delle Named Pipe: FIFO (Luc. Pipe 17). Esempio: processo server RECFIFO e processi client SENDFIFO (Luc. Pipe 18-20). Suggerito di svolgere la soluzione dei seguenti esercizi di esame: 11 Marzo 2008, 19 Dicembre 2001 e 2 Aprile 2004.
L
2
Mer. 14/05/2014
Processi e loro comunicazione in UNIX - Esercizi di esame di Sistemi Operativi della sola parte C: Soluzione dell\'esame dell\'11 Marzo 2008 con uso di exec di grep. Esame del 19 Dicembre 2001: presentato il testo e illustrato in generale le due versioni, quella con N pipe e quella con 1 pipe di cui mostrato solo la struttura dati. Soluzione dell\'esercizio dell\'esame del 2 Aprile 2004 con uso di pipe che collegano figli e padre in una catena di processi.
L
2
Ven. 16/05/2014
Funzioni per l\'accesso ai file, read(), write(), open(). Cenni di programmazione concorrente, fork(), e problematiche legate a file descriptor condivisi. (Prof. Bicocchi)
E
4
Lun. 19/05/2014
Processi UNIX - Sincronizzazione in UNIX mediante SEGNALI: definizione di segnale (Luc. Segnali 1) e suo trattamento (Luc. Segnali 2). Elenco (parziale) segnali (Luc. Segnali 3), anche su file .h nel server Linux. Primi esempi di segnali semplici (Luc. Segnali 4): SIGINT (CTRL-C), SIGILL, SIGTERM e SIGKILL. Primitiva SIGNAL (Luc. Segnali 5): definizione di un HANDLER, default e possibilita\' di ignorare un segnale. Differenze di gestione fra versione BSD e System V (Luc. Segnali 6). Comportamento in seguito a fork ed exec (Luc. Segnali 7). Esempio di uso del segnale corrispondente al CTRL-C: comportamento in BSD (Luc. Segnali 8) con prova di funzionamento e spiegato solo a parole comportamento in System V (Luc. Segnali 9). Primitiva KILL (Luc. Segnali 10) e PAUSE (Luc. Segnali 11): esempio (Luc. Segnali 12-13).
L
2
Mer. 21/05/2014
Processi UNIX - Altre primitive: ALARM (Luc. Segnali 11) con relativo esempio (Luc. Segnali 14-15). Ripreso esempio calcolo lunghezza pipe (Luc. Pipe 16): trattamento mediante SIGALRM. Ripreso esempio di pipe senza lettore (Luc. Pipe 14-15): trattamento segnale SIGPIPE. Esercizio di esame di Sistemi Operativi VOD e relativa soluzione della sola parte C del 10 Gennaio 2001: versione con segnali e versione con pipe.
L
2
Ven. 23/05/2014
Sincronizzazione fra processi operata dalla wait(); concorrenza dei processi; condivisione di file; la funzione pipe(); i file descriptor associati ad una pipe; comportamento bloccante; casi d\'uso della pipe: singola pipe fra figli e padre, una pipe per ogni figlio verso il padre. (Prof. Bicocchi)
E
4
Lun. 26/05/2014
Processi e loro comunicazione in UNIX - Esercizi di esame di Sistemi Operativi della sola parte C: Soluzione della Seconda Prova in Itinere del 4 Giugno 2010 e soluzione dell\'esame del 16 Luglio 2010.
L
2
Mer. 28/05/2014
Processi e loro comunicazione in UNIX - Esercizi di esame di Sistemi Operativi della sola parte C: Soluzione dell\'same del 18 Giugno 2010 e soluzione dell\'esame del 5 Giugno 2013.
L
2
Ven. 30/05/2014
Esercizi avanzati di comunicazione fra processi attraverso la primitiva pipe(). (Prof. Bicocchi)
E
4
Mer. 04/06/2014
Processi e loro comunicazione in UNIX - Esercizi di esame di Sistemi Operativi completi: Soluzione dell\'esame del 20 Giugno 2012 e soluzione dell\'esame del 19 Giugno 2013.
L
2
Ven. 06/06/2014
Esercizi avanzati di comunicazione fra processi attraverso la primitiva pipe() con uso anche di exec. (Prof. Bicocchi)
E
4

Legenda:
E= Esercitazione
L= Lezione