Unix (UNIX)
Bell Laboratories
Nel 1969 presso i Bell Labs un gruppo di programmatori creò Unics derivato da un sistema coevo di nome Multics, in seguito il nome divenne Unix ed ancora UNIX diventando un marchio registrato della AT&T società a monte dei Bell Labs. Unix, quindi, è stato progettato nei Bell Laboratories. Il primo sistema che può definirsi a tutti gli effetti come "Sistema Unix" fu sviluppato da Ken Thompson nel 1969 per poter eseguire un programma chiamato "Space Travel" che simulava i movimenti del sole e dei pianeti, così come il movimento di una navicella spaziale che poteva atterrare in diversi luoghi
Il calcolatore nella figura e' lo stesso modello su cui venne creato Unix
Caratteristiche di Unix (UNIX)Multiutenza: più utenti possono interagire contemporaneamente (da terminali diversi) con il sistema, che evita interferenze tra le attività dei vari utenti. All'interno del sistema ogni utente è individuato univocamente da un nome logico (l'username). Inoltre, gli utenti sono suddivisi in gruppi, ciascuno individuabile univocamente mediante il suo nome (il groupname). In ogni sistema è definito l'utente root, che rappresenta l'amministratore di sistema, e che, in generale, non ha alcuna limitazione nell'accesso alle risorse del sistema stesso. Multiprogrammazione: il suo nucleo può supportare la contemporanea esecuzione di più processi gestiti a divisione di tempo.Gestione della memoria virtuale: il sistema di gestione della memoria in Unix si basa su paginazione e segmentazione. Queste caratteristiche consentono ad ogni processo di indirizzare un'area di memoria di dimensioni eventualmente superiori a quelle della memoria centrale effettivamente disponibile. Portabile: grazie all'impiego del linguaggio C nella realizzazione del sistema, esso gode di un'elevata portabilità, ed è oggi disponibile su una vasta gamma di architetture. Aperto: soprattutto nelle versioni più recenti le caratteristiche di Unix si sono via via uniformate allo standard POSIX. Inoltre, Unix realizza alcuni dei più diffusi servizi e protocolli di comunicazione della rete Internet, rendendo possibile una facile integrazione di sistemi Unix all'interno di una rete. Ambiente di sviluppo per programmi C: Unix mantiene tuttora uno stretto legame con il linguaggio C. Questa relazione si manifesta anche nella disponibilità all'interno delle utilità di sistema di un insieme piuttosto ricco di strumenti per lo sviluppo di applicazioni C (tra i quali il compilatore cc).Lo sviluppo di Unix si deve in parte a un progetto precedente, Multics, abbandonato ben presto dalla direzione dei Bell Labs perché ritenuto troppo complesso. Multics nacque con presupposti molto avanzati per l'epoca, in particolare era un sistema operativo in grado di supportare l'esecuzione di applicazioni in timesharing. Si scelse di svilupparlo internamente, dato lo scarso supporto che l'allora produttore di computer dava a questo aspetto. Si chiamava BESYS il sistema operativo che veniva montato di default sulle macchine, e si trattava più che altro di una semplice estensione dell'hardware. BESYS richiedeva un massiccio intervento manuale da parte degli operatori: ogni sequenza di operazioni doveva essere caricata dall'uomo, con grande spreco di tempo.
Un click sull'immagine per visualizzarla in dimensioni maggiori
Fu con l'intento di automatizzare queste operazioni (timesharing), che nacque Multics (Multiplexed Information and Computing Service). Il progetto si rivelò però troppo complesso, specie per i ricercatori abituati ai sistemi operativi classici e perfettamente lineari. Fu ben presto abbandonato a favore di un altro sistema nettamente più semplice, ma anche molto più modesto: GECOS. Alcuni ricercatori non ritennero corretta la decisione presa e decisero nonostante tutto di continuare lo sviluppo del progetto. Furono in particolare Ken Thompson e Dennis Ritchie a non arrendersi: fu grazie ai loro sforzi che, su una vecchissima macchina PDP-7, nacque la versione finale di Unics (in seguito Unix). Nome che stava a sottolineare la semplicità del progetto rispetto alla mal gestita complessità di Multics. In seguito al completamento del primo kernel, Thompson e altri ricercatori elaborarono una serie di principi di programmazione: - si fa in modo che ogni programma faccia una sola cosa e bene
- ci si aspetta che l'output di un programma diventi l'input di un altro
- si sviluppa software con l'idea che esso verrà provato subito: non si esiti a condividere il programma
- si usano degli strumenti appositi nella programmazione e non si cerca di reinventare la ruota.
Fine della Prima Parte