Linux
Corso di Sistemi Operativi
A cura di :
Domenico Cotroneo
Riferimenti
Linux Programming Bible
by John Goerzen
The Linux Documentation Project:
ftp://metalab.unc.edu/pub/Linux/docs/LDP/
“Rute Users Tutorial and Exposition”, Paul Sheer,
March 28, 2000 http:/www.obsidian.co.za/rute/
Computer system
Banking
System
Airline
Reservation
Compilers
Compilers
Editors
Editors
Web
Browser
Command
Command
Interpreter
Interpreter
Operating
Operating System
System
Application
Programs
System
Programs
Machine
Machine Language
Language
Microprogramming
Microprogramming
hardware
Hardware
(CPU, memory, disks,terminals...)
1
Cos’è un sistema operativo?
Un programma (o un insieme di
programmi) che gestisce le risorse di un
calcolatore ...
… deve fornire ai processi un accesso
SICURO e GARANTITO alle risorse
Classificazione dei S.O.
monoprogrammati
multiprogrammati
„
„
multitasking (permette alla CPU di
svincolarsi dai tempi morti dovuti alla
lentezza delle periferiche);
timesharing (fornisce all’utente una
sensazione di immediatezza di risposta)
… monoutenti e multiutenti
Kernel
Il kernel di un sistema operativo è un piccolo
nucleo software che fornisce i servizi minimi
necessari
per
l’implementazione
delle
funzionalità aggiuntive dello stesso.
Le funzionalità del filesystem o dei protocolli
di comunicazione, ad esempio, sono
implementate come processi client del
kernel.
2
Kernel:
...il numero di risorse presenti nel sistema, essendo
limitato, rende necessario un controllo sulle richieste
multiple di una stessa risorsa (ad es. un disco,
un’interfaccia seriale, un’interfaccia di rete ecc…);
...è necessario controllare l’accesso, richiesto da parte
di uno o più processi-utente, a risorse critiche o condivise
(ad es. memorie condivise, code di messaggi, strutture
dati di un processo ecc…).
Kernel: architettura tradizionale
Kernel: architettura attuale
kernel
coff
a.out
elf
exec
switch
file mappings
device mappings
NFS
FFS
Virtual
memory
framework
Vnode/vfs
interface
s5fs
RFS
anonymous mappings
Common
facilities
disk driver
time-sharing processes
block
device
switch
Scheduler
framework
real-time processes
tape driver
STREAMS
network
driver
tty
driver
3
Unix
…è un SO multiutente e multitasking (time-sharing)
…nato con l’obiettivo di sostituire i grossi e pesanti
sistemi per la gestione di mainframe presenti alla fine
degli anni 60.
PRO
Robustezza, Flessibilità, Portabilità, Multiutenza
CONTRO
Configurazione complessa, interfaccia “shell-oriented”
Genealogia di Unix
(semplificata)
Verso
Verso la
la fine
fine degli
degli anni
anni 60
60 è
è in
in corso
corso un
un progetto
progetto per
per
l’implementazione
l’implementazione del
del sistema
sistema MULTICS
MULTICS presso
presso il
il
MIT.
MIT. Questo
Questo sistema
sistema operativo
operativo è
è il
il precursore
precursore degli
degli
attuali
attuali sistemi
sistemi a
a partizione
partizione di
di tempo
tempo dove
dove vengono
vengono
eseguiti
eseguiti più
più processi
processi contemporaneamente.
contemporaneamente.
Questo
sistema
risulta
già
in
fase
di
Questo
sistema
risulta
già
in
fase
di
implementazione
implementazione piuttosto
piuttosto complicato
complicato e
e complesso
complesso
marappresenta
marappresenta un
un “punto
“punto di
di inizio”.
inizio”.
Genealogia di Unix
(semplificata)
Il
Il team
team della
della AT&T
AT&T che
che segue
segue il
il progetto
progetto MULTICS
MULTICS
presso
presso il
il MIT
MIT decide
decide di
di realizzare
realizzare un
un sistema
sistema più
più
semplice.
semplice. Alcuni
Alcuni ricercatori
ricercatori iniziano
iniziano a
a collaborare
collaborare alla
alla
stesura
stesura di
di questo
questo sistema.
sistema. Il
Il team
team acquista
acquista il
il sistema
sistema
PDP-7
PDP-7 della
della Digital
Digital e
e dopo
dopo non
non molto
molto nasce
nasce il
il primo
primo
rudimentale
rudimentale Unix.
Unix.
File
File system,
system, scheduling
scheduling e
e gestione
gestione del
del sistema
sistema sono
sono
innovativi.
innovativi. Il
Il nuovo
nuovo sistema
sistema risulta
risulta meno
meno complesso
complesso
e
e complicato
complicato del
del suo
suo predecessore
predecessore MULTICS.
MULTICS.
4
Genealogia di Unix
(semplificata)
Il
Il sistema
sistema Unix
Unix viene
viene sviluppato
sviluppato anche
anche per
per il
il
diffusissimo
diffusissimo PDP-11
PDP-11 della
della Digital
Digital e
e diventa
diventa il
il sistema
sistema
per
per le
le piattaforme
piattaforme DEC.
DEC. In
In questi
questi anni
anni inoltre
inoltre nasce
nasce il
il
linguaggio
linguaggio C.
C. Nasce
Nasce una
una prima
prima implementazione
implementazione
UNICS
UNICS (Uniplexed
(Uniplexed Information
Information and
and Computing
Computing
Service)
Service)
Parallelamente
Parallelamente nel
nel mondo
mondo Universitario
Universitario si
si inizia
inizia lo
lo
sviluppo
sviluppo di
di una
una versione
versione di
di questo
questo sistema,
sistema, il
il BSD
BSD dal
dal
nome
nome dell’Università
dell’Università di
di Berkeley.
Berkeley.
Genealogia di Unix
(semplificata)
Ormai
Ormai consolidata
consolidata da
da tempo
tempo la
la divisione
divisione tra
tra ii sistemi
sistemi
Unix
Unix della
della At&T
At&T (System
(System V
V release
release 3)
3) e
e quello
quello BSD,
BSD,
inizia
inizia con
con successo
successo il
il porting
porting del
del sistema
sistema sulla
sulla
maggior
maggior parte
parte degli
degli elaboratori
elaboratori esistenti
esistenti sul
sul mercato.
mercato.
Inizia
Inizia anche
anche lo
lo sviluppo
sviluppo di
di moduli
moduli per
per il
il supporto
supporto
delle
reti.
Parallelamente
prende
piede
il
delle reti. Parallelamente prende piede il progetto
progetto
ARPANET.
ARPANET.
Tutti
Tutti ii sistemi
sistemi Unix
Unix rispondo
rispondo a
a questa
questa “iniziativa”
“iniziativa”
includendo
includendo il
il supporto
supporto ai
ai protocolli
protocolli implementati
implementati
nella
nella rete
rete mondiale
mondiale TCP/IP).
TCP/IP).
Genealogia di Unix
(semplificata)
Nel
Nel mondo
mondo dei
dei personal
personal computer
computer nasce
nasce XENIX.
XENIX. Il
Il
primo
primo Unix
Unix per
per processori
processori inferiori
inferiori al
al 386.
386. Questo
Questo
sistema
sistema consente
consente la
la diffusione
diffusione di
di Unix
Unix nel
nel mondo
mondo dei
dei
personal
personal computer.
computer.
Con
Con la
la nascita
nascita di
di processori
processori 386
386 e
e superiori
superiori arrivano
arrivano
anche
anche nuovi
nuovi sistemi
sistemi quali
quali SCO,
SCO, Linux
Linux e
e FreeBSD.
FreeBSD.
Il
Il MIT
MIT implementa
implementa una
una interfaccia
interfaccia grafica
grafica windows
windows
per
per il
il sistema
sistema Unix
Unix (X-Window).
(X-Window).
5
UNIX Goals
Il
Il sistema
sistema UNIX
UNIX èè stato
stato progettato
progettato da
da programmatori
programmatori per
per ii
programmatori
programmatori
...un
...un team
team di
di programmatori
programmatori
realizzazione
realizzazione di
di un
un unico
unico sistema
sistema
cooperanti
cooperanti
per
per
la
la
Facilitare
Facilitare la
la cooperazione
cooperazione di
di utenti
utenti condividendo
condividendo le
le
informazioni...
informazioni...
...in
modo,
però,
controllato
...in modo, però, controllato
UNIX Goals
Cosa
Cosa vorrebbe
vorrebbe un
un programmatore
programmatore da
da un
un sistema
sistema
operativo
operativo “developer-oriented”
“developer-oriented”
Un
Un sistema
sistema operativo
operativo
“semplice”
“semplice”
“elegante”
“elegante”
“consitente”
“consitente”
UNIX Goals
...un file dovrebbe sempre essere considerato come una
collezione di byte, indipendentemente dal tipo di accesso
(sequenziale, random, a chiave, remoto...)
...il comando
ls A*
tutti i file che iniziano per A
e quindi anche
rm A*
tutti i file che iniziano per A
6
UNIX Goals
...un numero elevato di piccoli programmi di utilità che
possono essere combinati in infiniti modi al fine di fornire
un servizio comunque complesso
Il principio base:
“Every program should do just one thing, and do it
well”
Esempio : grep ard f > output
Layers in a UNIX system
User interface
Users
Users
Library interface
System call interface
Standard
Standard
utility
utility
programs
programs
(shell,
(shell, editors,
editors,
compilers...)
compilers...)
Standard
Standard library
library
(open,
(open, close,
close, read,
read,
write,
write, fork...)
fork...)
UNIX
OS
UNIX OS
(proc.
(proc. Manag,
Manag, mem
mem manag,
manag, I/O...)
I/O...)
Hardware
Hardware
(CPU,
(CPU, memory,
memory, disks,terminals...)
disks,terminals...)
Linux
Linux
Linux is
is aa free
free Unix-type
Unix-type operating
operating system
system
originally
created
by
Linus
originally created by Linus Torvalds
Torvalds with
with
the
the assistance
assistance of
of developers
developers around
around the
the
world.
world. Developed
Developed under
under the
the GNU
GNU General
General
Public
Public License
License
7
Linux: la sua storia
La prima versione distribuibile fu sviluppata da Linus
Torvalds (University of Helsinki in Finland)
…in collaborazione, via Internet, con un gruppo di
esperti programmatori Unix
…sviluppato nell’ambito del progetto GNU (GNU è
l’acronimo ricorsivo di “GNU's Not Unix”) alla “Free
Software Foundation” in Cambridge.
Linux: la sua storia
5-ott-1991
Linus annuncia la prima versione ufficiale di Linux
(vers.0.02), in grado di eseguire la shell Bash (GNU
Bourne Again Shell), il compilatore gcc (GNU C
Compiler)
…successivamente verrano rilasciate le versioni
0.03,0.10,0.95, 0.99 (marzo 1992) …
…fino alla vesione 2.2 (ott-nov 1999)
Rif: http://www.kernel.org
http://www.li.org/li/linuxhistory.shtml
Linux: la sua storia
Una curiosità:
Non è mai uscita la versione 1.0 (i teorici ritengono
che generalmente la versione 1.0 di un software
dovrebbe essere quella bug-free)
Uno dei maggiori punti di forza:
Tutto il sistema operativo Linux è coperto dalla
cosiddetta GNU General Public License (GPL).
L’intero sistema operativo e’ considerato “free”
8
Linux: Il concetto di “free software”
Così come definito da GNU-GPL, il concetto di free
software è ben diverso da quello di “public domain”.
Public domain:
…tutto il software senza diritti di autore
GPL software:
…tutto il software protetto dai diritti di autore
… che può essere distribuito gratis o a pagamento
Rif: http://www.gnu.org/fsf/fsf.html
Linux: le distribuzioni
Sebbene il sistema operativo Linux sia unico (un solo
kernel) negli ultimi anni sono proliferate un certo numero
di distribuzioni di installazioni Linux:
Linux: le distribuzioni
9
Collegamento
E’ possibile collegarsi ad un sistema Unix in locale
(login locale) oppure …
…sfruttando il protocollo telnet è possibile collegarsi a
qualsiasi sistema unix connesso ad Internet
Login e password
Il login prompt
„
furore login:
Il login name
„
furore login: lrom
Il comando passwd
„
passwd
Il file passwd
„
lrom:nHJ7Gj4oFG.w6:184:100:Luigi
Romano:/home/sorrento/lrom:/bin/tcsh
I processi coinvolti
„
„
Il login
La shell
Il login
Once the kernel is loaded to memory, it is ready to
carry out user requests.
First, though, a user must log in and make a request.
For a user to log in, however, the kernel must know
who the user is and how to communicate with him.
To do this, the kernel invokes two special programs,
getty and login.
The getty program displays a login prompt and
continuously monitors the communication port for
any type of input that it assumes is a user name.
10
Shell: nessun utente “loggato”
getty
UNIX
Kernel
getty
getty
getty
Logging
When getty receives any input, it calls the login
program.
The login program establishes the identity of the user
and validates his right to log in.
The login program checks the password file.
If the user fails to enter a valid password, the port is
returned to the control of a getty.
If the user enters a valid password, login passes
control by invoking the program name found in the
user's entry in the password file.
This program might be a word processor or a
spreadsheet, but it usually is a more generic program
called a shell.
Shell: un utente loggato
getty
getty
UNIX
Kernel
getty
getty
11
Collegamento
E’ possibile collegarsi ad un sistema Unix in locale
(login locale) oppure …
…sfruttando il protocollo telnet è possibile collegarsi a
qualsiasi sistema unix connesso ad Internet
Le funzionalità di una shell
Command line interpretation
Program initiation
Input-output redirection
Pipeline connection
Substitution of filenames
Maintenance of variables
Environment control
Shell programming
UNIX shell
Quando l’utente digita una linea di comando la
shell ne estrae la prima parola interpretandola
come un programma da eseguire.
Se il programma viene localizzato, la shell lo
esegue (sospendosi fintanto che il programma
non termina)
La shell non è altro che un programma utente
ordinario, in grado di leggere e scrivere da un
terminale ed eseguire dei programmi
12
UNIX shell
Spesso i comandi necessitano di alcuni parametri
di ingresso che vengono passati sottoforma di
stringhe
cp src dest
comando
parametri
UNIX shell
Alcuni parametri possono anche essere di tipo
numerico (flag)
head -20 file
flag
...attenzione al segno ‘-’, anche questo comando è
perfettamente lecito
head 20 file
file
Esecuzione dei programmi
Tutti i programmi che vengono eseguiti da una
shell hanno automaticamente accesso a due file
“speciali”:
standard input (per la lettura,)
standard output (per la scrittura)
standard error (scrittura di errori)
...in genere (default)
standard input Æ tastiera
standard output Æ video
standard error Æ video
13
Esecuzione dei programmi
Solitamente i programmi Unix, per default, leggono
dallo standard di input e scrivono sullo standard
output.
sort
legge dei caratteri dalla tastiera finché non viene
digitata la combinazione dei tasti CTRL+D
ordina i caratteri letti
Stampa sullo schermo i caratteri ordinati
File system
...è quella parte del sistema operativo che si
occupa della gestione logica dei file e della
corrispondenza fra l’organizzazione logica e la
struttura fisica.
File System: apertura di file
La system call open()
„
„
„
„
Utilizzata da un processo per accedere ad un file
Restituisce un “descrittore” del file aperto
Le successive operazioni di lettura e scrittura
avvengono utilizzando tale descrittore
All’attivazione di ogni processo, vengono resi
disponibili tre descrittori di default:
Š 0 per lo standard input (solitamente la tastiera)
Š 1 per lo standard output (il monitor)
Š 2 per lo standard error (ancora il monitor)
14
File sytem: percorsi assoluti e
relativi
Percorso assoluto:
„
Indica come giungere al file partendo dalla
directory radice
Š Es: /home/users/sprom/pippozzo.c
Percorso relativo:
„
Fa riferimento alla directory corrente
Š Es: directory corrente= /home/users/sprom:
“cp pippozzo.c plutozzo.c” equivale a:
“cp /home/users/sprom/pippozzo.c home/users/sprom/plutozzo.c”
File system: i link
Utilizzati per fare riferimento a file che
appartengono ad altri utenti o che si
trovano in directory differenti all’interno
dell’albero dei file. Sono di due tipi:
„
„
Hard link
Soft link
File system: i link
Hard link
„
È semplicemente un nome alternativo per un file.
Il file viene cancellato dal disco solo quando
l’ultimo link viene rimosso
Soft link
„
è un piccolo file speciale che contiene un
percorso
Š può puntare verso un file posto su un altro filesystem
(magari anche un file system di rete montato da un'altra
macchina)
Š Non ha bisogno di puntare verso un file esistente
15
File system: il comando mount
Consente di agganciare il file system che si
trova su di un dispositivo (disco floppy,
cdrom, disco di un’altra macchina presente
nella rete, etc.) all'albero dei file principale
Hard disk
home
Hard disk
floppy
/
/
src
etc
mnt
pippo
/
home
etc
mnt
pluto
sprom
sprom
src
floppy
asergio
asergio
pippo
pluto
Input/Output
Il problema dell’accesso ai dispositivi di
I/O
„
„
„
„
„
Terminali
Dischi
Stampanti
Dispositivi di rete
…
Input/Output: l’integrazione
Unix integra tutti i dispositivi all’interno
del file sstem, sotto forma di file speciali
„
Ad ogni dispositivo è associato un nome di
file in una specifica cartella (solitamente la
cartella /dev)
Š Es:
„
„
„
„
Stampante: /dev/lp
Terminale: /dev/tty
Scheda ethernet: /dev/eth0
…
16
Input/Output: i file speciali
Sono gestiti allo stesso modo di tutti gli
altri file
Sono divisi in due categorie:
„
„
A blocchi
A caratteri
Input/Output: i file speciali
File speciali a blocchi
„
„
Una sequenza di blocchi numerati
Ogni blocco può essere referenziato singolarmente
File speciali a caratteri
„
„
„
Utilizzati per quei dispositivi che producono e
ricevono flussi di caratteri (terminali, stampanti,
schede di rete, mouse, etc..)
Non consentono l’accesso casuale
Richiedono particolari tecniche di controllo
17