Programma del corso di Sistemi Operativi + Laboratorio di Sistemi (a.a. 2009-2010) Università degli Studi di Messina Facoltà di Scienze MM. FF. NN. Corso di Laurea Triennale in Informatica (D.M. 270) Sistemi Operativi + Laboratorio di Sistemi Programma del corso (anno accademico 2009 – 2010) Programma del modulo di Sistemi Introduzione Cos'e' un sistema operativo Sistemi mainframe, da scrivania, con più unità di elaborazione, distribuiti, batterie di sistemi, sistemi di elaborazione in tempo reale, sistemi palmari Cenni sulle strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di protezione Struttura delle reti di calcolatori Strutture dei sistemi operativi Componenti del sistema Servizi di un sistema operativo Chiamate del sistema Programmi di sistema Struttura del sistema Macchine virtuali Progettazione e realizzazione di un sistema Generazione di sistemi Processi Concetto di processo Scheduling dei processi Algoritmi di scheduling Operazioni sui processi Processi cooperanti Comunicazione tra processi Comunicazione nei sistemi client-server Pagina 1 di 6 Programma del corso di Sistemi Operativi + Laboratorio di Sistemi (a.a. 2009-2010) Thread Introduzione Modelli di programmazione multithread Questioni di programmazione multithread Scheduling della CPU Concetti fondamentali Criteri di scheduling Algoritmi di scheduling: first come first served, shortest job first, round robin, scheduling a priorita', scheduling a code multiple Valutazione degli algoritmi Modelli di scheduling dei processi Sincronizzazione dei processi Introduzione Problema della sezione critica Architetture di sincronizzazione Semafori Problemi tipici di sincronizzazione Stallo dei processi Modello del sistema Caratteristiche delle situazioni di stallo Metodi per la gestione delle situazioni di stallo Prevenire le situazioni di stallo Evitare le situazioni di stallo Rilevamento delle situazioni di stallo Ripristino da situazioni di stallo Gestione della memoria Introduzione Avvicendamento dei processi (*)Assegnazione contigua della memoria: partizionamento statico, partizionamento dinamico (*)Strutture dati per la gestione del partizionamento dinamico: bitmap, liste concatenate, buddy system Paginazione Segmentazione Segmentazione con paginazione Memoria virtuale Introduzione Paginazione su richiesta Creazione dei processi Pagina 2 di 6 Programma del corso di Sistemi Operativi + Laboratorio di Sistemi (a.a. 2009-2010) Sostituzione delle pagine Assegnazione dei blocchi di memoria Interfaccia del file system Concetto di file Metodi d'accesso Struttura di directory Montaggio di un file system Condivisione di file Protezione Realizzazione del file system Struttura del file system Realizzazione del file system Realizzazione delle directory Metodi di assegnazione Gestione dello spazio libero Efficienza e prestazioni Cenni sui file system con annotazione delle modifiche (**)Buffer cache Struttura della buffer cache Ricerca di un buffer Lettura e scrittura dei blocchi disco Vantaggi e svantaggi della buffer cache (**)Rappresentazione interna dei file Inode Struttura di un regular file Directory Conversione di un pathname in inode (algoritmo namei) Superblock Assegnazione di un inode ad un nuovo file Allocazione dei blocchi disco (**)Chiamate di sistema al file system Open, read, write, lseek, close, creat, change directory/root/owner/mode, pipe, mount e umount, link e unlink Programma del modulo di Laboratorio di Sistemi Introduzione Conoscenza dei principali comandi utente di un sistema Unix: login e logout listato degli elementi di una directory (ls) manipolazione files (mv, rm, cp, touch) utilizzo dell'editor vi browsing dei files Pagina 3 di 6 Programma del corso di Sistemi Operativi + Laboratorio di Sistemi (a.a. 2009-2010) (more, less, cat) programmi di ricerca interna ai file (grep e principali attributi) programmi di ricerca di file all'interno del file system (find e principali attributi) manipolazione directory (cd, mkdir, rmdir) ridirezione input, output, pipe shell di Unix: prompt primario e secondario, aliasing dei comandi, caratteri jolly, completamento automatico dei comandi elenco dei processi: top, ps e principali attributi, pstree terminazione dei processi processi in background e foreground visualizzazione e modifica dei permessi di accesso ad un file/directory archiviazione (tar) e compressione dei file (gzip, bzip, zip) Organizzazione della pagine man man: come leggere le pagine del manuale Compiti essenziali di un amministratore di sistema Aggiunta e rimozione di utenti Aggiunta e rimozione di hardware Creazione dei backup Installazione di nuovo software Monitoraggio del sistema Individuazione dei problemi Aggiornamento della documentazione locale Verifica della sicurezza Assistenza agli utenti Come recuperare i file da Internet Avvio e shutdown del sistema Il bootstrapping Booting automatico e manuale I passi del processo di boot L'inizializzazione del kernel La configurazione dell'hardware I processi di sistema Operazioni con intervento dell'operatore esterno (solamente in caso di boot manuale) L'esecuzione degli script di inizializzazione L'operativita' in regime di multi utenza Il boot dei PC Il processo di boot dei PC boot loader di Linux: lilo La modalita' monoutente Linux Gli script di avvio Il reboot e lo shutdown Come arrestare il sistema: shutdown, halt, reboot telinit: modificare il run level di init Terminare init I poteri di root Il possesso dei file e dei processori Il superuser La scelta della password di root Diventare root su: sostituzione dell'identita' dell'utente Pagina 4 di 6 Programma del corso di Sistemi Operativi + Laboratorio di Sistemi (a.a. 2009-2010) sudo: un su limitato Cenni sugli altri pseudo-utenti: daemon, bin, sys, nobody Come controllare i processi I componenti di un processo PID: il numero identificativo di un processo PPID: il PID del processo genitore Identificativi efficaci di utente e di gruppo: UID e EUID, GID e EGID Il terminale di controllo Il ciclo di vita di un processo I segnali Kill: come inviare segnali Gli stati dei processi nice e renice: come influenzare le priorita' di scheduling Strumenti per monitorare i processi: ps, pstree, top Il filesystem I nomi di path Mounting e unmounting dei filesystem L'organizzazione della struttura dei file I tipi di file File veri e propri Directory I file di dispositivi a caratteri e a blocchi I socket di dominio UNIX I pipe denominanti I link simbolici Gli attributi dei file I bit di setuid e setgid I bit di permesso Visualizzare e modificare gli attributi dei file: chmod, chown, chgrp, umask Gestione degli utenti Il file/etc/passwd e i suoi campi: login, password, uid, gid, gecos, home directory, login shell Il file/etc/shadow Il file/etc/group Aggiungere nuovi utenti Modificare i file passwd e shadow Impostare una password iniziale Creare la home directory di un utente Copiare i file di startup di default Modificare il file/etc/group Impostazione delle quote di spazio su disco La rimozione degli utenti Utility per la gestione degli account Processi periodici cron: come effettuare lo schedule dei comandi Il formato dei file crontab Pagina 5 di 6 Programma del corso di Sistemi Operativi + Laboratorio di Sistemi (a.a. 2009-2010) La gestione delle crontab Alcuni usi pratici di cron Pulizia del filesystem La rotazione dei file di log Gestione dei backup Dispositivi, procedure, programmi e buone norme per il backup e il restore di un sistema Unix Programmi di archiviazione e compressione file: tar, compress, gzip, bzip2 Syslog e file di log Le politiche di logging Eliminazione, rotazione, archiviazione e individuazione dei file di log Syslog: il logger degli eventi di sistema La configurazione di syslogd L'uso di syslog all'interno dei programmi Estrarre le informazioni utili dai file di log Testi consigliati Sistemi operativi - settima edizione A. Silberschatz - P. Galvin - G. Gagne (*)I moderni sistemi operativi Andrew S. Tanenbaum (**) The design of the Unix Operating System Maurice J. Bach Unix - Manuale per l'amministratore di sistema - Terza edizione E. Nemeth - G. Snyder - S. Seebass - T. Hein 8871921526 2002 Daniele Giacomini - Appunti di Informatica Libera - Versione corrente 2009.1223 Liberamente scaricabile da http://appuntilinux.mirorr.garr.it/mirrors/appuntilinux Il docente ufficiale del corso Giacomo Fiumara Pagina 6 di 6