Sistema operativo Unix e Linux

25
UNIX è il primo sistema software progettato per funzionare su macchine di tutte le dimensioni di diversi produttori. E 'al centro di molti sistemi operativi che funzionano con le reti, compreso Internet.

Transcript of Sistema operativo Unix e Linux

Page 1: Sistema operativo Unix e Linux

UNIX è il primo sistema software progettato per funzionare su macchine di tutte le dimensioni di diversi produttori. E 'al centro di molti sistemi operativi che funzionano con le reti, compreso 

Internet.

Page 2: Sistema operativo Unix e Linux

STORIA DI UNIX Nel 1965 i Bell Laboratories di AT&T con la collaborazione del MIT e della General Eletric lavorarono per la realizzazione di un nuovo SISTEMA OPERATIVO, “MULTICS”, il quale vuole fornire come principali caratteristiche, capacità multi-utente (multi-user), multi - processo (multi-processor) e un file system multi-livello (gerarchico) (multi-level file system).In seguito non furono molto soddisfatti del progresso di Multics, quindi abbandonarono il progetto. Kenneth Thompson e Dennis Ritchie furono due dei programmatori dei Bell Laboratories che lavorarono al progetto Multics, progettano e implementano su un PDP-7 la prima versione del FILE SYSTE UNIX. Il 1 Gennaio 1970 c’è il vero e proprio Inizio di Unix.Nel 1977 un gruppo di ricerca della University of California assieme a Berkley, realizzò la prima versione di Unix BSD, fino ad allora il sistema operativo ricevette alcune revisioni.Fu utilizzato per la prima volta come STRUMENTO DI MANIPOLAZIONE DEL TESTO, nei dipartimenti dei Bell Laboratories. Tra le caratteristiche di Unix che attirarono i programmatori ci sono:•L’ ambiente di programmazione;•Una semplice interfaccia utente;•Semplici utility che possono essere combinate per realizzare potenti funzioni;•Il file system gerarchico (ad albero);•I sistema multi-utente e multi - processo;•L’ architettura indipendente e trasparente all'utente.Nel 1973 Unix è riscritto prevalentemente in C, un nuovo linguaggio di programmazione sviluppato da Dennis Ritchie. La codifica in questo linguaggio di alto livello diminuisce fortemente lo sforzo necessario per portare Unix su nuove macchine. Successivamente ci furono altre versioni. Già nel 1984 ci sono circa 100.000 siti Unix che girano su differenti piattaforme hardware, con differenti capacità.Nel 1997 ci saranno 3 milioni di sistemi Unix nel mondo.

Page 3: Sistema operativo Unix e Linux

Dennis Ritchie e Ken Thompson (seduto)

Page 4: Sistema operativo Unix e Linux

GLI ELEMENTI FONDAMENTALI

File system

Page 5: Sistema operativo Unix e Linux

KERNEL•KERNEL è il nucleo che viene caricato in memoria centrale al momento della partenza del sistema, con la fase detta bootstrap.*• Gestisce le risorse del sistema e le rende disponibili agli utenti che però non possono vedere il contenuto del kernel.

FUNZIONI FONDAMENTALI:₋Gestione dei processi con rispettiva allocazione nella memoria centrale.₋Scheduling dei lavori che la CPU deve svolgere per compiere efficientemente le richieste degli utenti.₋Gestione del trasferimento delle informazioni tra le diverse unità.₋Controllo dei comandi dell’utente, e lancio della loro esecuzione.

* Fase di avvio del computer, attivata dal programma di avvio bootstrap loader.

Page 6: Sistema operativo Unix e Linux

SHELL•SHELL è l’assegnazione di un programma ad un utente nel momento in cui si connette a un sistema Unix.La SHELL è l’interprete dei comandi inseriti dall’utente attraverso unità di input (tastiera), accetta il comando inserito, controlla il lessico e la sintattica, se il risultato è positivo la shell, chiede al kernel di eseguire le richiesteLe Shell Unix hanno un insieme di comandi predefiniti (BUILT-IN) attivabili dall’utente, e permettono inoltre di scrivere nuovi programmi attraverso SHELL SCRIPT.

