Corso di
Laboratorio di Informatica: Sistemi Operativi
Corso di Laurea in Informatica,
Università di Firenze
Anno accademico 2008/2009
Prof. Luca Ferrari
e-mail: [email protected]
telefono: 055 4237454
Ricevimento: contattatemi e ci metteremo senz’altro
d’accordo.
I lucidi delle lezioni ed altro eventuale materiale didattico
potranno essere reperiti alla pagina
http://www.dsi.unifi.it/~ferrari1.1
Programma del corso (1/2)
Introduzione
1. Preliminari sui sistemi operativi 2. Storia e sviluppo dei sistemi operativi
Storia di UNIX e di Linux
1. Storia ed evoluzione di UNIX 2. I progetti di standardizzazione 3. Minix 4.
Organizzazioni di sistema (monolitica e client/server) 5. Avvento di Linux 6. Concetto di
Open Source e Free Software Foundation 5. Distribuzioni
Struttura di UNIX e di Linux
1. Livelli e componenti di UNIX 2. Shell 3. Libreria Standard 4. Kernel 5. Kernel modulare
di Linux 6. Introduzione al file system di Linux
I comandi principali
1. Avvio di un sistema Linux 2. Connessione e disconnessione dal sistema 3. Shell 4.
Comandi 5. Filtri 6. Manuali: man, info 7. Comandi principali per la gestione di files e
directories 8. Standard input, output, error e redirezionamento 9. Pipelines 10. Il comando
find 11. Il comando grep 12. L’editor vi 13. Comandi per la stampa
La gestione dei files
1. Implementazione del file system e dei files in un sistema UNIX 2. Index node 3. Link 4.
Attributi dei files 6. Gestione dei permessi per files e directories 7. Il file system proc di Linux
8. Montare un file system 9. Compressione e uso del tar
1.2
Programma del corso (2/2)
Cenni al linguaggio C
1. Cenni storici 2. Libreria standard 3. Sintassi di base 4. Variabili e tipi 5. Espressioni e
operatori; strutture di controllo 6. Funzioni 7. Puntatori
La gestione dei processi
1. Introduzione ai processi 2. Stati di un processo 3. Comandi per la gestione dei
processi UNIX 4. System calls per la gestione dei processi: fork(), wait(), exec(), exit(),…
5. Signals 6. Scheduling in UNIX
La shell bash
1. Introduzione alle shell 2. Programmi e scripts 3. Introduzione agli script per bash 4.
Gestione delle variabili; variabili d’ambiente 5. Sostituzione dei comandi 6. Operatori
aritmetici e valutazioni aritmetiche 7. Strutture condizionali: if-then-else-fi; sintassi delle
espressioni di controllo 8. Parametri posizionali e parametri speciali 9. Strutture
condizionali: case-in-esac 10. Cicli: for-in-do-done 11. Arrays 12. Debugging 13. Cicli:
while-do-done; utilizzo di continue e break 14. Cicli: until-do-done 15. Gestione delle
stringhe e sostituzione dei parametri 16. Funzioni
1.3
Modalità di esame
L'esame consiste nella realizzazione di scripts che risolvono un esercizio assegnato dal
docente. L'esercizio deve essere svolto individualmente o a gruppi di due persone.
Gli scripts devono essere realizzati in una settimana.
Successivamente alla consegna del programma al docente, lo studente sostiene una prova
orale che consiste in una discussione sugli scripts realizzati più un paio di domande di
teoria sul programma svolto durante l’anno.
Prenotazione Esame
Deve essere effettuata la prenotazione all'esame inviando una email con soggetto
Prenotazione Laboratorio di S.O. all’indirizzo:
[email protected]
specificando inoltre:
Nome, Cognome, Nome del corso, Corso di Laurea.
Il docente invierà l'esercizio (sempre via email) al più tardi una decina di giorni prima della
data fissata per l’orale.
La consegna prevede
•una relazione che illustri i vari passi della procedura che risolve l'esercizio e gli scripts
implementati;
•sia la relazione che gli scripts possono essere consegnati inviando una email
all'indirizzo: [email protected];
•nel caso che lo script non funzioni e dunque non sia possibile passare alla prova orale,
il docente manderà un messaggio opportuno.
1.4
Libri di Testo
Linux La guida , M. Welsh, M. K. Dalheimwer, L. Kaufman, Apogeo
Guida a Unix con Linux, di Jack Dent, Tony Gaddis, Apogeo
Per ulteriori approfondimenti sui S.O.
Sistemi Operativi, V Edizione, A. Silberschatz and P. B. Galvin, Addison Wesley.
I Moderni Sistemi Operativi, A. S. Tanenbaum, Jackson Al Kelley.
Sistemi Operativi, P. Ancillotti, M. Boari, A. Ciampolini, G. Lipari, McGraw-Hill.
Manuali online
Appunti_di_informatica_libera.html, Daniele Giacomini
Linux Guida dell’Utente, Larry Greenfield
Linux HOWTO - Installazione e Configurazione
BASH Programming - Introduction HOWTO
1.5
Cos’è un sistema operativo?
 Un insieme di programmi che agisce come intermediario fra un utente
