Diario delle Lezioni
A.A. 2020/2021

Sistemi Operativi e Lab.
Ingegneria Informatica - Laurea Triennale


Data
Argomento
Tipo
N Ore
Riferimento
Lun. 08/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Spiegazione dell'orario e dell'organizzazione delle lezioni/esercitazioni. Illustrazione del sito: oltre all'applicazione per gli esami, il registro on-line delle lezioni e la sezione delle slide (comunicazione della password di lettura). Introduzione al corso: programma, modalità di esame (con date fino a Settembre 2021) e testi consigliati (Slide Programma); necessità di registrazione per gestione liste prove in itinere ed esami.
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 Time-sharing (scheduling a quanti di tempo) (Lucidi Introduzione sui SO, 1-6).
L
2
Mar. 09/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
LEZIONE DI RECUPERO: Sistema Operativo come gestore delle risorse; punti di vista esterno ed interno nello studio di un S.O. Gestore dei processi (Nucleo/Kernel). Ripreso concetto di processo, spiegato processi utente e processi di sistema, funzioni tipiche di un kernel (in particolare scheduling). 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 (Lucidi Introduzione sui SO, 8-9).
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 (Lucidi Introduzione sui SO, 10-12).
Introdotto i due tipi di interazione fra processi in ambito di programmazione concorrente: interazione indiretta o competizione e interazione diretta o cooperazione (Lucidi Introduzione sui SO, 13).
Problema del deadlock (Lucidi Introduzione sui SO, 14-15).
Gestore dei dispositivi di I/O: in particolare, gestione degli interrupt (Lucidi Introduzione sui SO, 16).
Gestore della memoria centrale: in particolare gestione della allocazione con tecnica della paginazione (TDP, traduzione indirizzi logici in fisici e cache delle pagine). Memoria virtuale, in particolare gestione basata su segmentazione paginata (Lucidi Introduzione sui SO, 16-19). Saltato per ora Gestione della memoria secondaria (Lucidi Introduzione sui SO, 20).
Gestione interfaccia utente: interfacce grafiche e testuali (Lucidi Introduzione sui SO, 21).
L
3
Mar. 09/03/2021
VIDEO-REGISTRATA A CAUSA DEL CORONA VIRUS.
Guida all'installazione ambiente di lavoro: Ubuntu 16.04 32bit su VirtualBox (a cura di Stefano Allegretti).
E
1
Mer. 10/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
File System - Definizione di file, funzioni tipiche del gestore, tipi di file. Punto di vista dell'utente con illustrazione veloce dei principali comandi. Concetto di descrittore di file e di directory (derivazione da telephone directory). Strutturazione delle directory: Directory ad albero (nome assoluto, relativo alla directory corrente e relativo semplice) e a grafo (concetto di Link) (Lucidi File System, 1-7).
Uso di PC collegato ad un server Linux. 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: storia e connessione con Linguaggio di Programmazione (di sistema) C; Unix come sistema operativo multigrammato (e multiprocesso) e multiutente (Luc. 1).
Fase di autenticazione: necessità di login e logout (Luc. 2): concetto di terminale (nelle lezioni se ne userà uno virtuale).
File system: file come stream di byte e come astrazione unificante per file ordinari, directory e file speciali come i dispositivi (contenuti in /dev) (Luc. 3). Struttura del File System di UNIX: directory tipiche (Luc. 4). Mostrato risultato del comando cd per cambiare directory e mostrato risultato del comando pwd.
Spiegazione della fase di autenticazione: file /etc/passwd con suo formato (comando cat per visualizzare un file di testo) e file /etc/shadow (Luc. 5 e 6).
Comando id per vedere UID e GID. Comando pwd per visualizzare directory corrente (all'inizio è la HOME directory: comando echo $HOME).
L
2
Lun. 15/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Esempio di comando inserito nel file /etc/passwd diverso da una shell (Luc. 5 e 6). Precisazione sull'utente 'root' e spiegazione sudoers. Dimostrazione della multi-utenza: collegamento anche con un secondo account (sonod) e mostrato di nuovo comando id e comando who (anche versione w).
Ripreso organizzazione del File System e nomi di file assoluti, relativi alla directory corrente e relativi semplici (Luc. 9). Nomi di file molto lunghi e con più caratteri punto: introdotto comando ls (list).
Caso particolare di nomi che iniziano con il carattere punto: uso di opzione -A per visualizzare questi nomi "nascosti". Spiegato perchè di questa scelta, introducendo i due elementi sempre presenti in ogni directory: "." e ".." e il suo effetto sull'albero che diventa un grafo e mostrato esempi di uso: in particolare, ls -a, cd .. o cd ../.. (sempre Luc. 9). Mostrato simulazione della gerarchia del lucido 9 (comando ls -R, cioè ricorsione). Approfondimento su ls: varie opzioni (Luc. 10); esempi di ls -r, ls -t, ls -F e ls -l e spiegato nel dettaglio importanza di ls -d.
Metacaratteri principali trattati dalla shell (* e ?) (sempre Luc. 9): spiegato concetto di pattern matching ed esempi di uso; mostrato effetto dell'uso di * e ? utilizzando sh -x.
L
2
Mar. 16/03/2021
VIDEO-REGISTRATA A CAUSA DEL CORONA VIRUS.
Editor di testo: vi, vim, vimtutor.
E
1
Mer. 17/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Protezione dei file (Luc. 11): diritti di accesso (r, w e x) per user, group e other e uso di ls -l (long). Concetto di superutente (root) e spiegato come avvengono i controlli: fatto vedere diritti di /etc/passwd e di /etc/shadow e fatto vedere accesso allo stesso file da parte di due utenti diversi, ma appartenenti allo stesso gruppo. Il comando chmod, versione simbolica ed ottale: mostrato esempio di uso sull'accesso ad un file. Significato dei diritti di accesso per le directory. Comandi chown e chgrp solo per il SUPERUTENTE (Luc. 12).
Concetto di link (hardware) per i file (comando ln, Luc. 13): comando ln. Spiegato come si realizza in UNIX il concetto di link: struttura directory (Luc. 14) con i-number e i-node: mostrato uso di opzione -i di ls. Differenze con il comando cp per copiare file.
Mostrato contenuto dell'i-node (Luc.15) in particolare numero di link. Cancellazione file (comando rm e importanza della opzione -i, interactive): cancellazione di un link e se numero di link uguale a zero anche del contenuto del file.
Mostrato funzionamento dei link hardware per le directory e comando mkdir. Comando rmdir (solo con directory vuota) e opzione -r di rm per cancellazione ricorsiva e quindi anche di directory.
Comando per spostare i file o semplicemente rinominarli (comando mv): spiegazione in base ai comandi ln e rm.
Concetto di link software per file e directory (comando ln -s) e differenza rispetto al link hardware.
L
2
Ven. 19/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Ripreso link software: mostrato comportamenti diversi in caso di cancellazione file (dangling reference) e link.
Ripreso sintassi generale comandi (Luc. 16): spiegato il significato del nome catenate per il comando cat.
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). 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 come semplice editor; concetto di EOF da tastiera (^D) e differenza dall'abort di un comando con ^C; cat usato come alternativa al comando cp.
L
1
Ven. 19/03/2021
ESERCITAZIONE IN STREAMING A CAUSA DEL CORONA VIRUS.
Organizzate 16 stanze virtuali con suddivisione random degli studenti (usato ZOOM) con l'aiuto di Stefano Allegretti: si veda il documento EsercitazioneVenerdì19Marzo2021.pdf.
E
3
Lun. 22/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Chiaimento su link software: : necessità di uso per le directory e per creare link in gerarchie residenti su dispositivi fisici diversi.
Ripreso discorso sulla ridirezione. Altri esempi di filtri (di nuovo Luc. 18): comando/filtro more. Precisazione sul more usato come comando. Altri esempi di filtri (di nuovo Luc. 18): sort [opzioni -r, reverse, -f, insensibile a maiuscole/minuscole, -c/-C, check se ordinato (spiegato valore di successo e di insuccesso con echo $?), -u, unique cioè ordinamento con eliminazione dei doppi], grep [opzioni -n per vedere il numero d'ordine della linea nel file, -i per cercare il pattern maiuscolo o minuscolo, -v per invertire la ricerca e sintassi particolari come '^c' per cercare le linee che iniziano per c, 'a$' per cercare le linee che terminano per a, e infine '\.$' per cercare le linee che terminano con il carattere punto (necessità di usare il meta-carattere di escape \)], rev, head, tail, wc (con opzioni -c, -w, -l e differenze fra filtro e comando).
Chiarimento su numeri impliciti della ridirezione dello standard input e dello standard output. Ridirezione dello standard error (Luc. 21) con esempi: in particolare, uso di /dev/null. (Lucido 22 saltato)
Piping: composizione di comandi/filtro (Luc. 23, 24). Realizzazione mediante più processi e canali di comunicazione. Esempi semplici con uso anche del filtro tee ed esempio che mostra la presenza di un processo per ogni comando in piping.
Esecuzione di comandi in background (Luc. 25, 26): problema di ridirezione standard output e standard error (consigliata) e dello standard input (necessaria almeno in Bourne shell!). Uso del comando kill.

L
2
Mer. 24/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Altri comandi: date e diff, mentre find lasciato da guardare agli studenti (Luc. 27).
Introduzione alla programmazione in shell (Luc. 28): in particolare, introdotto convenzione nei nomi dei file comandi (.sh) e spiegato necessità di introdurre lo shabang (#!/bin/sh). Spiegato concetto di variabile di shell (Luc. 29): valore come stringa, sintassi assegnamento e sintassi per riferire il valore. Concetto di ambiente di shell (Luc. 30): il processo SHELL generato per l'esecuzione di ogni comando riceve per copia l'ambiente dello shell padre (con ad esempio, PATH, HOME e directory corrente): comando env per visualizzare l'ambiente. Differenza fra variabili di ambiente e variabili di shell: il comando export per passare una variabile di shell nell'ambiente ed esempio relativo (di fatto primo esempio di file comandi cioè di script e quindi spiegato come scriverlo con un editor e quindi impostargli il diritto di esecuzione). Mostrato che una modifica di una variabile di ambiente effettuata da un sotto-shell (con un altro file comandi) ha effetto solo per quel processo e non anche nel processo padre. Sostituzioni attuate dallo shell (Luc. 32 e 33). Mostrati gli ulteriori metacaratteri [ ] (ancora Luc. 33) con vari esempi (Luc. 34).
Ripreso concetto di variabile (Luc. 35): altro esempio semplice di file comandi con le variabili di ambiente PATH, HOME e directory corrente. Esempio di variabili shell con necessità sia di valutazione di comandi (uso di backquote ``) che del comando expr.
L
2
Ven. 26/03/2021
ESERCITAZIONE IN STREAMING A CAUSA DEL CORONA VIRUS.
Organizzate 30 stanze virtuali (usato ZOOM) con suddivisione degli studenti a loro piacimento (su loro richiesta) con l'aiuto di Stefano Allegretti: si veda il documento EsercitazioneVenerdì26Marzo2021.pdf.
E
4
Lun. 29/03/2021
EZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Inibizione delle sostituzioni attuate dallo shell (Luc. 36): esempi vari e necessità di eval.
Passaggio di parametri nei file comandi (Luc. 37): $1, $2, $3, etc; spiegato significato di $0; spiegato comandi shift e set.
Introdotto quindi altre pseudo-variabili predefinite (Luc. 37): $*, $#, $?, $$: mostrato esempio di file comandi (file provaPar) e suo funzionamento con 4 parametri e spiegato il funzionamento del comando shift. Mostrato un esempio di file comandi (file DIR.sh) con uso della pseudo-variabile/parametro $0 e varie invocazioni. Ripreso concetto di return code dei comandi (Luc. 38).
La struttura di controllo if per realizzare l'alternativa semplice (Luc. 39): primi esempi semplici (file if1.sh, if2.sh e if3.sh). Introdotto il comando test (Luc. 40): altri esempi di if (if4.sh, if5.sh e DIRCTL.sh). Spiegato la differenza di test -eq e di test =. Altri esempi di if anche con il comando read (Luc. 41, file LeggiEMostra.sh): uso di ridirezione per i file comandi e necessità di ridirezione su /dev/tty.
La struttura di controllo case per realizzare l'alternativa multipla (Luc. 42): primo esempio di uso che consente maggiore flessibilità nella interazione con l'utente (file readCase.sh).
Struttura di controllo per i cicli enumerativi: for (Luc. 43); diversi esempi (file for1.sh e for1-conConteggio.sh).
L
2
Mer. 31/03/2021
LEZIONE IN STREAMING (E VIDEO-REGISTRATA) A CAUSA DEL CORONA VIRUS.
Shell - Ripreso struttura di controllo for con esempi senza lista (crea.sh) e con altri esempi di 'liste' (file for4.sh e for4Bis.sh).
Strutture di controllo per i cicli non enumerativi: while e until (Luc. 44): LASCIATO DA GUARDARE AGLI STUDENTI GLI ESEMPI (file ce.sh e ceUtente.sh).
Discorso generale di come strutturare le soluzioni: due file comandi, uno iniziale e uno ricorsivo dato che la struttura gerarchica del file system è una struttura dati ricorsiva e spiegato la necessità del file iniziale per controlli, preparazione dell'ambiente (settaggio della variabile di ambiente PATH e suo export) e invocazione del file ricorsivo. Primo esempio di ricerca di un file in una gerarchia con due file comandi: illustrato il primo file comandi (Luc. 45, file Beginc.sh) e tutti i controlli con esempi di invocazioni sbagliate/corrette.
Mostrato secondo file comandi, quello ricorsivo, nella versione con ricerca breath-first (Luc. 46): poichè NON richiesto NON mostrato tramite una presentazione powerpoint passo-passo quello che succede nelle varie attivazioni ricorsive su una semplice gerarchia, ma fornita come video-presentazione. Verificato cosa succede nel caso di non settare la variabile PATH (e non esportare la modifica).
Presentato esercizio che conta tutti i file presenti in una gerarchia: mostrato in modo approfondito la versione (ver1) con file temporaneo globale che raccoglie tutti i nomi assoluti dei file contati e stampa il loro nome assoluto e il contenuto nel file comandi principale. Lasciato come esercizio di guardare le altre versioni: versione con variabile globale e valore di ritorno (ver2), versione con variabile locale e valore di ritorno (ver3) e versione con uso di scrittura e lettura in un file temporaneo globale del valore del conteggio (ver4).
L
2
Mer. 07/04/2021
L
2
Ven. 09/04/2021
E
4
Lun. 12/04/2021
L
2
Mer. 14/04/2021
L
2
Ven. 16/04/2021
E
4
Lun. 19/04/2021
L
2
Mer. 21/04/2021
L
2
Ven. 23/04/2021
E
4
Lun. 26/04/2021
L
2
Mer. 28/04/2021
L
2
Ven. 30/04/2021
E
4
Lun. 03/05/2021
L
2
Mer. 05/05/2021
L
2
Ven. 07/05/2021
E
4
Lun. 10/05/2021
L
2
Mer. 12/05/2021
L
2
Ven. 14/05/2021
E
4
Lun. 17/05/2021
L
2
Mer. 19/05/2021
L
2
Ven. 21/05/2021
E
4
Lun. 24/05/2021
L
2
Mer. 26/05/2021
L
2
Ven. 28/05/2021
E
4
Lun. 31/05/2021
L
2
Ven. 04/06/2021
E
4
Lun. 07/06/2021
L
2

Legenda:
E= Esercitazione
L= Lezione