Esistono tre tipi di shell ma gli utenti possono usarle indifferentemente.•Shell Bourne Shell standard.•C – Shell Shell che utilizza nella scrittura degli script la sintassi e alcune parole chiave uguali a quelle utilizzate nel linguaggio C.•Korn Shell Shell diffusa insieme alla versione AIX di Unix per macchine IBM.

Page 7: Sistema operativo Unix e Linux

FILE SYSTEM•FILESYSTEM ogni partizione del disco. Rappresenta il modo attraverso il quale i file sono organizzati sulle memorie di massa. L’UNITÀ DI REGISTRAZIONE DELLE INFORMAZIONI È IL FILE. Il file system gestisce i file per rendere i dati contenuti più accessibili agli utentiUFS (Unix File System) è un file system usato principalmente in sistemi operativi Unix e Unix-like. Pressoché tutti i derivati di BSD, inclusi FreeBSD, NetBSD, OpenBSD, NEXTSTEP e Solaris, usano una variante di UFS. In Mac OS X è disponibile come alternativa a HFS+. In Linux è disponibile un supporto parziale a UFS, mentre il primo file system usato per solo linux, ext2, è anch'esso derivato da UFS.IMPLEMENTAZIONE E STRUTTURAUn filesystem UFS è composto dalle seguenti componenti:• il primo settore del disco (512 byte) contiene la tabella delle partizioni.• un piccolo numero di blocchi posizionati all'inizio della partizione (dal 1° al 15 ° settore) sono destinati al boot(e inizializzati separatamente dal filesystem stesso)• un superblocco, contenente un magic number che identifica il filesystem come UFS ed altri parametri di importanza vitale che descrivono la geometria del filesystem e alcune statistiche.• una serie di gruppi di cilindri. Ogni gruppo contiene:

• una copia di backup del superblocco• Il numero delle directory• il numero di i-node, i quali comprendono i dati sugli attributi dei file che contengono• un header, che contiene alcune statistiche, tra le quali, la lista dei blocchi e degli i-node liberi, la frammentazione nei gruppi di cilindri. È simile al superblocco, ma applicato ad ogni gruppo di cilindri• il numero di blocchi per i dati nel gruppo di cilindri•la mappa dei blocchi liberi•la mappa degli i-node usati

Gli i-node sono numerati in sequenza: i primi i-node sono riservati per motivazioni storiche e subito seguiti da quelli della root directory.I file che descrivono le directory contengono solo i nomi e i puntatori agli i-node degli elementi che contengono. Tutti i metadati sono conservati nell'i-node stesso.

Page 8: Sistema operativo Unix e Linux

Organizzazione dei fileI file sono organizzati in modo diverso, consentendo quindi diverse modalità di accesso:Accesso sequenziale:

Accesso diretto:

Si può simulare l’accesso sequenziale su file ad accesso diretto:Rewind  current_pos =0;Read  read (current_pos); current_pos++;Write write (current_pos) ; current_pos++;

Accesso con indice:Si utilizza un indice associato ad una chiave ed eventualmente indici secondari.

Page 9: Sistema operativo Unix e Linux

Il sistema può gestire diversi utenti che lavorano contemporaneamente su operazioni indipendenti. Il sistema è responsabile della corretta condivisione e gestione delle richieste di dispositivi

hardware, periferiche, memoria e tempo di CPU in modo equo per ogni utente.Poiché il sistema è in grado di supportare più utenti, tutto il sistema gestisce possiede un insieme di

permessi che determinano chi può leggere, scrivere ed eseguire la risorsa. Questi permessi sono memorizzati mediante tre ottetti suddivisi in tre pezzi, uno per il proprietario del file, una per il gruppo a cui il file appartiene, e una per tutti gli altri. Questa rappresentazione numerica funziona in questo modo:

0 Lettura no, scrittura no, esecuzione no - - -

1 Lettura no, scrittura, esecuzione - w x

2 Lettura no, scrittura, esecuzione no - w -

3 Lettura no, scrittura, esecuzione - w x

4 Lettura, scrittura no, esecuzione no R - -

5 Lettura, scrittura no, esecuzione R – x

6 Lettura, scrittura, esecuzione no R w -

7 Lettura, scrittura, esecuzione R w x

VALORE PERMESSO DIRECTORY LISTING

CRITERI DI ACCESSO AI FILE

Page 10: Sistema operativo Unix e Linux

