Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica
14 - INTRODUZIONE AL SISTEMA OPERATIVO LINUX
Marco Lapegna
Dipartimento di Matematica e Applicazioni Universita’ degli Studi di Napoli Federico II wpage.unina.it/lapegna
Marco Lapegna –
Laboratorio di Programmazione
14. Introduzione al s.o. Linux
Come nasce 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
• Kenneth Thompson e Dennis Ritchie (Bell labs, 1971), sviluppano UNIXsemplificando 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
• Richard Stallman (Stanford, 1985), lancia il progetto GNUper la distribuzione libera e gratuita del software di Unix. Sviluppa solo alcuni tool (compilatori, debugger, editor)
• Andrew Tanenbaum (Amsterdam, 1986), professore alla Vrije University sviluppa Minix, piccolo S.O. Unix per processori Intel (ora sufficientemente potenti) . Sviluppato per usi didattici
• Linus Torvalds (Finlandia, 1992) sviluppa Linuxa partire da Minix e dai tools realizzati nel progetto GNU. Versione per processori Intel poi adottata da tutte le grandi industrie
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. 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
Distrubuzioni Linux
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• 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
La struttura da albero del file system di Linux
Principali caratteristiche
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
Struttura di un generico comando Linux comando [-opzioni] [argomenti]
Le opzioni sono precedute da – e servono a specificare ulteriormente il comando
Gli argomenti sono nomi di file o directory
La directory radice (root) e’ identificata con / (slash)
La directory corrente e’ identificata con . (punto)
La directory padre di quella corrente e’
identificata con .. (doppio punto)
Tipico desktop di una distribuzione Linux
Principali caratteristiche
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. 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
Esempio di esecuzione del comando pwd
Il comando pwd
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• 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 ls
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• 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
Il comando mkdir
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• Cambia la directory corrente di lavoro (cd = Change Directory)
• Un successivo comando pwd deve mostrare il nome dlla nuova directory di lavoro
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
Il comando cd
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• Crea una copia di un file esistente (cp = CoPy)
• Un successivo comando ls deve mostrare la presenza del nuovo file
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
Esempio di esecuzione del comando cp
Il comando cp
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• Sposta o rinomina un file esistente (mv = MoVe)
• Un successivo comando ls deve mostrare la presenza del nuovo 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
Il comando mv
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• Elimina un file esistente (rm = ReMove)
• Un successivo comando ls non deve mostrare la presenza del file
• Obbligatorio specificare il nome del file
Esempio di esecuzione del comando rm
Il comando rm
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
• 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
Esempio di esecuzione del comando rmdir
Il comando rmdir
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
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 Si apre in nuova finestra
Comune editor di testo “What You See Is What You Get”
Ricordarsi di salvare le modifiche in uscita
Esempio di utilizzo del comando gedit
Il comando gedit
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
Mostra il contenuto di un file Necessario specificare un nome
Se il file e’ molto lungo e’ possibile utilizzare il comando
less
che visualizza il contenuto del file una
pagina alla volta
Esempio di utilizzo del comando catIl comando cat
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
Comando per la compilazione di programmi FORTRAN
Un file fortran deve avere estensione .f90 (ad es. areatrapezio.f90)
Produce un file eseguibile di nome a.out
Il comando ./a.out manda in esecuzione
il programma
Esempio di compilazione di programma Fortran con gfortranIl comando gfortran
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
Comando per la compilazione di programmi in linguaggio C
Produce un file eseguibile di nome a.out
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 ccIl comando cc
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
Nel caso di output o stampe molto lunghe e’ possibile redirigere il risultato in un file con il carattere >
Analogamente per un input molto grande da fornire ad un programma in
esecuzione e’ possibile utilizzare il carattere <
Utilizzo della redirezione con >
Redirezione (caratteri > e < )
Marco Lapegna –
Laboratorio di Programmazione 14. Introduzione al s.o. Linux
Organizzazione di una parola a 32 bit secondo lo standard IEEE 754
W. Kahan nel 1998 (credit http://owpdb.mfo.de)
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
• 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