Introduzione al sistema operativo Linux

13/03/2014
Come nasce Linux
Marco Lapegna
Il s.o. Linux
• Fernando José Corbató (MIT, 1965), dirige il progetto per il S.O. MULTICS. Grande,
complesso e poco efficiente, ma che possiede tutte le caratteristiche dei s.o. moderni
Lezione n.14
• Kenneth Thompson e Dennis Ritchie (Bell labs, 1971), sviluppano UNIX semplificando il
progetto MULTICS. Successivamente sviluppano il linguaggio C e riscrivono UNIX nel nuovo
linguaggio. Primo S.O. portabile su differenti calcolatori anche di piccole dimensioni
Parole chiave:
Struttura del file
system
Gestione di file e
directory
•
•
• Richard Stallman (Stanford, 1985), lancia il progetto GNU per la distribuzione libera e gratuita
del software di Unix. Sviluppa solo alcuni tool (compilatori, debugger, editor)
Corso di Laurea:
Matematica
• Andrew Tanenbaum (Amsterdam, 1986), professore alla Vrije University sviluppa Minix,
piccolo S.O. Unix per processori Intel (ora sufficientemente potenti) . Sviluppato per usi
didattici
Insegnamento:
Laboratorio di
Programmazione (per
matematici)
• Linus Torvalds (Finlandia, 1992) sviluppa Linux a partire da Minix e dai tools realizzati nel
progetto GNU. Versione per processori Intel poi adottata da tutte le grandi industrie
Email Docente:
[email protected]
A.A. 2013-2014
Distrubuzioni Linux
Linux e’ il sistema che si occupa solo
della gestione della macchina fisica:
- Gestione dei processi
- Gestione della memoria
- Gestione del file system
- Gestione dell’I/O e rete
Un distribuzione e’ il sistema Linux
corredato da numerosi programmi
applicativi
• Office automation, agende,
• Browser, email, multimedia
•
Soprattutto un’interfaccia grafica con
Desktop
Principali distribuzioni Linux
Principali caratteristiche
•
E’ un s.o. dotato di funzionalita’ di
multiprogrammazione, time sharing e
memoria virtuale
•
Scalabile, permette l’utilizzo
contemporaneo di numerosi utenti, che
possono condividere file e directory
•
La struttura del file system e’ ad albero,
all’interno del quale l’utente puo’ navigare
•
Dalla directory principale (root directory)
partono altre directory che possono
contenere ulteriori directory o file
•
Ogni utente ha una propria home directory
(ad es. /home/user) nella quale ha permessi
di lettura e scrittura (compresa la possibilita’
di creare nuovi file e directory)
La struttura da albero del file system di Linux
1
13/03/2014
Principali caratteristiche
Il comando pwd
Struttura di un generico comando Linux
•
Visualizza la directory corrente di lavoro
(pwd = print working directory)
•
Sono mostrate i nomi di tutte le directory
partendo dalla root ( / ) fino alla corrente,
separati da /
•
Utile per sapere in quale directory del file
system si sta lavorando
comando [-opzioni] [argomenti]
Le opzioni sono precedute da – e servono a
specificare ulteriormente il comando
Gli argomenti sono nomi di file o directory
Tipico desktop di una distribuzione Linux
Esempio di esecuzione del comando pwd
La directory radice (root) e’ identificata con /
La directory corrente e’ identificata con .
La directory padre di quella corrente e’
identificata con ..
Il comando ls
• Visualizza l’elenco di tutti i file e directory
presenti nella directory corrente di lavoro
(ls = LiSt)
• E’ possibile specificare opzioni o altre
directory
Esempi
• ls –l : (lista con informazioni su
proprietario, dimensione, data e ora di
ultima modifica, permessi per altri utenti,…)
• ls / : (lista il contenuto della root
directory /)
Esempi di utilizzo del comando ls
Il comando mkdir
•
Crea un nuova directory (mkdir = MaKe
DIRectory)
•
Obbligatorio specificare un nome
•
Un successivo comando ls deve mostrare la
presenza della nuova directory
•
Se gia’ esiste un file o una directory con il
nome specificato, il comando mkdir
restituisce un messaggio di errore
Esempio di esecuzione del comando mkdir
2
13/03/2014
Il comando cd
Il comando cp
• Cambia la directory corrente di lavoro
(cd = Change Directory)
•
Crea una copia di un file esistente
(cp = CoPy)
• Un successivo comando pwd deve mostrare il
nome dlla nuova directory di lavoro
•
Un successivo comando ls deve mostrare la
presenza del nuovo file
Diversi modi di utilizzo
•
Specificando un nome: la nuova directory e’
quella specificata
•
cd ..
: la nuova directory e’ quella di
livello superiore
•
cd (senza argomenti) : la nuova directory
e’ la home directory
Esempio di esecuzione del comando cd
Obbligatori due argomenti:
• Primo argomento : il file da copiare
• Secondo argomento puo’ essere:
− Un file: viene creato un nuovo file o
viene sovrascritto uno vecchio
− Una directory: il file viene copiato
nella directory specificata
Il comando mv
•
•
Il comando rm
Sposta o rinomina un file esistente
(mv = MoVe)
•
Elimina un file esistente
(rm = ReMove)
Un successivo comando ls deve mostrare la
presenza del nuovo file
•
Un successivo comando ls non deve
mostrare la presenza del file
•
Obbligatorio specificare il nome del file
Obbligatori due argomenti:
• Primo argomento : il file da spostare o
rinominare
• Secondo argomento puo’ essere:
− Un file: viene rinominato il file
− Una directory: il file viene spostato
nella directory specificata
Esempio di esecuzione del comando mv
Esempio di esecuzione del comando cp
Esempio di esecuzione del comando rm
3
13/03/2014
Il comando rmdir
•
Elimina una directory esistente
(rmdir = ReMove DIRectory)
•
Un successivo comando ls non deve
mostrare la presenza della directory
•
Obbligatorio specificare il nome della
directory
•
La directory deve essere vuota
Il comando gedit
Gedit crea o modifica un file di testo
• Se il file non esiste, ne viene creato uno
nuovo
• Se il file esiste, viene modificato quello
esistente
Necessario specificare un nome
Esempio di esecuzione del comando rmdir
Si apre in nuova finestra
Esempio di utilizzo del comando gedit
Comune editor di testo “What You See Is What
You Get”
Ricordarsi di salvare le modifiche in uscita
Un successivo comando ls deve mostrare la
presenza del file
Il comando cat
Mostra il contenuto di un file
Il comando gfortran
Comando per la compilazione di
programmi FORTRAN
Necessario specificare un nome
Produce un file eseguibile di nome a.out
Se il file e’ molto lungo e’ possibile
utilizzare il comando
less
che visualizza il contenuto del file una
pagina alla volta
Il comando ./a.out manda in esecuzione
il programma
Esempio di utilizzo del comando cat
Con l’opzione –o e’ possibile dare un
nome differente al file eseguibile
Esempio di compilazione di programma Fortran con
gfortran
4
13/03/2014
Il comando cc
Comando per la compilazione di
programmi in linguaggio C
Redirezione (caratteri > e < )
Nel caso di output o stampe molto lunghe
e’ possibile redirigere il risultato in un file
con il carattere >
Produce un file eseguibile di nome a.out
Analogamente per un input molto grande
da fornire ad un programma in
esecuzione e’ possibile utilizzare il
carattere <
Il comando ./a.out manda in esecuzione
il programma
Con l’opzione –o e’ possibile dare un
nome differente al file eseguibile
Esempio di compilazione di programma C con cc
Utilizzo della redirezione con >
Un po’ di storia (14)
William Kahan (1933)
• Matematico e informatico canadese si e’ sempre
occupato della accuratezza degli algoritmi per il
calcolo scientifico, sviluppando tecniche per
minimizzare l’errore di round-off.
• Nel 1985, e’ stato il principale artefice dello
standard IEEE 754, per l’aritmetica floating point
utilizzato oggi in tutti i dispositivi di calcolo
Organizzazione di una parola a 32 bit secondo lo
standard IEEE 754
• Lo standard definisce il formato della
rappresentazione, le regole di arrotondamento, le
operazioni e la gestione delle situazioni eccezionali
(ad. divisione per 0, forme indeterminate,… )
• Kahan ha avuto una profonda influenza sulle
funzionalita’ dei compilatori e sull’architettura
delle CPU con raccomandazioni finalizzate a
migliorare l’accuratezza nei processi di calcolo
• Kahan ha vinto il Turing Award nel 1989
W. Kahan nel 1998 (credit http://owpdb.mfo.de)
5