E’ possibile utilizzare il -l per visualizzare una lista della directory che include una colonna con le informazioni su permessi di un file per il proprietario, il gruppo e tutti gli altri. % Ls-l

530 totali -Rw-r - r - 1 root wheel 512 5 Settembre 12:31 miofile -Rw-r - r - 1 root wheel 512 5 Settembre 12:31 altrofile -Rw-r - r - 1 root wheel 7680 5 Settembre 12:31 email.txt ...

Ecco come la prima colonna di ls-l è suddivisa:

- Rw-r - r -

Il primo (a sinistra) indica se il file è un file regolare, una directory, un dispositivo di carattere speciale. In questo caso, il -- indica un file regolare.I tre caratteri successivi, rw - assegnano i permessi per il proprietario del file. I successivi caratteri, r - indicano i permessi per il gruppo a cui il file appartiene. Gli ultimi caratteri, r - indicano i permessi per il resto del mondo. Un trattino significa che il permesso non viene concesso. In questo caso nel file, i permessi sono impostati in modo che il proprietario può leggere e scrivere il file, il gruppo può leggere il file, e il resto del mondo può solo leggere il file. Secondo la tabella di cui sopra, le autorizzazioni per questo file sono 644, dove ogni cifra rappresenta una delle tre parti di permesso del file.

Page 11: Sistema operativo Unix e Linux

Anche le directory vengono trattate come file. Hanno lettura, scrittura ed esecuzione. Il bit di esecuzione per una directory ha un significato leggermente diverso rispetto a quello dei file.

Quando una directory ha permesso di esecuzione, significa che può essere attraversato, cioè, è possibile cambiare directory all’interno, "cd" (change directory). Questo significa anche che all'interno della directory è possibile accedere ai file i cui nomi sono noti (soggetto, ovviamente, per i permessi sul file stessi).

In particolare, al fine di effettuare un elenco di directory, il permesso di lettura deve essere impostato sulla directory, mentre per eliminare un file che si conosce il nome, è necessario disporre di scrittura ed eseguire autorizzazioni per la directory contenente il file.

Permessi simbolici, a volte indicato come espressioni simboliche, usano caratteri al posto dei numeri ottali per assegnare i permessi a file o directory. Espressioni simboliche usano la sintassi (chi) (azione) (permessi), dove i valori sono disponibili i seguenti:

Page 12: Sistema operativo Unix e Linux

(chi) u Utente

(Chi) g Gruppo proprietario

(Chi) o Altro

(Chi) un Tutti(“mondo”)

(Azione) + Aggiungendo le autorizzazioni

(Azione) - Rimozione delle autorizzazioni

(Azione) = I permessi importati in modo esplicito

(Permessi) r leggere

(Permessi) w Scrivere

(Permessi) x Eseguire

(Permessi) t Sticky bit

(Permessi) s Set UID o GID

OPZIONE LETTERA RAPPRESENTA

Questi valori sono usati con il chmod. Per esempio, è possibile utilizzare il seguente comando per impedire agli altri utenti l’accesso a FILE:

% Chmod = FILE

Page 13: Sistema operativo Unix e Linux

ORGANIZZAZIONE FISICA dei fileUnix ogni file system viene gestito in modo separato per mezzo di

un super-block e di una serie di i-NODE (nodi indice). Il super-block descrive lo stato complessivo del FILESYSTEM e ad ogni file è associato un i-node, questi vengono identificati tramite un numero chiamato i-Number con il quale è possibile identificare univocamente un file all’interno del file system. Allo stesso i-number possono poi essere associati diversi nomi di file, attraverso il meccanismo di LINK(attivato dall’utente tramite il comando ln): in questo modo più pathname corrispondono al contenuto di un solo file registrato su disco. L’area che contiene gli i-node si chiama i-LIST.

In Unix tutto si può definire un file e non è una definizione semplificativa ma la realtà di questo sistema.

I tipi di file sono:- file ordinari: (documenti, archivi, sorgenti di programmi, binari eseguibili …).- directory: (che servono a raggruppare in modo logico i file).- file speciali: (per la rappresentazione delle periferiche quali hd, floppy, stampanti, terminali).

I file che iniziano con un punto si chiamano “dot file” e indicano di solito i file nascosti.

L’ i-NODE CONTIENE:

