Un Sistema Operativo multiuser-multitask UNIX

Transcript

Un Sistema Operativo multiuser-multitask UNIX
Un Sistema Operativo multiuser-multitask
UNIX
I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti:
|
lucidi del corso di Architettura degli Elaboratori Dip. Informatica
dell’Università di Bari a cura di Pizzutilo, Tangorra, De Carolis
|
Corso UNIX di Roberto Polillo dell’Università di Milano
|
Corso Unix di Marco Liverani dell’Università di Roma
|
Corso di Laboratorio di sistemi Operativi – Dip. Informatica
dell’Università di Bari a cura di De Carolis, Bianchi.
I SISTEMI OPERATIVI DI RETE
Obiettivo principale
Implementazione servizi di rete
| – Configurazione automatica delle workstation (DHCP)
| – Gestione centralizzata degli utenti (NIS)
| – Condivisione di risorse (NFS, SAMBA)
| – Servizi base per Internet (HTTP, FTP, TELNET, SSH)
| – Servizi di Forwarding e Routing
| – Servizi di Firewall e NAT (IPTABLES)
| – Servizi di Virtual Private Network
| – Servizi avanzati per Internet (DNS, SMTP, POP, IMAP)
Scelta degli strumenti
Occorre un sistema operativo adatto
• UNIX
– Multiutente (multiuser)
– Concorrente (multitasking)
– Tradizionalmente adottato per servizi di rete
– Ne esistono distribuzioni sia commerciali che “libere”
• Windows
– Generalmente considerato meno affidabile
– Alti costi per acquisizione licenze
1
Breve storia di UNIX
¾ Sviluppato inizialmente, a partire dal 1969, da Ken Thompson
e Dennis Ritchie del gruppo di ricerca dei Bell Laboratories.
Incorporò caratteristiche di altri sistemi operativi (es.
MULTICS).
¾ La terza versione, scritta in C, fu sviluppata ai Bell Labs
appositamente per supportare UNIX.
¾ La più significativa delle versioni UNIX non-Bell fu
sviluppata alla University of California at Berkeley (Berkeley
Software Distributions).
¾ Sviluppato per il VAX, 4.3BSD è una delle versioni più
importanti e ne è stato fatto il porting su varie piattaforme.
¾ 4BSD UNIX è il risultato di un finanziamento DARPA
per lo sviluppo di uno standard UNIX ad uso governativo.
¾ Vari progetti di standardizzazione hanno tentato di consolidare
le varianti di UNIX, per ottenere un’unica interfaccia di
programmazione verso il sistema.
Storia delle versioni UNIX
2
Architettura di UNIX
Come molti sistemi operativi, UNIX consiste di 2 parti separate:
|
Kernel: tutto ciò che si trova sotto l’interfaccia delle
system-call e sopra l’hardware fisico.
Fornisce il file system, lo scheduling della CPU,
la gestione della memoria ed altre funzioni di
SO, tramite le chiamate di sistema (system call);
|
Programmi di sistema: impiegano le chiamate di
sistema, supportate dal kernel, per fornire funzioni
utili, come compilazione e manipolazione di file.
UNIX
È un sistema operativo:
ª Multiuser
ª Multitask : multiprocessing - multithreading
ª Time-sharing
shell
tools
kernel
3
UNIX : Sistema Operativo
multistrato
utente
gui
Xwindow
Programmi di utilità
(shell, editor, compilatori ed interpreti,…)
Librerie standard di sistema
KERNEL
HARDWARE
Gestione dei processi
La rappresentazione dei processi è il principale problema di
progetto di un sistema operativo.
| UNIX si distingue dagli altri sistemi operativi per la
semplicità con cui processi multipli possono essere creati e
manipolati.
| I processi vengono raprresentati in UNIX per mezzo di vari
blocchi di controllo (control blocks).
z I blocchi di controllo associati ad un processo vengono
memorizzati nel kernel.
z L’informazione contenuta nei blocchi di controllo viene
utilizzata dal kernel per controllare i processi ed
effettuare lo scheduling della CPU.
4
System Call
|
|
|
|
Le chiamate di sistema definiscono l’interfaccia del
programmatore verso UNIX.
L’insieme dei programmi di sistema disponibili definisce
l’interfaccia utente.
Le interfacce del programmatore ed utente definiscono il
contesto che deve essere supportato dal kernel.
Si hanno, approssimativamente, tre categorie di system call
in UNIX:
z Manipolazione di file (le stesse chiamate di sistema
supportano anche la manipolazione dei dispositivi).
z Controllo dei processi.
z Manipolazione dell’informazione.
Controllo dei processi -1
9 Un processo è un programma in esecuzione identificato univocamente
dall’identificatore di processo (un intero).
9 . Un processo necessita di alcune risorse per assolvere il proprio
compito: tempo di CPU, memoria, file e dispositivi di I/O.
9 Il SO è responsabile delle attività di gestione dei processi:
‰ Creazione e cancellazione di processi.
‰ Sospensione e riattivazione di processi.
‰ Fornire meccanismi per:
ƒ sincronizzazione di processi
ƒ comunicazione fra processi
9 System call per il controllo dei processi:
Fork, execve, exit, wait….
9 Processo zombie: processo terminato dopo il padre.
5
Stati di un processo
Ready
pronto ad essere eseguito, ma non in esecuzione
running
in esecuzione
waiting
in attesa di un evento o di un dato
System call di gestione dei processi
Controllo dei processi — 2
|
|
I processi comunicano fra loro attraverso pipe, code di
byte che sono accessibili tramite un descrittore di file.
Tutti i processi utente sono figli di un unico processo,
init.
• init crea un processo getty, che
inizializza i parametri della
linea del terminale e attende il
login name dell’utente per
passarlo al processo login.
• Login confronta l’user
identifier per verificarne i diritti
di accesso al sistema.esegue una
shell che crea sottoprocessi per
ciascun comando utente.
6
Gruppi di processi
Un insieme di processi correlati che concorrono alla
realizzazione di un task comune.
|
|
In ogni istante, un unico gruppo di processi può utilizzare un
certo terminale di I/O.
z Il processo (unico) in foreground si svolge sotto gli occhi
dall’utente al terminale.
z I processi in background realizzano il loro compito senza
interagire direttamente con l’utente.
Ciascun processo eredita il proprio terminale di controllo dal
processo padre.
Comunicazione tra processi
Ö La maggior parte dei sistemi UNIX non permette la condivisione della
memoria in quanto l’hardware nativo PDP-11 non la incoraggiava.
Ö La pipe è il meccanismo IPC più caratteristico di UNIX, che garantisce un
flusso unidirezionale affidabile di byte tra due processi.
Ö Nel 4.3BSD, le pipe sono implementate come un caso speciale del
meccanismo delle socket, il quale non fornisce un’interfaccia generale solo
a funzioni tipo pipe, che sono locali su una macchina, ma anche a funzioni
di rete.
Routine di libreria
¾ L’interfaccia delle chiamate di sistema in UNIX viene supportata ed
ampliata da una notevole collezione di routine di libreria.
¾ I file header forniscono la definizione di strutture dati complesse impiegate
nelle chiamate di sistema.
¾ Librerie addizionali sono fornite per funzioni matematiche, accesso alla
rete, conversioni di dati, ecc.
7
Scheduling della CPU
Ciascun processo ha associata una propria priorità di scheduling;
numeri più alti indicano priorità più basse.
| La presenza di feedback negativo nello scheduling della CPU
diminuisce il rischio che un processo ne prenda possesso in modo
esclusivo.
| Tecniche di invecchiamento (aging) dei processi vengono impiegate per
impedire l’attesa indefinita (starvation).
| Quando un processo decide di rilasciare la CPU, si pone in stato di
sleep per un evento.
| Quando tale evento accade, il processo di sistema che lo gestisce
chiama wakeup con l’indirizzo corrispondente all’evento, e tutti i
processi che si trovano in stato di sleep allo stesso indirizzo vengono
spostati nella coda ready per essere eseguiti.
|
Interfaccia utente
9Programmatori ed utenti interagiscono prevalentemente con
programmi di sistema già esistenti: Le chiamate di sistema
richieste sono incorporate nel programma e non devono essere
conosciute dall’utente.
9I programmi di sistema più comuni sono orientati alla gestione
di file e directory.
ƒ Directory: mkdir, rmdir, cd, pwd
ƒ File: ls, cp, mv, rm
9Altri programmi sono relativi a editor (e.g., emacs, vi)
formattatori di testo (e.g., troff, TEX), e altro.
8
Shell e comandi
ª Shell o interprete dei comandi – il processo utente che esegue i
programmi.
ª Viene chiamata shell perché “ingloba” il kernel.
ª La shell indica che è pronta ad accettare un nuovo comando
visualizzando un prompt e l’utente introduce comandi su una
singola linea.
ª La shell naviga attraverso il percorso di ricerca per trovare il file
relativo al comando, che viene in seguito caricato ed eseguito.
ª Le directory /bin e /usr/bin (che contengono la maggior parte dei
comandi) sono quasi sempre nel percorso di ricerca.
ª La shell normalmente sospende la propria esecuzione fino al
termine del comando.
Standard I/O
|
|
|
La maggior parte dei processi, quando iniziano la loro esecuzione, si
aspettano di poter disporre di tre descrittori di file aperti:
z standard input – il processo può leggere cosa viene scritto
dall’utente
z standard output – il processo può inviare l’output sullo schermo
dell’utente
z standard error – uscita dell’errore
Molti programmi possono anche utilizzare file (piuttosto che un
terminale) per lo standard input e lo standard output.
Redirezione dell’I/O: Le shell più comuni dispongono di una semplice
sintassi per cambiare i file aperti per l’I/O standard di un processo.
9
Classi di comandi
Amministrazione di sistema
| Gestione files
| Elaborazione testi
| Sviluppo software
| Comunicazione
| ….
|
Pipeline, Filtri, e Shell Script
¾ I singoli comandi possono essere “accodati” per mezzo
di una barra verticale | (pipe). In questo modo, l’output
del comando a sinistra della pipe costituisce l’input per il
comando alla sua destra.
% ls | pr | lpr
¾ Filtro – un comando che passa il proprio standard input
allo standard output, compiendo qualche elaborazione
(es. pr).
¾ Programmare una nuova shell personalizzata, con
sintassi e semantica diverse, cambia la visione
dell’utente, ma non modifica il kernel o l’interfaccia del
programmatore.
¾ XWindow è un’interfaccia utente a icone molto diffusa
sui sistemi UNIX.
10
Redirezione dell’I/O standard
Comando
% ls > file_a
% pr < file_a > file_b
% lpr < file_b
Significato del comando
dirige l’output di ls sul file file_a
input da file_a e output su file_b
input da file_b
%% make program > & errs
salva sia lo standard output che lo
standard error su un file
Manipolazione di file
9 Un file è una sequenza di byte; il kernel non impone ai file nessuna
9
9
9
9
struttura.
I file sono raccolti in directory, organizzate ad albero.
Le directory sono file che contengono informazioni su come reperire
altri file.
Path name (nome di percorso): identifica un file specificando un
cammino che, attraverso la struttura a directory, raggiunge il file.
ƒ Un path name assoluto inizia nella radice del file system.
ƒ Un path name relativo inizia nella directory corrente.
System call per la manipolazione di file: create, open, read, write,
close, unlink, trunc.
11
Struttura delle directory in UNIX
Vantaggi principali di UNIX
|
|
|
|
|
|
|
|
|
|
Scritto in linguaggio ad alto livello.
Distribuito sotto forma di sorgenti.
Fornisce le primitive di un sistema operativo potente su di una
piattaforma economica.
Piccola dimensione, modulare, progetto “pulito”.
Progettato per realizzare il time–sharing.
Possiede un’interfaccia utente (shell) semplice da usare e standard,
che può essere facilmente sostituita e personalizzata.
File system con directory a più livelli, strutturate ad albero.
I file sono supportati dal kernel come sequenze di byte senza
struttura.
Supporta processi multipli; un processo può creare facilmente altri
processi.
Sistema altamente interattivo, fornisce facilities per lo sviluppo di
programmi.
12
Cosa è LINUX
9 È un SO UNIX standard
9 Tesi di laurea di Linus Torwalds all’università di Helsinki in
Finlandia
9 Sviluppato a partire da Minix, un sistema UNIX molto piccolo
9 1991 è stata rilasciata la prima versione (0.02)
9 Nel 1994 fu rilasciata la versione 1.0 del Kernel Linux
9 L’ultima versione corrente è la 2.4 (Gennaio 2001) e … lo
sviluppo di Linux continua.
9 È considerato un SO eccellente, economico alternativo ad altri
SO molto costosi.(i.e.UNIX,NT, W2000).
Linux: le caratteristiche
Î Multitasking: più programmi funzionano contemporaneamente.
Î Multiuser: più utenti nella stessa macchina contemporaneamente.
Î Scalabile: in modo testo ha pretese hardware minime.
Î Funziona su diverse architetture: PC, SPARC, Mac,…
Î Affianca diversi SO: Windows, Solaris, MS-DOS, MacOs,…
Ha infatti accesso trasparente a partizioni MS-DOS (o partizioni OS/2 FAT)
tramite il filesystem.
Î Gestisce multiprocessor.
Ô Supporto rete TCP/IP, incluso ftp, telnet, NFS...
Ô Modalità protetta: ogni programma in esecuzione occupa specifici indirizzi di
memoria, "protetti" dalla possibilità che altri programmi vadano ad
occupare gli stessi indirizzi causando in tal modo il blocco del sistema.
Ô Possibilità di utilizzare un completo ambiente grafico, una GUI (Graphical
User Interface) conosciuta con il nome di X Windows.
13
Vantaggi di Linux
• Libertà: codici sorgenti aperti; chiunque può utilizzarli, modificarli, etc.
sempre in evoluzione
• Stabilità: Linux non si blocca praticamente, mai. È un sistema
completamente multitasking e multiutente. Se un programma si blocca è
possibile terminarlo senza alterare la stabilità dell’intero sistema.
•Sicurezza: accesso ad utenti autorizzati. Diritti d’accesso differenziati per
ogni utente.
•Trasparenza: Gli errori Linux hanno la tendenza ad essere scoperti e
corretti rapidamente per mezzo di patch scaricabili da internet.
• Gratuità: è gratuito (si paga eventualmente solo il prezzo della
distribuzione) - anche molti applicativi sono gratuiti
Svantaggi di Linux
•Mancanza di una “controparte” a cui gli utenti possono far riferimento per
esigenze specifiche
•Applicazioni ridondanti
•Applicazioni difficili da manutenere perché poco o per nulla documentate
Le varie distribuzioni
www.suse.de/fr
www.redhat.com
www.slackware.org
www.linux-mandrake.com
www.debian.org
14