Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Salvatore Cuomo » 4.SO: Unix e Unix-like


Sistema Operativo Unix

Mostriamo una breve cronistoria del sistema operativo Unix.

Il sistema operativo Unix nasce nel 1969 viene sviluppato presso la Computing Science Research Division dei Bell Laboratories.

Si può affermare che i “padri” di UNIX sono K.L. Thompson e D.M. Ritchie l’inventore del linguaggio di programmazione C.

Successivamente nel 1974 viene installata presso l’Università di Berkeley una prima versione del sistema operativo UNIX, riscritta interamente in linguaggio C.

Nel 1983 viene sviluppata la versione Unix SYSTEM V apportando innovazione nell’uso efficiente della memoria. In particolare viene implementa la “memoria virtuale”.

Principali caratteristiche di Unix

I principali punti di forza del sistema Unix siano:

  • Multi-utente: diversi utenti possono utilizzare il calcolatore
  • Multi-processore: capacità di gestire architetture con più CPU (dual-core, quad-core, ..)
  • Struttura di memorizzazione dati (file system) gerarchica: ovvero gestione ottimale delle risorse di sitema
  • Semplice e chiara interfaccia utente
  • Architettura trasparente e invisibile all’utente
  • Completo ambiente di programmazione. In molte versioni sono disponibili già nele sistema il compilatore C ed anche di altri linguaggi.
  • GENERAL – PURPOSE. Progettato sia per sistemi di tipo server, workstation o desktop.
  • Multi Programmazione
  • Time Sharing

Alcuni vantaggi nell’utilizzo del sistema Unix

Il sistema Unix è progettato considerando:

  • Potenza e Flessibilità;
  • Elevato numero di strumenti di sistema che in grado di risolvere semplici problemi e gestire situazione complesse. In particolare sono disponibili comandi per: ordinamento di file o stringe, ricerca, …
  • Possibilità di creare nuovi e più sofisticati programmi comandi a partire da quelli di base messi a disposizione dell’utente;
  • Potenti editor a che possono essere utilizzati anche su terminali non datati di una interfaccia grafica;
  • Sistema di posta elettronica integrato sia per la gestione della posta sia per l’invio di dati.

In definitiva dopo avere installato il sistema operativo si hanno a disposizione i principali strumenti di lavoro senza necessariamente aggiungere nuovi pacchetti.

Unix e macchina virtuale

Ricostruiamo brevemente Unix dal punto di vista della macchina virtuale. Si ha a disposizione, schematicamente:

  • Shell: che rappresenta l’interprete del linguaggio di comando
  • Programmi applicativi: Risorse software del sistema operativo, programmi di sistema tra cui editor di testo, compilatori, programmi per la posta elettronica…
  • Kernel: Parte fondamentale del sistema operativo. E’ il software deputato al coordinamento dell’esecuzione di tutti i programmi e all’accesso delle risorse del sistema.
La macchina virtuale.

La macchina virtuale.


Unix e macchina virtuale (segue)

La macchina virtuale (dettagli).

La macchina virtuale (dettagli).


Sistemi operativi Unix-like (Unix Flavors)

Alcuni Sistemi Operativi a pagamento

  • AIX (IBM) AIX 5L (Linux)
  • BeOS
  • Digital Unix (Compaq)
  • HP-UX (Hewlett Packard)
  • IRIX (Silicon Graphics)
  • MacOS X (Apple)
  • Solaris (Sun Microsystems)

Sistemi Operativi non a pagamento

  • Linux (Ubuntu, Fedora, Debian, Gentoo, SuSe,…)
  • FreeBSD

Sistemi Operativi real-time

  • LynxOS, QNX, …
Alcuni membri della famiglia Unix Flavors.

Alcuni membri della famiglia Unix Flavors.


S.O. @ Lavoro

I sistemi operativi operano su un insieme di dati chiamati

FILE

Un file può essere considerato come una collezione di caratteri che termina con un carattere di chiusura speciale detto: EOF (end-of-file).

Un file viene strutturato unità di base formate da linee che sono dette record.

Il file può essere creato mediante una operazione di lettura da una unità di input, come ad esempio la tastiera ed è generalmente considerato come risultato dell’esecuzione di un programma.

Per distinguere le diverse tipologie di file ed i programma in grado di poterli leggere ( aprire ) si può utilizzare la convenzione di identificarli attraverso dei suffissi.

Ad esempio un file pippo.txt indica un file di testo. (Altri esempi di suffissi: .pdf, .zip, .doc, .ppt, …)

Il file system

I file nel sistema operativo vengono dal punto di vista Logico organizzati mediante una struttura dati.

Particolare che prende il nome di

File System

Il file system è una struttura gerarchica ad albero.

In figura viene mostrato un tipico albero, si osservi la struttura a nodi e foglie. In particolare il nodo root è gerarchicamente superiore a quello lettere. Mentre varie e lezioni hanno la stessa “altezza”.

File System.

File System.


Il file system Unix