•tipo di file;•permessi indicati col bit di protezione r, w, x;•nome del proprietario;•nome del gruppo;•dimensione del file in byte;•puntatori ai blocchi del file o ad altri puntatori;•data dell’ultimo accesso;•data dell’ultima modifica;•data di creazione;

Page 14: Sistema operativo Unix e Linux

La creazione di un filesystem è realizzata dall’amministratore del sistema con il comando mkfs, specificando- la partizione dove viene creato il filesystem;- il n. di blocchi fisici assegnati al filesystem;- il n. di i-node nella i-LIST.Ogni filesystem, per poter essere utilizzato, deve essere prima sottoposto all’operazione di MOUNTING(montaggio), attraverso il comando mount che genera un insieme di informazioni in memoria centrale, per consentire alle procedure di accedere ai file dello specifico filesystem.   L’operazione a rovescio viene realizzata dal comando umount. 

Alla partenza del sistema , il sistema operativo utilizza il filesystem fondamentale (root filesystem) che contiene tutte le routine che consentono l’avvio e la gestione del sistema. Ogni operazione di mount estende la struttura ad albero del filesystem radice, collegando la radice del nuovo filesystem ad un nodo del root filesystem. Il punto del’albero dove il nuovo filesystem è collegato si chiama mount point.Questa è la modalità attraverso la quale il sistema operativo Unix consente all’utente di utilizzare una partizione del disco, un dischetto, un CD, un nastro ecc.Il comando mount, eseguito senza parametri, visualizza il filesystem già montati, indicando per ciascuno la directory alla quale è stato collegato-

Page 15: Sistema operativo Unix e Linux

Indirizzamento indiretto.

SINGOLOQuando la dimensione di un file richiede più blocchi di quelli che possono essere indirizzati dai puntatori diretti, viene allocato un blocco che non fa parte del file, ma viene usato per contenere puntatori diretti ai blocchi successivi del file.

DOPPIO O TRIPLOSe il file è particolarmente grande, un blocco pieno di puntatori diretti può non bastare, in questo caso sarà necessario usare uno o due livelli di indirizzamento.

Page 16: Sistema operativo Unix e Linux

ORGANIZZAZIONE LOGICA dei fileStruttura del file system logico:

file di spool, ecc

/

bin

dev etc

lib tmpusr home

var

catgrep who

console Ip tty01

tty02

Directory e sottodirectory  per raggruppare in modo logico i file;

File ordinari  sono un insieme di byte e possono essere documentati, archivi e dati, codice sorgente di programmi, file binari eseguibili, programmi;

File speciali  per la rappresentazione delle periferiche quelli hard disk, floppy disk, stampanti terminali.

Page 17: Sistema operativo Unix e Linux

Il filesystem di Linux è organizzato in una struttura gerarchica a partire dalla directory radice (ROOT che si indica con /) come mostrato nella figura sopra. 

• Organizzazione dei file nella struttura di directory standard:1. / Bin - Negozi essenziale binari (programmi) necessari all'avvio del sistema o di

lavoro in modalità singolo utente di mantenere il sistema2. / Boot - kernel memorizza immagini e file di configurazione di avvio3. / Dev - file di dispositivo memorizza speciale utilizzato per accedere a dispositivi

hardware4. / Etc - sistema memorizza i file di configurazione5. / Home - memorizza la directory home per i singoli utenti6. / Lib - moduli della libreria negozi utilizzati dai comandi7. / Mnt - un punto di montaggio per altri dispositivi di memorizzazione8. / Proc - uno pseudo filesystem per i dati sui processi di trasporto9. / Sbin - memorizza i comandi necessari per l'amministrazione del sistema10./ Tmp - usato per i file temporanei11./ Usr - usato per i programmi, librerie, documentazione, ecc usati dagli utenti

normali12./ Var - i dati memorizzati sistema che varia o cambia frequentemente, come i

log di sistema, posta elettronica e stampare La struttura del filesystem di Unix permette di realizzare procedure realmente

indipendenti dalla periferica da utilizzare, in quanto l’utente vede la periferica come un qualsiasi file. Unix inoltre è CASE SENSITIVE.

Page 18: Sistema operativo Unix e Linux

