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 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 1
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 Principali distribuzioni Linux Soprattutto un interfaccia grafica con Desktop 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 La struttura da albero del file system di Linux 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) 2
Principali caratteristiche 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 Tipico desktop di una distribuzione Linux 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) Il comando pwd 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 3
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 4
Il comando cd 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 Esempio di esecuzione del comando cd cd.. : la nuova directory e quella di livello superiore cd (senza argomenti) : la nuova directory e la home directory Il comando cp 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 5
Il comando mv 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 rm 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 6
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 Esempio di esecuzione del comando rmdir 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 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 7
Il comando cat 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 cat Il comando gfortran 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 gfortran Con l opzione o e possibile dare un nome differente al file eseguibile 8
Il comando cc 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 cc Redirezione (caratteri > e < ) 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 > 9
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, ) Organizzazione di una parola a 32 bit secondo lo standard IEEE 754 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) 10