Il file system Unix è una struttura gerarchica ad albero in cui è possibile distinguere:

  • I file ordinari: che contengono indifferentemente testi, programmi simbolici, dati e qualsiasi altro tipo di informazione. Il loro contenuto non ha alcun significato per il sistema operativo ma solo per i programmi applicativi che li usano.
  • Directory: è una collezione di nomi di file. Consente all’utente di organizzare i file in gruppi.
  • File speciali: tutte le periferiche sono trattate da UNIX come file speciali, il cui nome è proprio il nome della periferica. Associato a ciascuna periferica c’è un programma di sistema (driver) responsabile della comunicazione.

Il file system Unix (segue)

Su ciascun file è possibile fare delle operazioni di lettura, scrittura o esecuzione.

Ogni file è accompagnato da una stringa che individua cosa sia possibile fare.

In particolare:

Sui File Ordinari

Operazione – Vuol dire che

LETTURA (r) – Lettura del contenuto del file

SCRITTURA (w) – Modifica del contenuto del file

ESECUZIONE (x) – Esecuzione del file

Sulle Directory

Operazione – Vuol dire che

LETTURA (r) – Visualizza nella directory

SCRITTURA (w) – Aggiunta o cancellazione di un file

Il file system Unix (cont.)

Essendo Unix un S.O. multi-utente ciascun file quando viene creato dei permessi di accesso per tre categorie di utenti:

  • il proprietario: ovvero colui che ha generato inizialmente il file
  • Il gruppo: eventuale gruppo di utenti a cui appartiene il proprietario del file
  • Il pubblico: ovvero tutti gli altri utenti del sistema.

Inoltre su ciascun i file è possibile permettere o negare le operazioni di lettura, scrittura ed esecuzione attraverso una la stringa di 9 caratteri che è associata al file.

Permessi su un file.

Permessi su un file.


Esempio di permessi su un file

Supponiamo che su un file pluto.bin sia un file ordinario eseguibile

ed i suoi permessi siano:

r w x r – x r – – .

La stringa di 9 caratteri assume il seguente significato:

  1. il proprietario è in grado di leggere, scrivere ed eseguire il file
  2. il gruppo ha la possibilità di leggere ed eseguire il file ma non può modificarlo
  3. il pubblico, ovvero tutti gli altri utenti possono solo leggere il file senza potere effettuare alcuna altra operazione.

Per esempio un file di sola lettura ha i seguenti permessi:

r – –r– –r – –

Esempio di permessi su directory

Supponiamo che ad una directory didattica siano assegnati i seguenti permessi:

r w x r – x r – – .

La stringa di 9 caratteri assume il seguente significato:

  1. il proprietario può visualizzare il contenuto della directory, può inserire o eliminare file, può spostarsi in quella directory
  2. il gruppo può visualizzare il contenuto della directory ma non può aggiungere o eliminare file, gli è consentito di spostarsi in quella directory
  3. il pubblico può solo vedere il contenuto della directory.

Utilizzo simulato del S.O.

Si supponga di avere a disposizione un sistema operativo Unix e sui sia svolta la fase di Login.

L’utilizzatore del sistema che è stato riconosciuto è posizionato nell’albero del File System ad altezza prefissata che corrisponde ad una prefissata directory che viene detta:

Home Directory

Essa è risulterà il punto di accesso al sistema e non cambierà fin quando l’utente risiede nel sistema.

In figura la home directory dell’utente utilizzatore è u1.

Struttura di un file system.

Struttura di un file system.


Utilizzo simulato del S.O. Esempio 1

Esempio. Si individui una possibile procedura per l’accesso nel file system al file pippo.
Soluzione Caso 1. E’ possibile specificare il percorso, detto path, che intercorre tra l’inizio o radice (root) del sistema indicata con il carattere / ed il file che si vuole individuare. Ovvero: /utenti/u1/prog/pippo
Caso 2. E’ possibile specificare il percorso, intercorre tra la nostra posizione attuale il file che si vuole individuare. Ovvero prog/pippo.
Caso 3. Spostarsi nella posizione dell’albero contenente il file pippo e fare riferimento ad esso specificando il suo nome.
Utilizzo simulato del S.O. Esempio 2
Esempio. Si individui una possibile procedura per l’accesso nel file system al file prova e ai file pippo
Soluzione: CASO 1. Le modalità possibili sono:
PATH ASSOLUTO: /utenti/u2/prova
PATH RELATIVO: ../u2/prova (.. a directory padre)
CASO 2. I due file pippo sono univocamente determinati dai path differenti:

  • /utenti/u2/pippo
  • /utenti/u1/prog/pippo
Struttura di un file system.

Struttura di un file system.


La sintassi dei comandi

La sintassi dei comandi in Unix deve essere formata in maniera corretta.

Un comando viene eseguito seguendo una fissato ordine in un comando del tipo:

comando = [-opzioni] [argomento] [argomento] .

comando = al nome di un file eseguibile residente nel file system. Il file associato al comando può contenere sia un programma eseguibile del sistema operativo che uno generato dall’utente