OPEN SOURCE LINUXLinux non discende da una tra le tante versioni di Unix disponibili sul mercato, ma è stato completamente riscritto, KERNEL compreso. Il nome è stato dato dal finlandese LINUS Torvalds. Diversamente da altri sistemi operativi, che possono essere realizzati da una sola azienda avendo copyright, Linux è un sistema OPEN SOURCE, cioè il suo codice sorgente è disponibile e liberamente modificabile sotto licenza GNU GPL(GNU General Public License). Poiché Linux permetta di essere modificato e personalizzato, si possono trovare in commercio numerose distribuzioni Linux(più di 40).Ogni distribuzione prevede dei pacchetti(raccolta di programmi), che sono facilmente reperibili sul web.

FUNZIONALITA’ DEI PACCHETTI:• semplificare l’installazione del sistema operativo;• caricare il sistema operativo all’accensione del sistema ;• configurare ed utilizzare il computer nelle sue funzionalità base (uso della memoria, delle periferiche);• configurare e utilizzare il computer nelle sue funzionalitàavanzate(configurare servizi, server di rete o posta);• offrire applicazioni per internet(browser, chat…);• offrire strumenti multimediali(player mp3, video);• Offrire strumenti di produttività(elaboratore testi e immagini);• offrire una documentazione sull’uso del sistema operativo.

TUX

Page 19: Sistema operativo Unix e Linux

DISTRIBUZIONI LINUXNome Logo Sito internet

RedHat www.redhat.it

Fedora fedora.redhat.com

Mandriva www.mandrivalinux.com

OpenSuSE en.opensuse.orgwww.novell.com/suselinux

Debian www.debian.org

Slackware www.slackware.com

Knoppix www.knopper.net/knoppix/

Page 20: Sistema operativo Unix e Linux

Il Progetto GNU e il software liberoIl progetto GNU (GNU is Not Unix) nacque nel 1984 con l’obbiettivo di sviluppare un sistema operativo unix-like che fosse software libero. Questo concetto sta alla base di questo progetto e si riferisce alla libertà dell’utente di gestire, modificare e distribuire il software secondo quattro tipi di libertà:• (0) libertà di eseguire il programma, per qualsiasi scopo.• (1) libertà di studiare il funzionamento del programma e adattarlo alle proprie necessità. Prerequisito – accesso al codice sorgente.• (2) libertà di ridistribuire copie in modo da aiutare il prossimo.• (3) libertà di migliorare il programma, e distribuirne i miglioramenti. Prerequisito – accesso al codice sorgente. La versione italiana è disponibile all’indirizzo www.gnu.org/philosophy/free-sw.it.htmlQuando un’applicazione ha tutte e quattro le libertà allora è ritenuta libera. La licenza di distribuzione attraverso la quale viene distribuito il software libero prende il nome di GNU GPL(General Public License). www.gnu.org.Esistono due categorie di software libero:1.Con permesso d’autore (copyleft): ogni copia del software, anche se modificata, deve essere software libero.2.Senza permesso d’autore: l’autore di questo tipo di software Concede il permesso di ridistribuire e modificare il software e di Aggiungere ulteriori restrizioni. Quindi è possibile che alcune copie, con o Senza modifiche, non siano libere.

Esistono altre categorie di prodotti software gratuiti ma che non sono consideratisoftware liberi: •FREEWARE (prodotti software compilabili distribuiti gratuitamente, ma non corredati di codice sorgente)•SHAREWARE(programmi che possono essere utilizzati gratuitamente per un determinato periodo di tempo, al termine del quale è necessario acquistare una licenza d’uso).

Page 21: Sistema operativo Unix e Linux

Multitasking e desktop virtualiLinux permette che duo più programmi vengano eseguito contemporaneamente senza infierire tra loro. Ogni programma può essere scomposto automaticamente dal sistema in più processi o TASK. Quindi MULTITASKING vuol dire che c’è la possibilità di eseguire allo stesso tempo due o più task.Ogni applicazione attiva viene rappresentata nella taskbar con l’icona e un’etichetta corrispondente al titolo della finestra ad essa associata. Attraverso la taskbar è possibile vedere quali applicazioni sono in esecuzione.Le finestre delle applicazioni si dividono in:• attivela finestra con cui l’utente sta interagendo;• inattivele altre finestre non attive.nel pannello degli strumenti si trovano 4 pulsanti che rappresentano i desktop virtuali, ognuno è associato a un singolo desktop in grado di raggruppare insiemi di finestre.

