Unix
R. Giulia, M. Maddalena,
M. Niccolò, B. Giacomo
Sommario
• la Storia
• gli Ideatori
• le Caratteristiche
• Linux
•
•
•
•
•
Informazioni Generali
la Storia
le Caratteristiche
la Gestione dei File
gli Utenti
•
•
•
Che cos’è un linguaggio di programmazione?
il Linguaggio C
le Caratteristiche
• il Linguaggio di Programmazione C
la Storia
Le origini di Unix risalgono alla metà degli anni 1960 quando AT&T,
Honeywell, General Electric e il Massachusetts Institute of Technology
attivarono nei Bell Laboratories il progetto MULTICS, finanziato dall’Agenzia
dei Progetti di Ricerca Avanzata del Dipartimento della Difesa (ARPA).
Multics fu progettato per garantire la Sicurezza Militare, esso infatti
supportava il concetto di Sicurezza Multilivello: era infatti diviso in vari livelli
(Massimo Segreto, Segreto, Confidenziale e Informazione Non Classificata) ed
era in grado di evitare che le informazioni appartenenti ad un livello potessero
finire nelle mani di un utente di un altro livello.
Nel 1969 il progetto era però molto indietro rispetto al programma e fu quindi
abbandonato dalla direzione dei Bell Laboratories. Ken Thompson e Dennis
Ritchie, due dipendenti dell’AT&T, erano in disaccordo con questa decisione e,
continuando a credere nella loro idea, rilevarono un computer PDP-7 e
proseguirono in proprio il loro progetto.
Questo nuovo progetto venne chiamato Unix, per sottolineare la relativa
semplicità che lo differenziava dal precedente Multics. Il sistema era formato da
diversi programmi compatti, chiamati Tools, ognuno dei quali eseguiva una
specifica funzione. L’uso combinato di questi programmi permetteva di
risolvere problemi complessi.
la Storia
Nel 1973 Thompson riscrisse la maggior parte di Unix in C, il linguaggio di
programmazione appena inventato da Ritchie. Grazie a questo, i programmi
potevano essere spostati con estrema facilità da un computer all’altro.
Rimaneva comunque il problema che ogni sistema gestiva le Input/Output in
modo diverso, temporaneamente risolto dalla libreria portabile di
Input/Output sviluppata da Mike Lesk.
Nel 1978 Unix venne installato sul nuovo minicomputer VAX e, pur essendo
un sistema operativo ancora sperimentale, divenne popolare in diverse
università e venne commercializzato da diverse aziende.
Unix si era prevalentemente diffuso nelle università, come ad esempio nella
Berkeley in California, la quale pagò anche per avere un nastro contenente il
codice sorgente del programma.
Invece di limitarsi ad utilizzare Unix, Bill Joy e Chuck Haley, due studenti
laureati alla Berkeley, avviarono la realizzazione di importanti modifiche e,
nel 1978, realizzarono il BSD (Berkeley Software Distribuition), ovvero una
collezione di programmi e modifiche del sistema Unix, grazie anche al
sostegno finanziario di ARPA.
la Storia
Col passare degli anni BSD UNIX e AT&T UNIX divennero sistemi operativi
ben distinti, ognuno con caratteristiche proprie. L’innovazione più importante
su BSD fu il software di rete BSD UNIX 4.2, con il quale si poterono facilmente
connettere in lan vari computer tra loro.
Intanto AT&T creò lo Unix Support Group (USG), che continuò lo sviluppo di
Unix e inaugurò la nuova versione di AT&T UNIX, la System V.
Unix ottenne sempre più interesse da parte delle grandi compagnie e, ai primi
due competitori (AT&T e BSD), si aggiunsero ben presto anche Sun
Microsystems (che immise nel mercato SunOS, sistema operativo basato su
BSD 4.1) e Digital Equipment Corporation (che iniziò lo sviluppo di ULTRIX,
partendo da BSD 4.2).
Le compagnie che entravano nel mercato Unix dovevano decidere lo standard
da adottare: da una parte Berkeley Unix e dall’altra AT&T System V. Basate
su quest’ultimo, nacquero diverse versioni di Data General, IBM, Hewlett
Packard e Silicon Graphics. Una terza versione di Unix, chiamata Xenix, fu
sviluppata dalla Microsoft agli inizi degli anni 1980, basata anch’essa su Unix
System V.
la Storia
Dalla fusione di Xenix e UNIX System V nacque il nuovo Unix System V/ 386
Release 3.12, , rilasciato nell’agosto del 1988. Nello stesso anno nasce anche
System V Release 4 (SVR4), nata dalla fusione delle versioni di AT&T e Sun
Microsystems. A questo punto Sun dichiara di voler abbandonare SunOS per
dedicarsi al nuovo sistema operativo che chiamerà Solaris.
Per non essere tagliate fuori dal mercato Unix, le compagnie escluse dai
precedenti accordi (tra cui Apollo Computer, Digital Equipment Corporation,
Hewlett Packard, IBM e altre) decisero di fondare, nel maggio 1988, una
società, la Open Software Foundation (OSF), il cui scopo dichiarato era
strappare il controllo di Unix ad AT&T e metterlo nelle mani di una coalizione
no-profit.
OSF decise di basare la propria versione di Unix su AIX ma, essendo di molto
in ritardo sul programma, alcune compagnie uscirono dalla società o crearono
una versione in proprio (per esempio AIX di IBM).
Nel 1993 AT&T decise di vendere tutti i diritti di Unix a Novell (un’azienda
statunitense che opera nel settore della produzione di software), la quale creò
UnixWare, un sistema che integrava la tecnologia alla base di NetWare.
la Storia
UnixWare si trovò poi a dover competere con Windows, il sistema operativo
della Microsoft, ma essendo mancante di un supporto commerciale valido
perse la lunga battaglia.
Nel frattempo nacque Linux, un sistema operativo simile a Unix. Fu creato per
hobby da Linus Torvalds e si colloca nell’area dei free software.
Nel 1983 Richard Stallman lancia un progetto per creare GNU, un clone di
Unix che fosse un software libero, ossia garantisse completa libertà di utilizzo
e modifica da parte di utenti e sviluppatori. Tale sistema ebbe un notevole
successo soprattutto in ambito server, ma anche per quanto riguarda i netbook
e i personal computer.
Unix resta ancora molto popolare nelle comunità di ricerca grazie all’apertura
e alla flessibilità che lo caratterizzano. Inoltre l’utilizzo di questo sistema
operativo si sta estendendo anche alle comunità commerciali.
Nonostante la grande varietà di sistemi Unix, è nato un nuovo set standard
che include interfacce, librerie e caratteristiche di comportamento comuni,
chiamato Posix.
gli Ideatori
Ken Thompson, nato a New Orleans il 4 febbraio
1943, è un programmatore e hacker statunitense.
E’ considerato un pioniere dell’informatica
moderna ed è principalmente conosciuto per
essere stato uno dei primi creatori del sistema
operativo Unix e per aver scritto il linguaggio di
programmazione B.
Dennis MacAlistair Ritchie, nato a Bronxville il
9 settembre 1941 e morto a Murray Hill il 12
ottobre 2011, è stato un programmatore
statunitense. E’ considerato un pioniere
dell’informatica moderna ed è principalmente
conosciuto per essere stato uno dei primi
creatori del sistema operativo Unix e per aver
scritto il linguaggio di programmazione C.
gli Ideatori
William N. Joy, nato l’8 novembre 1954, è un
informatico statunitense. È considerato il padre di
Solaris, il sistema operativo certificato come versione
di Unix, ed ha attivamente preso parte allo sviluppo
come principale programmatore del BSD UNIX.
Linus Benedict Torvalds, nato ad Helsinki il 28
dicembre 1969, è un programmatore e informatico
finlandese conosciuto soprattutto per essere stato
l’autore della prima versione del sistema operativo
Linux.
Richard Matthew Stallman, nato a New York il 16
marzo 1953, è un programmatore, informatico ed
attivista statunitense. È uno dei principali esponenti
del software libero e nel settembre del 1983 diede
avvio al progetto GNU.
le Caratteristiche
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 usename). 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 del 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. Queste caratteristiche
consentono ad ogni processo di indirizzare un’area di memoria di
dimensioni eventualmente superiori a quelle della memoria centrale
effettivamente disponibile;
le Caratteristiche
•
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 (Portable Operating System
Interface for Unix). 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 applicazione in “C” (tra i quali il compilatore cc).
Linux
Informazioni Generali
Linux è un sistema operativo di tipo Unix, con il quale, per essere precisi, si
indica solo il kernel, cioè il nucleo centrale del sistema operativo: si occupa
della gestione della memoria, dei processi e del controllo dell'hardware e,
essenzialmente, permette a tutti gli altri programmi di girare. Non è possibile
utilizzare Linux da solo poiché è un kernel, quindi, è normalmente utilizzato
in combinazione con il sistema operativo GNU.
Ciò che rende Linux diverso dagli altri sistemi è il fatto di essere cresciuto
grazie all'aiuto di molti ed eterogenei gruppi di programmatori UNIX ed
esperti di Sistemi Operativi che hanno messo a disposizione il codice da loro
prodotto, gratuitamente. Questa eterogeneità' si riferisce sia alle competenze
tecniche e al settore di provenienza che alla dislocazione geografica. Affinché'
queste comunità di programmatori potessero lavorare insieme era necessario
un efficiente strumento di comunicazione. Lo strumento fu Internet ed
essendo Linux il sistema operativo scelto da queste persone, significa che gli
strumenti e le utility necessarie ad utilizzare la rete furono tra le prime a
comparire.
Linux
la Storia
La prima versione del kernel Linux è stata messa a disposizione su
Internet da Linus Torvalds nel settembre del 1991. Da allora Linux è stato
sviluppato a un ritmo impressionante da migliaia di programmatori in tutto il
mondo. Una delle principali ragioni per cui Linux ha potuto essere sviluppato
così rapidamente sta sia nelle nuove possibilità di comunicazione che Internet
ha reso disponibile a tutti, sia nel software che era già reperibile gratuitamente
a quell'epoca. Linux non è nato dal nulla, ma è basato su un'ampia piattaforma
di software libero: tutto iniziò nel 1985 quando Richard Stallman, ex
ricercatore del MIT, fondò la Free Software Foundation (FSF), finanziata per
donazioni, alla cui base c'era il progetto GNU, che ambiva alla realizzazione di
un sistema operativo free. Il software free, rilasciato con la GNU General
Public Licence (GPL), in questo contesto, implica:
• Ridistribuzione libera del software e del codice
• Codice sorgente aperto e disponibile per lettura, modifiche, analisi,
controllo
• Prodotti derivati da prodotti GPL devono avere licenza GPL
• Copyright dell'autore
Linux
Le Caratteristiche
Attualmente Linux offre:
• Multitasking: possibilità di eseguire più programmi contemporaneamente
• Funzionamento multiutente: uso contemporaneo della macchina da parte
di più utenti
• Multipiattaforma: Linux è praticamente compatibile con tutti i comuni
hardware di PC, e può girare anche su processori non INTEL
• funzioni di protezione della memoria tra processi
• gestione della memoria virtuale attraverso la paginazione
• un pool di memoria unificato per i programmi e la memoria cache
• librerie statiche e dinamiche
• utilizza un proprio tipo di file system
• Linux permette di accedere a file system diversi: MS-DOS, è stato un
sistema operativo commerciale della Microsoft dedicato ai personal
computer con microprocessore x86, VFAT (Windows 9x ), HPFS (OS/2 2.x),
HFS(Apple Mac), FFS (Amiga), SMB (file system di Windows).
• supporto per un’ampia gamma di protocolli di rete (TCP/IP, PPP…)
Linux
la Gestione dei File
Per quanto riguarda la gestione dei file, alcune differenze fondamentali di
Linux rispetto al DOS (e a Windows), sono le seguenti:
• I nomi dei file possono raggiungere la lunghezza massima di 255 caratteri
• Linux distingue tra lettere minuscole e maiuscole
• I file (e directory) i cui nomi cominciano con un punto sono considerati file
nascosti (generalmente sono utilizzati per contenere i parametri di
configurazione del software personalizzati per ogni utente)
• I file e le directory hanno un proprietario e un gruppo di appartenenza
• Come in Unix, i file e le directory hanno dei permessi: di lettura, di
scrittura, e di esecuzione. Tali permessi sono suddivisi in tre tipi :
• Permessi concessi al proprietario del file, i permessi concessi al gruppo, i
permessi concessi a tutti gli utenti
• Solo il proprietario del file (e l'amministratore di sistema) può modificare i
permessi di un file
• Per poter accedere al contenuto di una directory, occorre avere permessi di
lettura ed esecuzione sulla directory.
Linux
gli Utenti
Piu’ utenti possono utilizzare lo stesso sistema (hw/sw) contemporaneamente
e ciascuno di essi e’ identificato da un numero (UID) e da un nome (Login);
solitamente gli utenti accedono al sistema fornendo la loro Login e una
"password". In tutti i sistemi Unix esiste sempre un "superutente" che ha
UID "0" e login "root" e ha il potere di fare tutto e per questo motivo
interviene in casi di estrema necessita’:
•
•
•
Configurazione del sistema
Installazione delle applicazioni
Gestione degli utenti
Il Linguaggio Di Programmazione C
Che cos’è un Linguaggio di Programmazione?
In parole molto semplici, possiamo dire che un linguaggio di programmazione
è uno strumento utilizzato per controllare il computer, facendogli eseguire
determinati compiti.
Come ogni linguaggio che si rispetti, è necessario che siano definiti due
elementi essenziali:
Il lessico e una sintassi. In linguaggio naturale, il lessico è l’insieme delle
parole che possiamo trovare nel vocabolario, ciascuna con il suo significato. La
sintassi è il modo di mettere assieme le parole per costruire una frase. Tutti i
linguaggi di programmazione esistenti possiedono questi due concetti chiave:
•
Variabile: un dato o un insieme di dati, noti o ignoti, già memorizzati o da
memorizzare.
•
Istruzione: un comando oppure una regola descrittiva.
Il Linguaggio Di Programmazione C
Che cos’è un Linguaggio di Programmazione?
Alcuni concetti sono poi presenti nella gran parte dei linguaggi:
•
•
Espressione: una combinazione di variabili
Strutture dati: meccanismi che permettono di organizzare e gestire dati
complessi.
•
Strutture di controllo: permettono di governare il flusso di esecuzione del
programma
•
Sottoprogramma: un blocco di codice che può essere richiamato da
qualsiasi altro punto del programma.
•
Funzionalità di input dati da tastiera e visualizzazione dati in output
(stampa a video).
Il Linguaggio Di Programmazione C
Il linguaggio C
Il C è un linguaggio di programmazione di uso e portata generale. Lo si è
associato strettamente ai sistemi Unix e Linux all'interno dei quali venne
sviluppato, in quanto sia i sistemi che molti dei suoi programmi sono scritti in
C. Il linguaggio C, comunque, non è vincolato ad alcuna piattaforma, e
sebbene sia stato definito "linguaggio di programmazione di sistema" (poiché
si presta alla scrittura di compilatori e sistemi operativi), altrettanto
efficacemente è stato adoperato per creare programmi di utilità primaria negli
ambiti più disparati.
Il C è un linguaggio di programmazione relativamente minimalista; la sua
semantica utilizza un insieme ristretto di concetti relativamente semplici e
vicini al funzionamento dell'hardware dei calcolatori; molte istruzioni C sono
traducibili direttamente con una singola istruzione di linguaggio macchina
(per esempio, gli operatori di autoincremento e autodecremento).
Il Linguaggio Di Programmazione C
le Caratteristiche
Il C è un linguaggio di programmazione relativamente minimalista. Quali
sono le sue peculiarità? Sono molte e qui di seguito elenchiamo quelle più
importanti cercando di chiarirne il significato.
• Dimensioni del codice ridotte – Generalmente il codice sorgente di un
programma in C ha un peso (in Kb) relativamente piccolo, in questo modo
risulta molto agevole trasportare il codice da un PC ad un altro, anche usando
un semplice floppy.
• Dimensioni dell’eseguibile ridotte – Anche una volta compilato, un
programma in C, risulta molto piccolo e quindi di più facile diffusione;
ovviamente un programma in C potrà essere eseguito solamente sul
medesimo Sistema Operativo per cui è stato compilato.
Il Linguaggio Di Programmazione C
le Caratteristiche
Il C è un linguaggio di programmazione relativamente minimalista. Quali
sono le sue peculiarità? Sono molte e qui di seguito elenchiamo quelle più
importanti cercando di chiarirne il significato.
•
Efficienza dei programmi – Un programma scritto in C, proprio per la
possibilità messa a disposizione dal linguaggio di gestire a fondo la memoria,
e per le sue dimensioni ridotte, risulta particolarmente efficiente.
•
Può essere compilato su una vasta gamma di computer – Ogni computer
può differire dagli altri per almeno due cose, l’architettura ed il sistema
operativo; ad esempio un computer con processore x86 e Windows ha delle
istruzioni (intese come istruzioni del processore) ed una gestione della
memoria diverse da uno Sparc con Linux, però un programma scritto in C può
essere compilato su ambedue le macchine, data l’alta disponibilità di
compilatori per diverse piattaforme.
Scarica

Unix1