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