Utente:Charybdis/sandbox

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Unix
sistema operativo
SviluppatoreBell Laboratories
ProprietarioThe Open Group
Tipo di kernelKernel monolitico
LicenzaNessuna per le prime versioni, Software proprietario poi. Abandonware oggi.
Stadio di sviluppoTerminato. Sono disponibili, comunque, diverse implementazioni derivate.
PredecessoreMultics
SuccessoreBSD, GNU, Kernel Linux, Solaris, AIX, HP-UX, macOS, Tru64 UNIX, SCO UnixWare, Xenix e altri.
Sito webwww.unix.org

Unix (registrato ufficialmente come UNIX) è un sistema operativo portabile per computer inizialmente sviluppato da un gruppo di ricerca dei laboratori AT&T e Bell Laboratories, nel quale figurarono sulle prime anche Ken Thompson e Dennis Ritchie.

Storia[modifica | modifica wikitesto]

Unix è stato progettato nei Bell Laboratories (AT&T Corp.). Il primo sistema operativo che può definirsi a tutti gli effetti come "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[1].

Caratteristiche[modifica | modifica wikitesto]

Il sistema operativo Unix può essere riassunto in base alle seguenti caratteristiche:

  • Multiutente: 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 (lo 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;
  • Multiprogrammato (multitasking): il suo nucleo o kernel può supportare la contemporanea esecuzione di più processi gestiti a divisione di tempo (timesharing);
  • Gestione della memoria virtuale: il sistema di gestione della memoria virtuale 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 hardware di processori;
  • 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 scritti in "C": Unix mantiene tuttora uno stretto legame con il linguaggio di programmazione "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 in "C" (tra i quali il compilatore cc).

I Bell Laboratories (anni sessanta)[modifica | modifica wikitesto]

Evoluzione di Unix nel tempo.

Lo sviluppo di Unix si deve in parte a un progetto precedente, Multics, abbandonato ben presto dalla direzione dei Bell Laboratories 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.

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 vecchia 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:

  1. si fa in modo che ogni programma faccia una sola cosa e bene;
  2. ci si aspetta che l'output di un programma diventi l'input di un altro;
  3. si sviluppa software con l'idea che esso verrà provato subito: non si esiti a condividere il programma;
  4. si usano degli strumenti appositi nella programmazione e non si cerca di "reinventare la ruota".

Invenzione del linguaggio C[modifica | modifica wikitesto]

L'invenzione del linguaggio di programmazione C costituisce una fase importante nella storia di Unix. Il C, sviluppato da Thompson e Ritchie nell'arco 1969-1973, ha permesso di portare il kernel su piattaforme diverse dall'originario PDP-7, costituendo di fatto il primo software della storia ad essere in grado di funzionare in ambienti totalmente diversi. Assieme al kernel, ossia il nucleo del sistema operativo, Unix è stato corredato di una serie di applicazioni standard per la gestione dei file e degli utenti, che continuano ad essere usati nei sistemi operativi moderni.

Prime applicazioni in azienda (anni settanta)[modifica | modifica wikitesto]

I Bell Laboratories erano di proprietà dell'AT&T (società che gestiva le comunicazioni telefoniche negli Stati Uniti), la quale deteneva i diritti di Unix. Proprio in quel periodo, all'inizio degli anni settanta, il sistema telefonico statunitense stava subendo una piccola rivoluzione interna: l'utilizzo di mini-computer per la gestione del traffico voce e dati. Questi erano dotati di software di tipo minimale, che permetteva operazioni di manutenzione piuttosto limitate. Ben presto si scoprì come Unix, grazie alla sua concezione moderna e alla sua versatilità, permettesse ai mini-computer di fare operazioni molto più complesse. Per la prima volta, le operazioni di manutenzione potevano essere gestite a livello centrale, senza spedire i tecnici a investigare sul posto ad ogni singolo guasto.

Sviluppo ad opera del mondo universitario (anni ottanta e novanta)[modifica | modifica wikitesto]

AT&T non volle avere alcuna royalty sull'utilizzo e la modifica di Unix. Ciò non a fini di beneficenza, come si potrebbe erroneamente pensare, ma per un fatto "politico". In quanto monopolista, AT&T aveva una gamma di servizi da offrire al mercato limitato per legge e Unix non costituiva un affare direttamente collegato alle telecomunicazioni, anche se sotto certi aspetti lo era. Al centro di forti critiche per via della sua posizione dominante, AT&T permise che il codice sorgente di Unix venisse distribuito gratuitamente per fini di studio presso le università di tutto il mondo.

Ottenere una copia del sistema operativo era piuttosto semplice e davvero poco costoso: bastava pagare le spese di spedizione del supporto. In breve tempo si formò una comunità mondiale a livello universitario incentrata sullo sviluppo di nuove componenti e applicazioni per Unix. Seguendo le linee dell'open source moderno. Grazie a questo processo, nel corso degli anni settanta videro la luce le prime sette versioni del sistema operativo.

Unix costituì un forte aggregatore per la nascente scienza dell'informazione. Di fatto, si può addirittura affermare che fu il suo sviluppo congiunto a definire per la prima volta l'idea di informatica come scienza. Unix ha prodotto inoltre una serie di conseguenze altamente desiderabili in ambito scientifico:

  1. la creazione di un ambiente comune all'interno del quale i ricercatori potevano verificare e controllare gli esperimenti;
  2. i lavori prodotti si potevano riutilizzare e migliorare;
  3. avvenne il passaggio definitivo dal laboratorio isolato a un ambiente di lavoro comunitario, dove tutti potevano contribuire.

Per risolvere i problemi di condivisione del codice, si introdusse per la prima volta la copia di file tra sistemi dislocati in parti diverse del mondo attraverso la linea telefonica. Il sistema venne chiamato UUCP (Unix to Unix Copy) e nonostante venne ben presto surclassato dalla nascente ARPANET (in seguito Internet), costituì un esempio dell'ambiente vivace e produttivo che si era costruito attorno a Unix.

La commercializzazione[modifica | modifica wikitesto]

Con lo smembramento di AT&T nel 1984 nelle famose 7 baby-bells, società più piccole che operavano a livello locale, la condivisione gratuita di Unix ebbe fine. Solamente alcune Università, come Berkeley in California, continuarono a sviluppare la loro versione derivata di Unix. AT&T aveva dimesso la propria posizione di operatore dominante ed era diventato un carrier per le chiamate tra i vari stati. La commercializzazione di Unix non conosceva più ostacoli e pertanto Unix System III (basato sulla settima versione) fu la prima release ad essere rilasciata dietro corrispettivo di un prezzo e senza codice sorgente. Seguì pochi anni dopo la versione UNIX System V, che includeva il supporto ad altre architetture e l'inserimento dell'editor vi originariamente sviluppato dalla derivazione californiana di Unix, BSD.

Altre società cominciarono a offrire versioni commerciali di Unix. Alcune ottennero un'apposita licenza di utilizzo del codice da parte di AT&T, altre si affidarono al ramo di sviluppo creato dall'Università di Berkeley. Fu appunto da questa derivazione che Bill Joy creò SunOS (ora Solaris e OpenSolaris) e fondò Sun Microsystems nel 1982. Anche Microsoft ebbe la propria versione di Unix, che chiamò XENIX, poi acquisita dalla SCO (Santa Cruz Operation). Si deve proprio alla SCO l'opera per renderla compatibile con i sistemi Intel 386.

Nel 1984 nacque il primo vero standard di Unix, il SVR4 o System V Release 4, che racchiudeva tutte le innovazioni promosse dalle varie società che avevano commercializzato Unix finora come Sun, BSD, SCO e IBM.

Nel 1993 AT&T decise di vendere tutti i diritti di Unix a Novell, con i quali creò UnixWare, un sistema che integrava la tecnologia alla base di NetWare. Poi UnixWare si trovò a dover competere con Microsoft Windows NT, ma essendo mancante di un supporto commerciale valido alla lunga perse la battaglia. Nel 1995 alcuni diritti sullo sviluppo e commercializzazione vennero distribuiti a SCO. Non si conosce di preciso quali diritti siano stati ceduti, e la questione è attualmente alla base dell'odierna causa che contrappone le due società.

La causa di SCO contro Linux (anni duemila)[modifica | modifica wikitesto]

Inizialmente la SCO supportò Linux con una propria distribuzione e collaborò attivamente nell'intento di rendere più appetibile il suo Unix schiacciato dalla concorrenza Microsoft; accadde, però, che mentre la SCO perdeva le vendite a causa di un inadeguato supporto commerciale, le piccole ditte di Linux crescevano incredibilmente. La crescita di Linux causò non pochi problemi a SCO, che venne schiacciata dalla forte crescita di Linux da un lato e dalla forza commerciale di Microsoft dall'altro. Decise allora di ricorrere per vie legali contro IBM e altre società che utilizzavano fortemente Linux al centro del proprio business. Le accuse riguardano presunte violazioni di copyright nel kernel di Linux; ciò significa che alcune parti di Linux, secondo SCO, sarebbero state copiate dal kernel di Unix, di cui SCO afferma di detenere i diritti.

All'inizio del 2007 SCO fornì i dettagli specifici della presunta violazione di copyright. Diversamente dalle precedenti affermazioni che vedevano SCO proprietaria di 1 milione di righe di codice, specificarono soltanto 326 linee di codice, la maggior parte del quale non era coperto da copyright.[2] Ad agosto 2007, la corte nel caso Novell stabilì, per cominciare, che SCO non possedeva neanche i diritti di copyright su Unix.[3]

Curiosamente anche BSD soffrì di un attacco legale simile (relativamente alla neo-distribuzione BSD/386), ad opera della AT&T. La disputa si concluse nel 1994, largamente a favore di BSD, dove, tra 18000 file, soltanto 3 dovettero essere rimossi dal sistema e 70 modificati in termini di licenza.

Unix e software libero[modifica | modifica wikitesto]

Nel 1983 Richard Stallman lanciò un progetto per creare GNU, un clone di Unix che fosse software libero, ossia garantisse completa libertà di utilizzo e modifica da parte di utenti e sviluppatori, sottraendo così Unix ai produttori di software proprietario. Nel 1991 il lavoro fu completato con la creazione del kernel Linux da parte di Linus Torvalds. Il mondo Unix conobbe così una seconda giovinezza.

Attualmente i sistemi operativi basati su GNU/Linux sono i più utilizzati nella grande famiglia Unix, soprattutto in ambito server, ma con una crescente diffusione anche sui netbook e i personal computer. Tra il 2007 e il 2008 diversi costruttori, tra cui Dell, ASUS, Lenovo e Hewlett-Packard, hanno proposto al grande pubblico computer con GNU/Linux preinstallato, aprendo a tale sistema operativo le porte dell'informatica personale. Dal 2009 si stanno diffondendo computer palmari e telefoni cellulari basati su Android, una versione di GNU/Linux modificata da Google per essere estremamente leggera ricorrendo all'uso però di una macchina virtuale sviluppata per gli applicativi APK da Java da Sun Microsystems, adesso da Oracle Corporation.

Specifiche e certificazioni[modifica | modifica wikitesto]

La più importante famiglia di sistemi operativi derivati da Unix ma non certificati come UNIX, è quella di BSD, di cui fanno parte FreeBSD, NetBSD, OpenBSD, DragonFly BSD e molti altri. Da ricordare che nella famiglia Unix è presente anche MINIX.

C'è una grande differenza tra le diciture "Unix", "Unix-like" e "UNIX":

Struttura delle directory[modifica | modifica wikitesto]

Ci sono delle convenzioni per allocare i vari tipi di file come programmi, files di configurazioni di sistema e degli utenti che nascono dalla versione 7 di Unix e che sono state riprese in modo simile anche dalle sue versioni derivate e cloni. Viene qui riportata una panoramica sulle collocazioni dei file in un sistema Unix:

Directory o file Descrizione
/ Lo slash / indica la directory principale (in Windows indicata con C:).
/bin
Sta per codici binari e contiene alcune fondamentali fundamental utilities, such as ls or cp, that are needed to mount /usr, when that's a separate filesystem, or to run in single-user (administrative) mode when /usr cannot be mounted. In System V.4, this is a symlink to /usr/bin.
/boot
Contains all the files that are required for successful booting process. In Research Unix, this was a single file rather than a directory.[4]
/dev
Stands for "devices". Contains file representations of peripheral devices and pseudo-devices.
/etc
Contains system-wide configuration files and system databases; the name stands for "et cetera".[4] Originally also contained "dangerous maintenance utilities" such as init,[5] but these have typically been moved to /sbin or elsewhere.
/home
Contains user home directories on Linux and some other systems. In the original version of Unix, home directories were in /usr instead.[6] Some systems use or have used different locations still: OS X has home directories in /Users, older versions of BSD put them in /u, FreeBSD has /usr/home.
/lib
Originally "essential libraries": C libraries, but not Fortran ones.[4] On modern systems, contains the shared libraries needed by programs in /bin, and possibly loadable kernel module or device drivers. Linux distributions may have variants /lib32 and /lib64 for multi-architecture support.
/media
Default mount point for removable devices, such as USB sticks, media players, etc.
/mnt
Stands for "mount". Contains filesystem mount points. These are used, for example, if the system uses multiple hard disks or hard disk partitions. It is also often used for remote (network) filesystems, CD-ROM/DVD drives, and so on.
/opt
Contains locally installed software. Originated in System V, which has a package manager that installs software to this directory (one subdirectory per package).[7]
/proc
procfs virtual filesystem showing information about processes as files.
/root
The home directory for the superuser "root" - that is, the system administrator. This account's home directory is usually on the initial filesystem, and hence not in /home (which may be a mount point for another filesystem) in case specific maintenance needs to be performed, during which other filesystems are not available. Such a case could occur, for example, if a hard disk drive suffers physical failures and cannot be properly mounted.
/sbin
Stands for "system (or superuser) binaries" and contains fundamental utilities, such as init, usually needed to start, maintain and recover the system.
/srv
Server data (data for services provided by system).
/sys
In some Linux distributions, contains a sysfs virtual filesystem, containing information related to hardware and the operating system. On BSD systems, commonly a symlink to the kernel sources in /usr/src/sys.
/tmp
A place for temporary files. Many systems clear this directory upon startup; it might have tmpfs mounted atop it, in which case its contents do not survive a reboot, or it might be explicitly cleared by a startup script at boot time.
/unix
The Unix kernel in Research Unix and System V.[4] With the addition of virtual memory support to 3BSD, this got renamed /vmunix.
/usr
The "user file system": originally the directory holding user home directories,[6] but already by the Third Edition of Research Unix, ca. 1973, reused to split the operating system's programs over two disks (one of them a 256K fixed-head drive) so that basic commands would either appear in /bin or /usr/bin.[8] It now holds executables, libraries, and shared resources that are not system critical, like the X Window System, KDE, Perl, etc. In older Unix systems, user home directories might still appear in /usr alongside directories containing programs, although by 1984 this depended on "local customs".[4]
/usr/bin
This directory stores all binary programs distributed with the operating system not residing in /bin, /sbin or (rarely) /etc.
/usr/include
Stores the development headers used throughout the system. Header files are mostly used by the #include directive in C programming language, which historically is how the name of this directory was chosen.
/usr/lib
Stores the required libraries and data files for programs stored within /usr or elsewhere.
/usr/libexec
On BSD systems[9] and older distributions of Linux, programs that are meant to be executed by other programs rather than by users directly. E.g., the Sendmail executable may be found in this directory.[10] Not present in the FHS; Linux distributions have typically moved the contents of this directory into /usr/lib, where they also resided in 4.3BSD.
/usr/local
Resembles /usr in structure, but its subdirectories are used for additions not part of the operating system distribution, such as custom programs or files from a BSD Ports collection. Usually has subdirectories such as /usr/local/lib or /usr/local/bin.
/usr/share
Architecture-independent program data. On Linux and modern BSD derivatives, this directory has subdirectories such man for manpages, that used to appear directly under /usr in older versions.
/var
A short for "variable." A place for files that may change often - especially in size, for example e-mail sent to users on the system, or process-ID lock files.
/var/log
Contains system log files.
/var/mail
The place where all the incoming mails are stored. Users (other than root) can access their own mail only. Often, this directory is a symbolic link to /var/spool/mail.
/var/spool
Spool directory. Contains print jobs, mail spools and other queued tasks.
/var/tmp
A place for temporary files which should be preserved between system reboots.

Note[modifica | modifica wikitesto]

  1. ^ Hahn Harley, Guida a Unix, Mc-Graw Hill, 1996. ISBN 88-386-0872-5.
  2. ^ Report from the Courthouse 7 March, su groklaw.net. Groklaw article
  3. ^ Court Rules: Novell owns the UNIX and UnixWare copyrights, su groklaw.net. Groklaw article
  4. ^ a b c d e The UNIX Programming Environment, Prentice-Hall, 1984, pp. 63–65.
  5. ^ hier(7) in the Seventh Edition Unix manual.
  6. ^ a b Dennis Ritchie, Unix Notes from 1972, su cm.bell-labs.com. URL consultato il 4 October 2012.
  7. ^ System V Application Binary Interface Edition 4.1 (1997-03-18)
  8. ^ M. D. McIlroy (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986. CSTR 139, Bell Labs.
  9. ^ Errore nelle note: Errore nell'uso del marcatore <ref>: non è stato indicato alcun testo per il marcatore openbsd
  10. ^ Chapter 7. sendmail, su docs.cray.com, Cray. URL consultato il 14 September 2013.

Bibliografia[modifica | modifica wikitesto]

  • Hahn Harley, Guida a Unix, Mc-Graw Hill, 1996. ISBN 88-386-0872-5.
  • Dennis M. Ritchie, Ken Thompson. 1978. "The UNIX Time-Sharing System". The Bell System Technical Journal, vol.57(6) [1].
  • NMI Club (a cura di), No SCOpyright. Il caso SCO contro Linux, Antonella Beccaria, Francesco Marchetti-Stasi, Bernardo Parrella, Emmanuele Somma, Viterbo, Stampa Alternativa, 2004, ISBN 88-7226-806-0. URL consultato il 3 luglio 2010.

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

[[Categoria:Unix]] [[Categoria:Sistemi operativi Unix]]