-indice-
Un po' di storia di Unix
Unix nasce nel 1969 quando:
-
La maggior parte dei sistemi viene usata in modo batch,
l'input avviene da schede e l'output viene prodotto su
stampanti di sistema.
-
I sistemi multiuser in funzione in quel periodo sono
quasi tutti proprietari (IBM, Digital, Honeywell, HP, CDC, NCR,....).
-
Combinando i vari aspetti positivi presentati da questi sistemi
K. Thompson tra il 1969 e il 1970 progetta
Unix
-
Un sistema operativo multiuser, multitasking e time-sharing
-
Un sistema operativo sviluppato in origine da ricercatori per essere
utilizzato soprattutto in ambienti di ricerca e di sviluppo software.
-
Dotato di adeguati tools.
Distribuzione - Diffusione
-
Dal 1974 Unix comincia a essere distribuito negli ambienti universitari.
-
Successivamente ricercatori e software houses cominciano a
espandere il sistema implementando nuove applicazioni: i tools.
-
La diffusione si estende rapidamente negli ambienti scientifici e poi in
quelli commerciali.
-
Dal 1975 al 1980 la diffusione del sistema è favorita da:
-
un andamento dei costi dell'hardware che favorisce una diffusione dei
microsistemi sempre più capillare;
-
i bassi costi dell'hardware non permettono ai costruttori di effettuare
gli investimenti necessari per lo sviluppo di nuovi sistemi operativi;
-
i produttori si software applicativo non riescono, a causa dei costi, a
sviluppare programmi orientati a diversi sistemi operativi.
-
Quindi nasce l'esigenza di:
-
un sistema operativo che si adatti facilmente alle varie architetture;
-
un unico sistema operativo su cui implementare il software applicativo.
-
Si afferma dunque come sistema operativo Unix:
-
facilmente portabile;
-
il più semplice possibile;
-
progettato per minisistemi e per ambienti multiuser;
-
dotato di tools molto efficaci per lo sviluppo del software.
-
L'evoluzione di UNIX
Principi di Progettazione
-
Scelte di base
-
Progettato originariamente come sistema time-sharing
-
La maggior parte degli algoritmi è stata scelta in base a criteri
di semplicità
-
Progettato per programmatori --> massima interattività,
elevato numero di strumenti per lo sviluppo del software
-
Filosofia di lavoro
-
Far fare al sistema il maggior numero possibile di operazioni,
utilizzando i tools standard;
-
Riutilizzare il più possibile il lavoro fatto dagli altri
utenti, combinando opportunamente i tools;
-
Sviluppare il lavoro in modo graduale;
-
Costruire, quando possibile, tools riutilizzabili.
-
La struttura di UNIX
Componenti fondamentali
-
Il Kernel
-
E' il sistema operativo vero e proprio;
-
Gestisce e alloca le risorse del sistema di calcolo;
-
Permette l'esecuzione di programmi/comandi;
-
Fornisce un file system per la gestione delle informazioni;
-
E' quasi tutto scritto in linguaggio C.
-
La Shell
-
E' un programma applicativo;
-
Realizza l'interfaccia con l'utente;
-
Permette l'accesso interattivo al sistema operativo
-
Riceve, interpreta ed esegue le azioni richieste da un comando, generando opportune system-calls;
-
Permette di svolgere importanti operazioni: trattamento sintetico dei nomi,
trattamento speciale dell'input/output, personalizzazione dell'ambiente di
lavoro.
-
Le Utilities
-
Varie Shells sia come interpreti di comandi sia come linguaggi di
programmazione;
-
Compilatori, strumenti di produzione e di gestione del software;
-
Strumenti per la produzione di documenti;
-
Strumenti per la comunicazione ed il networking;
-
Strumenti per lo sviluppo di tools e linguaggi.
Un po' di storia di Linux
E' utile distinguere tra:
-
Linux kernel cioè la parte di codice completamente
originale implementato dalla comunità Linux;
-
Linux system cioè l'ambiente standard per applicazioni e
programmi utente che comprende molte componenti (originali o ereditate da
altri progetti).
Le tappe fondamentali dello sviluppo:
-
14 Maggio 1991: rilascio della prima release 0.01. Sviluppata esclusivamente
per processori 80386-Intel compatibili; versione estremamente limitata e
senza interfaccia di rete.
-
14 Marzo 1994: rilascio della versione Linux 1.0. Comprende l'interfaccia
standard (Unix) di rete per la gestione del protocollo TCP/IP;
device-drivers per comunicazioni su supporto ethernet, linee seriali
o modem.
-
Marzo 1995: rilascio della versione Linux 1.2. E' l'ultima versione orientata
esclusivamente al mondo PC.
-
Giugno 1996: rilascio della versione Linux 2.0. Supporta architetture
differenti (anche a 64 bits), architetture multiprocessori e quindi è
disponibile per processori Alpha, Sparc, Motorola, Mac e PowerMac. Migliora
e amplia i servizi di rete (include Appletalk e Microsoft LanManager).
Supporta la gestione delle threads, dell'automatic loading e
la compatibilità POSIX.
Principi di Progettazione
-
In linea di massima richiama una classica implementazione Unix.
E' un sistema multiuser, multitasking con un insieme
completo di tools Unix-compatibili: file system, networking.
-
Le ultime versioni, pur continuando a curare velocità ed efficienza,
sono particolarmente orientate alla standardizzazione.
-
Linux è progettato per seguire lo standard
POSIX e almeno due distribuzioni hanno otteneuto la
certificazione ufficiale.
Componenti fondamentali
Linux, in linea con le implementazioni classsiche di Unix, è composto
fondamentalmente da:
-
Il Kernel
-
E' il responsabile di tutte le principali funzioni (gestione dei processi,
implementazione della memoria virtuale, ecc.) del Sistema Operativo
vero e proprio;
-
Tutte le sue funzionalità hanno accesso completo alle risorse fisiche
della macchina e sono eseguite in modo privilegiato: kernel mode.
-
Le System Libraries
-
Sono un insieme standard di funzioni attraverso le quali le applicazioni
utente interagiscono con il kernel;
-
Consentono l'esecuzione di molte funzioni del sistema operativo che non
richiedono i privilegi del kernel.
-
Le System Utilies
-
Sono programmi che svolgono specifici compiti di gestione del sistema;
-
Possono essere eseguite una sola volta (operazioni di inizializzazione
o personalizzazione) oppure essere perennemente in esecuzione (gestione
della rete, degli accessi, ecc...).
-indietro-