UNIX Gruppo G. Chiara, I. Ilaria, M. Silvia, P.Elena, S.Alessia INDICE • Cos’è UNIX • Caratteristiche • Storia di Unix • Il linguaggio C • Linux 05/01/13 COSA E’ UNIX? Unix non è né una ditta di computer, né un programma, né un singolo sistema operativo, ma piuttosto un nome che indica una famiglia di sistemi operativi di produttori diversi e progettati per computer diversi; questi sistemi sono tra loro non uguali, ma comunque simili per modalità di funzionamento e comandi implementati. Non esiste pertanto lo Unix, ma ogni utente si troverà a fare i conti con il proprio Unix, quello installato sulla macchina con cui lavora. Il tipico Unix è molto potente, molto sicuro, molto ben funzionante e molto complicato da usare. Dimenticatevi icone, mouse, eccetera: lo Unix è esclusivamente testuale e funziona a riga di comando, proprio come MS-DOS anche se, successivamente, è stato introdotto X-Windows, che sta a Unix come Windows sta a MS-DOS, e permette di lavorare con un'interfaccia grafica. Del resto, Unix è nato nel 1972 (difatti, MS-DOS è una pallida copia di Unix). MS-DOS è stato il sistema operativo dedicato ai personal computer più diffuso al mondo, prima dell’avvento di Microsoft Windows 95. X-Windows CARATTERISTICHE Il sistema operativo Unix può essere riassunto in base alle seguenti caratteristiche: • Multiutente: più utenti possono interagire contemporaneamente 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 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. • 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: 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). 05/01/13 STORIA DI UNIX • UNIX nasce nel 1969 negli Stati Uniti, ad opera di Ken Thompson, Dennis Ritchie, Rudd Canaday e Doug McIlroy. Ken Thompson and Dennis Ritchie • I quattro lavoravano presso i Bell Laboratories, allora appartenenti alla AT&T, la più grossa azienda di telefonia americana. • Negli anni precedenti avevano lavorato insieme ad altri ad un sistema operativo innovativo di nome Multics, ma il progetto fu abbandonato per l’eccessiva complessità. Contrari a questa decisione, proseguirono il loro lavoro e implementarono su un antico DEC PDP7 quello che divenne Unix, scegliendo il nome in antitesi con il vecchio progetto. DEC PDP-7 • Durante lo sviluppo di Unix, Thompson e Ritchie inventarono anche il linguaggio C, che utilizzarono per riscrivere il sistema operativo stesso intorno al 1973, e che grazie alle sue caratteristiche di portabilità permise che in seguito il kernel fosse facilmente riutilizzabile su altre piattaforme, diventando di fatto il primo sistema portabile della storia dell’informatica. • Unix fu subito utilizzato all’interno di AT&T per gestire sistemi di telefonia, soppiantando il software di base dei primi mini-computer creati per quello scopo, che era molto limitato e basilare. • La posizione monopolistica di AT&T non le consentiva di espandersi ulteriormente in settori non strettamente legati alla telefonia, per non incorrere nelle sanzioni delle autorità, e quindi essa rinunciò a mantenere le royalties su Unix, e fu disponibile a inviarne copie a basso prezzo a varie università ed aziende americane per scopi didattici o di sviluppo interno, senza fornire nessun supporto e senza dare eccessiva pubblicità alla cosa. Aula UNIX in un’università americana • Questo fece nascere negli anni immediatamente successivi un certo numero di varianti del sistema operativo, che fra la fine degli anni ’70 e gli inizi degli anni ’80 furono poi riunificate dai Bell Labs in quello che si chiamò Unix System III. Dal successivo sviluppo nacque Unix System V (il System IV non fu rilasciato al pubblico), ed a questo punto AT&T cominciò a supportarlo ufficialmente. • Nel frattempo però l’università di Berkeley aveva iniziato a distribuire una sua versione di Unix detta BSD (Berkeley Software distribution) che girava su macchine DEC VAX. In realtà fu sempre Ken Thompson a scriverla, durante un anno sabbatico che trascorse a Berkeley, insieme ad alcuni studenti. In quella sede nacquero l’editor VI, la C-shell, Sendmail, e il supporto TCP/IP (si ricordi che per tradizione lo stack TCP/IP dei *BSD è stato sempre considerato il più solido esistente). DEC VAX • • Da questo momento quindi incominciarono ad esistere due principali “correnti” di Unix: quella basata sul System V di AT&T e quella basata sul BSD di Berkeley. A metà degli anni ’80 un gruppo di produttori che si erano basati su Unix si consorziò fondando l’Open Group, con lo scopo di non dover dipendere da aziende più grandi ed esterne al loro mercato (AT&T). L’Open Group cominciò a sviluppare standard e specifiche alle quali i sistemi dovevano attenersi… … Infatti ci si era resi conto che a quel punto era importante arrivare alla determinazione di un singolo sistema Unix sul quale concentrare gli sforzi di sviluppo, per evitare la dispersione di energie. Ma quale versione tra le tante? • Nel 1987 la AT&T si accordò con Sun Microsystems, che era in quel momento il principale sviluppatore di Unix su base BSD. Quindi le altre aziende del settore si sentirono minacciate e reagirono sotto il marchio di Open Software Foundation creando un “nuovo” sistema Unix chiamatoOSF/1. 05/01/13 • Iniziarono così le “unix wars” tra il consorzio OSF da una parte e il gruppo AT&T/Sun dall’altra, mentre l’Open Group cercava di rimanere neutrale stabilendo delle API standardizzate. Da qui iniziano le storie delle svariate varianti di Unix che conosciamo, sviluppate dalle più grosse aziende dell’informatica mondiale di quei tempi: Digital con il suo Digital Unix (poi divenuto Tru64) diretto erede di OSF/1 tanto da riportarne ancora il nome in svariate componenti interne, IBM con il suo AIX, HP con il suo HP/UX, Data General con DG/UX, Siemens con Sinix ed altri. • • • Nel 1993 AT&T vende gli Unix System Laboratories alla Novell, che cercava un sistema operativo solido da collegare alla sua gamma di prodotti NetWare. Nel 1995 SCO acquista gli Unix Laboratories da Novell, ma solo per quanto riguarda i sorgenti e la tecnologia, mentre invece i diritti e le specifiche vengono cedute all’Open Group, in modo da assicurare la prosecuzione del lavoro di standardizzazione. Infatti in seguito l’Open Group ha rilasciato le specifiche UNIX’95 e UNIX’98 ed attualmente si occupa ancora di armonizzare gli standard di sviluppo del sistema operativo assicurando l’interoperabilità fra le varie versioni. 05/01/13 IL LINGUAGGIO C Il C è un linguaggio che, come il Pascal ed il Fortran (che sono suoi predecessori), permette di salvare i valori in variabili, di strutturare il codice, di convogliare il flusso del programma utilizzando istruzioni di ciclo, istruzioni condizionali e funzioni, di eseguire operazioni di input/output a video o su file, di salvare dati in array o strutture; ma diversamente da questi linguaggi (e qui i suoi maggiori punti di forza) permette di controllare in modo più preciso le operazioni di input/output, inoltre il C è un linguaggio più sintetico e permette di scrivere programmi piccoli e di facile comprensione. Con il linguaggio C si possono sviluppare programmi di qualsiasi genere, compresi i videogiochi; inoltre praticamente tutti i sistemi operativi sono sviluppati per la maggior parte in Assembly ed in C. Dennis Ritchie, padre di Unix e del linguaggio C LINUX Linux è una famiglia di sistemi operativi per personal computer, aventi la caratteristica comune di utilizzare come nucleo il kernel Linux. Il kernel linux è uno dei più riusciti esempi di software open source. È stato rilasciato sotto la libera licenza GNU GPL , ha così aumentato il numero dei suoi sviluppatori e utilizzatori in tutto il mondo. OPEN SOURCE In informatica, open source indica un software i cui autori ne favoriscono il libero studio e l'apporto di modifiche da parte di altri programmatori indipendenti. Grazie alla portabilità del kernel Linux sono stati sviluppati sistemi operativi Linux per un'ampia gamma di computer, dai personal computer, ai cellulari, dai tablet computer e console, ai mainframe e ai supercomputer ed esistono sistemi Linux installabili anche come server. Perché è stato creato Linux? Negli anni '80 e '90 chi aveva bisogno di usare i computer poteva scegliere tra sistemi operativi Microsoft poco costosi e supportati dal mercato dei PC, e costosi sistemi tecnologicamente avanzati rappresentati sostanzialmente dai sistemi UNIX. Il giovane Linus Trovalds , studente finlandese appassionato di programmazione, con la creazione del sistema operativo Linux è andato a colmare l'esigenza di un sistema tecnologicamente avanzato, economico, con specifiche pubbliche, utilizzabile su hardware facilmente reperibile, ed adatto a far funzionare l'incredibile quantità di software libero prodotto in tutto il mondo. Linus Trovalds Le radici UNIX di Linux Linux si è sviluppato nella cultura del libero scambio di idee e di software. Si è cercato di mantenere aperte le comunicazioni tra gli sviluppatori di software. Lo scopo era di creare del software funzionante, indipendentemente da chi era il proprietario del codice. UNIX si era sviluppato con attenzione al valore delle idee più che all'importanza dei profitti. Per questo si era data importanza ad aspetti come l'esecuzione in rete di programmi, possibilità di gestire contemporaneamente più utenti, e più programmi contemporaneamente (tutte cose che non era in grado di svolgere MS-DOS, o Windows). Linux Per questo il codice sorgente (gli ingredienti) di UNIX era stato distribuito gratuitamente alle università, e consentiva agli utenti di apportare i propri miglioramenti al sistema. Posix Unix 05/01/13 Quando alcune ditte come AT&T hanno cominciato a proteggere con licenze il codice sorgente delle versioni UNIX create per i loro computer, si è sentita l'esigenza di creare delle specifiche tecniche comuni per questi sistemi. Queste specifiche denominate POSIX, sono quelle a cui vuole conformarsi Linux che non può utilizzare il marchio commerciale UNIX.