opzioni = rappresenta degli specifici parametri che servono a richiamare le possibilità opzionali implementate nello specifico comando

argomento = rappresenta gli operandi su cui deve agire il comando. Tali operandi in genere sono costituiti dai nomi di file da manipolare.

Struttura di un file system.

Struttura di un file system.

Struttura di un file system.

Struttura di un file system.


Alcuni comandi

  • man comando

manual – Visualizza alcune pagine di documentazione del comando specificato.

  • passwd

password – Comando interattivo di definizione o modifica della password (è richiesto l’inserimento della nuova password per due volte affinchè la modifica sia accettata)

  • pwd

print work directory – Visualizza il path assoluto della directory corrente di lavoro

  • who

elenca le user id degli utenti collegati in quel momento al sistema

  • mail utente

Esempio di comandi simulazione

Esempio. Un utente mario vuole collegarsi al sistema e cambiare la sua password.

Soluzione.

In una finestra interprete di sistema (shell) comparirà

oracolo.dma.unina.it$

passwd Changing password for mario

Old password: (digitare la vecchia password)

Enter new password: (digitare la nuova password)

Verify: (digitare di nuovo la nuova password)

oracolo.dma.unina.it$

Quanto mostrato è la sequenza di istruzioni da digitare.

Esempio di comandi simulazione

Esempio. Un utente mario vuole sapere la sua directory di lavoro e chi è

collegato al sistema.

Soluzione.

In una finestra interprete di sistema (shell) comparirà

oracolo.dma.unina.it$pwd

/usr/users/mario

oracolo.dma.unina.it$

=======

oracolo.dma.unina.it$ who

tizio ttypf Mar 6 15:24 (193.204.16.30)

mario ttyq0 Mar 6 15:53 (193.167.16.17)

rossi ttyq1 Mar 6 16:03 (193.204.16.1)

Quanto mostrato è la sequenza di caratteri sulla shell.

Alcuni comandi di gestione file

ls path

list – richiesta di listare il contenuto di path (se path non è specificato , viene listato il contenuto della directory corrente di lavoro)

mkdir path

make directory – crea una directory come specificato dal path.

cd path

change work directory – cambia la directory corrente di lavoro in quella specificata da path

cat path

concatenate – lista il contenuto del file specificato da path sul supporto standard di output (schermo)

pg path

page – ha lo stesso significato di cat ma l’output viene fornito su più pagine, dove una pagina è lo schermo del terminale.

cp path1 path2

copy – copia il file specificato da path1 nel file specificato da path2. Se il secondo argomento è una directory, il file è copiato in questa directory con lo stesso nome.

Alcuni comandi di gestione file

lp –ddest file

line printer spooler – invia il file alla stampante specificata in dest.

rm path

remove – cancella il file specificato da path

rmdir path

remove directory – cancella la directory specificata da path. Una directory può essere cancellata solo se è vuota

mv path1 path2

move – muove il contenuto del file specificato da path1, nel file specificato da path2.

cc file1 file2…filen

compilatore C – viene richiamato il compilatore C, che a partire da file1 file2 … filen produce il programma eseguibile (assoluto) di nome standard a.out.

Sistema Operativo Linux

In questa diapositiva mostriamo una breve cronistoria del sistema operativo Linux.

Linus Torvalds, studente dell’università di Helsinki, inizia per hobby nel 1991 la scrittura di un’estensione del mini S.O. UNIX di nome Minix

Nel 1994 la prima versione del kernel di Linux vede la luce

Linux è sviluppato secondo la licenza GNU General Public License (GPL) e tutto il codice sorgente è distribuito gratuitamente al pubblico. Le performances e la versatilità di Linux lo hanno fatto diventare ben presto un sistema operativo di grande diffusione.

Linux ha introdotto l’idea di OpenSource:

  • Accesso al codice sorgente
  • Redistribuzione gratuita del codice e dei programmi compilati
  • Permesso di effettuare modifiche
  • Preservazione dell’integrità del codice sorgente dell’autore

Open Source

  • Apertura del codice
    • Avere a disposizione il codice sorgente agevola la risoluzione di problemi
  • Stabilità
    • Dal momento che l’OpenSource può contare su una grande comunità di sviluppatori e che tutto il codice sorgente sviluppato deve rimanere pubblico, il software Open Source è generalmente più stabile del software commerciale
  • Adattabilità
    • Il codice OpenSource è strettamente collegato con delle regole standard (Open Standards) e quindi è facilmente adattabile ad ogni altra applicazione OpenSource
  • Qualità
    • I prodotti OpenSource possono essere testati da una grande comunità, che è anche potenzialmente una comunità di sviluppatori
  • Innovazione
    • Ciò che spinge l’OpenSource è la competizione e la possibilità di contribuire comunemente allo sviluppo di un prodotto
  • Costo
    • La maggior parte del software OpenSource è gratis (ma non lo è necessariamente)

I materiali di supporto della lezione

Corso base di Unix.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93