Page 22: Sistema operativo Unix e Linux

La connessione al sistemaCi si può collegare ad un sistema LINUX da un terminale collegato attraverso il comando:Login: il sistema operativo ha attivato il processo di identificazione dell’utente.Quindi si dovrà fornire il proprio nome utente (username).Premendo il tasto Invio, apparirà il comando: Password:

Se il nome dell’utente e la password sono stati inserita non correttamente, avremo:Login incorrectLogin:

L’attivazione del processo login, segue le informazioni contenute nel file /etc/password, che descrive le caratteristiche degli utenti registrati nel sistema.Le righe del file presentano un insieme di informazioni separate dai due punti :

Nome di login: x:UID: GID: commento: home directory: shell•nome di login nome con il quale l’utente si identifica;•La lettera x presenza di una password criptata, le password degli utenti sono registrate nel file /ect/shadow.•UID identificativo numerico dell’utente per il controllo sugli accessi ai file del sistema.•GIDidentificativo numerico del gruppo per il controllo sugli accessi ai file del sistema.•Commentoaggiungere informazioni di documentazione nella riga dell’utente.•Home directorynella quale l’utente viene posizionato dopo l’identificazione.•Shellinterprete dei comandi assegnato all’utente.

Page 23: Sistema operativo Unix e Linux

Per visualizzare il contenuto dei file si usa il comando cat:cat /etc/passwd

È possibile anche gestire gruppi di utenti tramite informazioni contenute nel file /etc/group.Se la fase di identificazione dell’utente viene superata in modo positivo, il sistema operativo svolge un insieme di azioni:• collega l’utente alla sua home directory.• definisce la configurazione dell’ambiente di lavoro leggendo le informazione contenute nel file /ect/profile. • visualizza eventualmente il contenuto di un particolare file /etc/motd (Message Of The Day) messaggi o avvertimenti da parte dell’amministratore del sistema a tutti gli utenti.•Segnala con “YOU HAVE MAIL”, la presenza di messaggi da leggere nella casella di posta.•Attiva la shell assegnata all’utente. $( se è stata assegnata la shell) - %(se è stata assegnata la C-shell).

In sostanza un utente Unix viene definito attraverso i seguenti elementi:•Username•Password•Group•Home directory•Shell.Se si è connessi come utente root il prompt è rappresentato da #.

Page 24: Sistema operativo Unix e Linux

Il superuserTra gli utenti del sistema operativo si distingue l’Amministratore del sistema:Ha il massimo della visibilità sulle risorse del sistema;Ha la disponibilità massima dei permessi sui file e sull’uso delle procedure.Questa modalità operativa è indicata con SUPERUSER che si può acquisire :• eseguendo il processo login di identificazione con il nome di un utente cha il valore di UID=0;• aprendo una nuova shell con il comando su (shell user).Oltre all’Amministratore, il sistema operativo Unix prevede altre figure di utenti di sistema, riservando per essi la gestione delle funzioni relative ai diversi sottoinsiemi.

Page 25: Sistema operativo Unix e Linux

La gestione delle perifericheL’accesso alle periferiche è gestito tramite file speciali (special device file), nomi simbolici usati nelle operazioni di I/O sulle periferiche (device) del sistema di elaborazione.I file speciali risiedono nella directory /dev e hanno nomi prefissati, Possono essere:• a blocchi, caratterizzati dalla lettera b, iniziale nella lista;• a caratteri, indicati con la lettera c, iniziale nella lista.

La gestione dello spool sulla stampante è affidata al sottosistema lp, che crea e gestisce le code delle richieste di output sulla stampante.

Le attività più comuni del sottosistema lp sono:• definizione di più code di stampa sulla stessa stampante fisica;• attivazione dello scheduler di lp• arresto dello shceduler• apertura e chiusura di una coda di stampa• richiesta della stampa di un file e invio alla coda di spool• avvio e arresto delle stampe• cancellazione di un file in coda di stampa•Visualizzazione dello stato dello spool, cioè scheduler attivo o disattivato, stato delle stampanti, stampe attivate o disattivate, elenco dei file in coda di stampa.