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