di un computer e l’hardware del computer stesso.
 Scopi di un sistema operativo:
 Fornire servizi ai programmi (I/O, read, write, timer, interrupt
... ) utilizzando specifiche istruzioni (chiamate di sistema, o
system calls).
 Rendere
la macchina conveniente da utilizzare,
organizzando le sue risorse e condividendole fra gli utenti.
 Utilizzo efficiente dell’hardware.
1.6
Componenti di un calcolatore
1. Hardware – Fornisce le risorse di calcolo di base (CPU,
memorie, dispositivi di I/O).
2. Sistema operativo – E’ un insieme di programmi speciale che
controlla e coordina l’uso dell’hardware tra i vari programmi di
sistema e applicativi per i vari utenti.
3. Programmi di sistema e applicativi – Definiscono il modo in cui le
risorse del calcolatore vengono utilizzate per risolvere i problemi
computazionali degli utenti (compilatori, sistemi di basi di dati,
giochi, browsers).
4. Utenti (persone, macchine, altri calcolatori).
1.7
Visione astratta dei componenti di un
calcolatore
1.8
Definizioni (funzioni) di un sistema operativo
 Allocatore di risorse – alloca le risorse nella maniera più
conveniente da un punto di vista globale.
 Programmi di controllo – controlla l’esecuzione dei
programmi dell’utente e le operazioni dei dispositivi di
I/O.
 Kernel – l’unico insieme di programmi in continua
esecuzione (a differenza dei programmi applicativi).
1.9
Storia dei sistemi operativi
 Prima generazione 1945 - 1955
 tubi a vuoto, plance
 Seconda generazione 1955 - 1965
 transistors, batch systems
 Terza generazione 1965 – 1980
 multiprogrammazione
 Quarta generazione 1980 – oggi
 personal computers
1.10
Batch Systems (2a generazione)
Batch system primitivi:
 porta schede al 1401;
 copia le schede dal lettore al nastro;
 inserisci il nastro sul 7094 che elabora il job e
prepara il nastro di output;
 metti il nastro di output sul 1401 che stampa;
1.11
Batch Systems
 Struttura di un tipico job di compilazione di un programma Fortran.
1.12
Batch Systems
 Velocizzazione delle operazioni raggruppando più
jobs separati (batch = raggruppare).
 Successione automatica dei jobs – trasferimento
automatico del controllo da un job ad un altro. Primo
rudimentale sistema operativo.
 Uso di una piccola macchina per scrivere i jobs su
un nastro e stampare i risultati dal nastro. Si tratta
comunque di una macchina priva di abilità
computazionale.
1.13
Configurazione della memoria principale per un
Batch System semplice
1.14
Batch Systems con multiprogrammazione (3a
generazione)
Diversi jobs sono mantenuti nella memoria principale nello
stesso tempo (pool di jobs), e la CPU viene suddivisa tra di
essi (scheduling della CPU).
1.15
Caratteristiche di un SO necessarie per la
multiprogrammazione
 Scheduling della CPU – Il sistema deve scegliere tra
diversi jobs in memoria pronti per l’esecuzione.
 Gestione della memoria – Il sistema deve ripartire la
memoria tra diversi jobs.
 Il sistema deve fornire opportune procedure di I/O.
 Sistemi di spooling (Simultaneous Peripheral Operation
On-Line) per trattare gli output.
1.16
Sistemi Time-Sharing – Calcolo interattivo
 La CPU viene suddivisa fra diversi jobs che sono mantenuti in
memoria e su disco (la CPU viene assegnata a un job solo se il
job è in memoria).
 I jobs vengono continuamente scambiati fra memoria principale e
secondaria.
 Viene fornita una comunicazione on-line fra l’utente e il sistema;
quando il sistema operativo termina l’esecuzione di un comando,
va in cerca del successivo dalla tastiera dell’utente.
 Un sistema on-line deve essere a disposizione degli utenti per
avere accesso ai dati e ai programmi.
1.17
SO Time-Sharing
 CTSS (Compatible Time Sharing System - 1962)
 MULTICS (MULTIplexed Information and
Computing Service - 1965)
 UNIX (1969)
1.18
Personal Computers (4a generazione)
 Personal computers – Calcolatore dedicato a un
singolo utente.
 Dispositivi I/O – Tastiere, mouse, schermi, piccole
stampanti.
 Convenienza per l’utente e feedback immediato.
 Si può adottare la tecnologia sviluppata per grossi
sistemi operativi. Spesso i singoli utenti utilizzano
semplicemente il calcolatore e non hanno bisogno di
utilizzare sistemi di protezione particolarmente
avanzati della CPU.
 E’ possibile utilizzare differenti tipi di sistemi operativi
(Windows, MacOS, UNIX, Linux).
1.19
Personal Computer
 MS-DOS (MicroSoft Disk Operating System -1980)
 Windows (1985)
 Windows 95, Windows 98
 Windows NT, Windows 2000 (5th version of NT),
Windows XP
 UNIX
 Minix (1987)
 Linux (1994)
1.20
Sistemi di rete e distribuiti
 Necessitano di un’infrastruttura di rete.
 Local area networks (LAN) o Wide area networks (WAN).
 Possono essere sistemi client-server oppure peer-to-
peer.
1.21