# Unix

Unix è un sistema operativo sviluppato originariamente dai Bell Laboratories negli anni '60 e '70. È noto per essere il primo sistema operativo portabile, multiutente e multitasking, implementato con il linguaggio di programmazione C. UNIX è stato progettato per gestire file come semplici sequenze di byte e utilizza un file system gerarchico; inoltre gestisce dispositivi e comunicazioni interprocesso come se fossero file.

## Storia

La storia del sistema operativo UNIX inizia nei laboratori Bell di AT&T negli anni '60. Gli informatici statunitensi Ken Thompson e Dennis Ritchie sono stati tra i principali sviluppatori che hanno lavorato su questo progetto. UNIX è nato come un’evoluzione del progetto Multics, che era troppo complesso e pertanto fu abbandonato.
Nel 1969, Thompson scrisse la prima versione di UNIX su un computer Digital Equipment Corporation PDP-7. Successivamente, Ritchie riscrisse gran parte del sistema operativo in linguaggio C, rendendolo più portabile e flessibile. Questa riscrittura ha permesso a UNIX di essere eseguito su diverse piattaforme hardware, un fattore chiave per la sua diffusione.
Negli anni '70, UNIX fu adottato da molte università e istituti di ricerca, contribuendo alla sua evoluzione e miglioramento. La versione 7 di UNIX, pubblicata nel 1979, è stata una delle versioni più influenti, introducendo molte delle caratteristiche che sono ancora presenti nei sistemi operativi moderni.
Negli anni '80, UNIX ha visto una commercializzazione significativa con la nascita di diverse varianti come BSD (Berkeley Software Distribution) e System V. Queste varianti hanno portato a una frammentazione del mercato, ma anche a una grande innovazione.

## Descrizione

Il sistema operativo Unix può essere riassunto in base alle seguenti caratteristiche:
* Multiutente: Permette a più utenti di interagire contemporaneamente con il sistema da terminali diversi, evitando interferenze tra le attività degli utenti. Ogni utente è identificato univocamente da un nome logico (username) e suddiviso in gruppi, ciascuno identificato da un nome (groupname). Il sistema definisce anche un utente root, che rappresenta l’amministratore di sistema e non ha limitazioni nell’accesso alle risorse.
* Multiprogrammato (multitasking): Il kernel supporta l’esecuzione contemporanea di più processi gestiti tramite divisione di tempo (timesharing).
* Gestione della memoria virtuale: Utilizza paginazione e segmentazione per consentire a ogni processo di indirizzare un’area di memoria potenzialmente superiore alla memoria centrale disponibile.
* Portabile: Grazie all’uso del linguaggio C, Unix è altamente portabile e disponibile su una vasta gamma di architetture hardware.
* Aperto: Le versioni più recenti si sono uniformate allo standard POSIX. Unix implementa anche molti dei servizi e protocolli di comunicazione più diffusi su Internet, facilitando l’integrazione dei sistemi Unix in una rete.
* Ambiente di sviluppo per programmi in C: Mantiene uno stretto legame con il linguaggio di programmazione C, offrendo un ricco insieme di strumenti per lo sviluppo di applicazioni in C, tra cui il compilatore cc.

## Galleria d'immagini

* NetBSD
* OpenBSD
* DragonFly BSD
* Microsoft XENIX
* Logo AIX
* Logo HP-UX