EVOLUZIONE DEI SISTEMI OPERATIVI Relazione di Francesco Lainati I sistemi operativi. I sistemi operativi costituiscono l’interfaccia tra la macchina e l’utente, hanno lo scopo di gestire le risorse del sistema di elaborazione e coordinare gli eventi che discendono dal suo uso. L’evoluzione dei sistemi operativi inizia negli anni ’40 con l’avvento dei primi elaboratori elettronici, erano composti da poche istruzioni per poter permettere l’utilizzo del computer da parte dell’operatore-programmatore e il trasferimento da un lavoro all’altro senza il suo intervento tramite sequenzializzatori automatici. Negli anni ’50 grazie all’avvento di linguaggi più evoluti (come ad esempio il Fortran) si comincia a parlare di elaborazione BATCH, al sistema operativo viene cioè fornito un unico lotto di istruzioni per l’esecuzione di più lavori che vengono eseguiti singolarmente in sequenza. Grazie a questa innovazione aumentò la velocità produttiva dei computer. Negli anni successivi si svilupparono sistemi operativi di nuova concezione i quali permisero l’utilizzo del computer durante l’elaborazione (INTERATTIVITA’) e la divisione del tempo d’uso delle risorse da parte di più utenti (TIME SHARING). Si inizia a parlare anche di sistemi REAL TIME in cui cioè i tempi di risposta sono tali da riuscire ad influenzare un processo durante la sua stessa esecuzione. Dagli anni ’70 la diffusione di massa degli elaboratori elettronici richiese la standardizzazione dei sistemi operativi e la loro compatibilità con i prodotti software specifici per ogni attività. Negli ultimi anni i sistemi operativi sono stati progettati per essere in grado di gestire una immensa quantità di dati soprattutto a causa delle innovazioni multimediali riguardanti suoni, immagini, testi…. Il sistema operativo si occupa oggi di tutte le risorse presenti nel computer intervenendo sia a livello del software che dell’hardware, partendo quindi dai programmi passando alla CPU, alla memoria, ai supporti magnetici e per finire alla gestione di tutte le iterazioni tra queste componenti attraverso procedimenti ben definiti che ne permettono l’utilizzo, il controllo, la protezione, l’espansione…. I sistemi operativi di ultima generazione più diffusi sono: DOS/WINDOWS OS/2 UNIX LYNUX OSI Ms-Dos Il sistema operativo Ms-Dos progettato inizialmente dalla Microsoft venne adottato quasi subito come standard per i personal computer. E' un sistema monoutente che si compone di due insiemi di istruzioni: i comandi interni sempre residenti in memoria dopo il caricamento automatico che segue l'accensione ed i comandi esterni che vengono caricati a richiesta dell'utente tramite un comando. E' possibile lavorare anche in modo batch tramite un file in cui vengono inserite una serie di comandi che verranno eseguiti solo con il caricamento del file. Il sistema operativo si compone di tre moduli principali: modulo DOS (Disk Operating System): si occupa della gestione dei dischi e fornisce all'utente una interfaccia logica per la gestione logica dei file disco; modulo BIOS (Basic Input Output System): provvede alla gestione dell' input/output; modulo Command: serve per l'interpretazione e l'esecuzione dei comandi, rappresenta quindi l'interfaccia tra l'utente ed il sistema operativo. Nelle ultime versioni (dalla 5.0 in poi) DOS ha risposto alla richiesta dei produttori software di poter gestire più memoria senza troppi artifici e senza sacrificare memoria convenzionale, ha permesso di eseguire un nuovo programma dopo avere "congelato" gli altri in corso di escuzione permettendo (funzione multitasking) di recuperare i file cancellati. Il sistema operativo DOS non è però in grado di fornire una reale funzione di multitask cioè l'esecuzione contemporanea di più programmi e una interfaccia grafica di più immediato accesso, funzioni raggiunte solo dalle versioni più recenti di Windows che si può considerare l'evoluzione del DOS. Microsoft Windows Diffusissima famiglia di sistemi operativi grafici sviluppati nel corso degli anni dalla Microsoft, basati su un "piano di lavoro" (desktop) organizzato in finestre (windows) all'interno delle quali aprire programmi e conservare oggetti e documenti. Al momento, circa l'80% dei personal computer adotta un sistema operativo Microsoft Windows. Fra le principali versioni di Windows, ricordiamo l'ormai superato Windows 3.1 (con la variante Windows for Workgroups, capace di gestire la multiutenza), e i più recenti Windows 95 e 98. Windows è fortemente integrato con Internet, anche attraverso la trasformazione dei programmi di navigazione in componenti del sistema operativo. La versione professionale di Windows, inizialmente battezzata Windows NT, è giunta alla quinta versione, denominata Windows 2000, che permette di creare reti di computer che sfruttano i protocolli e gli strumenti di comunicazione di Internet. Questo gli permette di gestire la multiutenza in maniera assai sofisticata, dividendo gli utenti in categorie a seconda delle quali possono o meno accedere alle risorse del sistema. Di Windows esiste anche una versione ridotta, adatta a computer palmari o dispositivi portatili (autoradio, cellulari), denominata Windows CE. MAC OS II sistema operativo adottato dai computer Macintosh è stato il primo esempio di sistema operativo grafico a conoscere una larga diffusione a livello di personal computer, ben prima che la Microsoft distribuisse le prime versioni di Windows. Le soluzioni tecniche adottate dal MAC OS sono state sempre all'avanguardia, soprattutto nel campo della facilità d'uso della interfaccia utente, e sono state premiate da una larga diffusione dei Macintosh nei settori "di punta" come quello della grafica professionale. Tuttavia il gap di diffusione fra il numero di computer Macintosh e quello, ben maggiore, dei computer IBM compatibili basati su versioni del sistema operativo Windows è andato crescendo negli ultimi anni. OS/2 Sistema operativo grafico sviluppato a partire dalla fine degli anni '80 dall'IBM, all'inizio in collaborazione, ma ben presto in concorrenza con i sistemi Microsoft Windows. Nonostante le sue avanzate caratteristiche tecnologiche, il predominio di fatto della Microsoft nel settore del software ha fatto sì che la maggior parte degli utenti OS/2 finisse comunque per utilizzarlo come una sorta di "emulatore" di Windows, usando gli stessi programmi normalmente utilizzati con il sistema operativo della Microsoft. Come è facile capire, questa situazione ha finito per relegare in secondo piano i punti di forza specifici di OS/2 e, in ultima analisi, per indurre la maggior parte dei suoi utenti a tornare direttamente ai sistemi operativi della famiglia Windows. OSI Sin dalla comparsa sul mercato dei primi personal computer, si é sentita la necessità di poter trasferire dati liberamente, senza dover necessariamente ricorrere agli ingombranti e delicatissimi floppy disk. Le prime reti di PC, venivano costruite in un modo per così dire "casereccio", in quanto mancavano precisi standard di riferimento. Le reti potevano funzionare benissimo, ma il problema era quello di interfacciarsi con l'esterno: era infatti impensabile tentare di far comunicare tra loro due reti distinte, a causa delle enormi differenze tra i vari tipi di implementazioni. Proprio su questo problema decise di intervenire la ISO (International Standard Organization), che nel 1979 pubblicò il cosiddetto OSI Model (Open System Interconnection Model), il primo schema di riferimento per progettatori ed implementatori di reti. Il modello di riferimento OSI é costituito dai seguenti sette strati distinti: 7) Strato dell'applicazione 6) Strato della presentazione 5) Strato della sessione 4) Strato del trasporto 3) Strato della rete 2) Strato del collegamento dati 1) Strato fisico Esso descrive il modo in cui le informazioni si fanno strada da un'applicazione su di un sistema host ad un'applicazione su di un altro sistema host. Mentre le informazioni discendono attraverso gli strati della rete sull'host mittente, cambiano il proprio formato in ciascuno strato. I dati che provengono dagli strati superiori sono incapsulati in informazioni di intestazione dallo strato immediatamente inferiore Questo diagramma mostra che, come i dati discendono attraverso l'host a sinistra, la combinazione tra l'intestazione dello stato precedente ed i dati é incapsulata nell'intestazione dello strato successivo; per esempio i dati originali di un messaggio e-mail sono incapsulati in un'intestazione del segmento. Questa assicura che gli host coinvolti nel messaggio siano in grado di comunicare in modo attendibile l'uno con l'altro. Al livello della rete, i dati (che ora comprendono l'intestazione del segmento ed i dati originali ricevuti dagli strati superiori) si sistemano in un pacchetto che contiene un'intestazione di rete. Questa intestazione di rete comprende gli indirizzi logici dell'origine e della destinazione. In una rete interconnessa TCP/IP, sono gli indirizzi IP degli host mittente e destinatario ed aiutano nell'instradamento dei pacchetti tra i due host attraverso la rete. Allo strato del collegamento dati, l'intestazione della rete e i suoi dati sono incapsulati in un'intestazione della cornice, che definisce il modo in cui le informazioni saranno trasportate attraverso l'interfaccia della rete sulla rete fisica. Ciascun dispositivo sulla rete richiede l'inclusione in una cornice per connettersi con il dispositivo successivo della rete. L'intestazione della cornice include anche gli indirizzi fisici degli host mittente e destinatario. Infine, allo strato fisico, l'intestazione della cornice ed i suoi dati si convertono in un formato che consente la trasmissione delle informazioni su di un mezzo come i cavi di rete. Quando i dati arrivano all'host destinatario, i bit sono nuovamente convertiti in un'intestazione della cornice con i suoi dati. Quando le informazioni si spostano verso l'alto attraverso gli strati della rete, ciascuna intestazione serve a determinare in che modo spostare i dati verso gli strati superiori. A ciascuno strato si staccano le informazioni di intestazione dello strato precedente, in modo tale che i dati abbiano di nuovo lo stesso formato che avevano al momento della trasmissione dallo strato corrispondente dell'host mittente. Ora che si sono ripassate le caratteristiche basilari del modello di riferimento OSI, nei paragrafi che seguono esamineremo brevemente ciascuno degli strati del modello. Ciascuno strato deve compiere una funzione predeterminata. Mentre i dati discendono attraverso gli strati, l’intestazione ed i dati provenienti dal livello superiore diventano la sezione dei dati del livello immediatamente inferiore. I dati non possono saltare uno strato, mentre scendono attraverso il modello OSI. Questo semplifica il processo della trasmissione e consente lo sviluppo di nuovi protocolli, poiché questi devono semplicemente interagire con gli strati sopra e sotto a quello in cui sono implementati. Lo strato fisico Lo strato fisico definisce le correnti elettriche, gli impulsi fisici o gli impulsi ottici che sono coinvolti nel trasporto dei dati dalla NIC (Network Interface Card, la scheda di rete) di un host al sistema di comunicazione. I requisiti e le caratteristiche necessarie per la trasmissione sono in genere documentate in standard come V.35 o RS-232 (porta seriale). Lo strato fisico é responsabile per la trasmissione fisica dei bit da un computer all'altro. Lo strato del collegamento dati Lo strato del collegamento dati invia le cornici dati dallo strato della rete allo strato fisico. Quando lo strato del collegamento dati riceve i bit dallo strato fisico, li traduce in cornici dati. Una cornice dati in genere comprende le seguenti componenti: • ID destinatario: questo ID, di solito, é l'indirizzo MAC dell'host di destinazione o del gateway predefinito • ID mittente: questo ID, di solito, é l'indirizzo MAC dell'host sorgente • Informazioni di controllo: includono informazioni quali l'effettivo tipo di cornice e notizie sull'instradamento e la segmentazione • Controllo ciclico di ridondanza (CRC, Cyclic Redundancy Check): effettua la correzione degli errori e verifica che la cornice dati sia arrivata intatta all'host destinatario di riferimento Lo strato del collegamento dati é suddiviso a sua volta in due sottostrati, chiamati rispettivamente sottostrato del controllo del collegamento logico (Logical Link Control, LLC) e sottostrato del controllo dell'accesso ai supporti di trasmissione (Media Access Control, MAC). Il sottostrato LLC si occupa del controllo degli errori e lavora soprattutto con lo strato della rete per supportare servizi senza connessione od orientati alla connessione. Il sottostrato MAC fornisce l'accesso al supporto di trasmissione effettivo della LAN. Lavora soprattutto con lo strato fisico. Lo strato della rete Lo strato della rete determina il modo migliore per spostare i dati da un host all'altro. Gestisce l'indirizzamento dei messaggi e la traduzione degli indirizzi logici (come per esempio gli indirizzi IP) in indirizzi fisici (indirizzi MAC). Lo strato della rete determina anche la strada che i dati percorrono tra l'host mittente e quello destinatario. Se i pacchetti in corso di trasmissione sono troppo grandi per la topologia dell'host destinatario, lo strato della rete compensa, suddividendo i dati in pacchetti più piccoli, che saranno poi riassemblati una volta giunti a destinazione. Lo strato del trasporto Lo strato del trasporto segmenta e riassembla i dati in un flusso di dati. Provvede ad una connessione da un capo all’altro tra l’host mittente e quello destinatario. Quando si verifica una trasmissione di dati dall’uno all’altro, tali dati sono segmentati in insiemi di informazioni più piccoli. I segmenti ricevono una numerazione sequenziale e sono inviati all’host destinatario. Quando questo riceve i segmenti, invia una conferma. Nel caso che un segmento non arrivi, l’host destinatario può richiede un secondo invio del segmento specifico. In questo modo sussiste un controllo degli errori per il trasporto dei dati. Standardizzazione del protocollo Riprendiamo l'esempio del paragrafo precedente. Cosa sarebbe successo se gli impiegati della ditta destinataria, si fossero trovati di fronte ad una lettera scritta in giapponese? Si sarebbero trovati quantomeno spiazzati ed assolutamente non in grado né di capire, né tantomeno di rispondere al messaggio. Tutto ciò immaginando che il postino conoscesse il giapponese e riuscisse a portare la lettera alla giusta destinazione. Fortunatamente, la comunicazione é andata a buon fine, in quanto entrambe le ditte utilizzavano il medesimo protocollo ed analoghe interfacce di comunicazione, come appunto la stessa lingua. Ne nasce una considerazione importante: la base di ogni protocollo é il concetto di standardizzazione. Più vasta é l'accettazione dello standard, più forte e diffuso é il protocollo. Non sempre, però, ed é bene ricordarlo, gli standard più diffusi sono per forza i più efficienti. Gli esempi sono numerosi, vedi il sistema operativo Windows contro Unix/Linux, il software di compressione dati Winzip contro Winrar, ecc... In ogni modo i sistemi divenuti standard sono generalmente i più conosciuti e ciò semplifica notevolmente le operazioni di implementazione e di trouble-shooting. Portiamo proprio il caso del TCP/IP, che sarebbe ormai dovuto soffocare sotto il peso dei suoi anni, ma che continua imperterrito a gestire reti di ogni sorta. Lo strato della sessione Lo strato della sessione consente a due applicazioni su host separati di stabilire una connessione per la comunicazione, chiamata sessione. Le sessioni assicurano che i messaggi siano inviati e ricevuti con un alto grado di attendibilità. Lo strato della sessione svolge funzioni di sicurezza, per assicurare che due host siano autorizzati a comunicare attraverso la rete. Lo strato della sessione coordina le richieste di servizio e le risposte che hanno luogo quando le applicazioni comunicano tra gli host. Di seguito, sono elencati alcuni diffusi protocolli ed interfacce che operano allo strato della sessione: • Remote Procedure Call (RPC): una RPC é un meccanismo di indirizzamento che consente di costituire una richiesta su di un client e di eseguirla poi su di un server al livello di sicurezza del client; • Sistemi X-Windows: permettono a terminali intelligenti di comunicare con computer UNIX come se fossero direttamente attaccati. Lo strato della presentazione Lo strato della presentazione determina il modo in cui i dati sono formattati nello scambio tra computer in una rete. I dati ricevuti dallo strato dell'applicazione sono tradotti in un formato intermediario comunemente riconosciuto. Lo strato della presentazione è anche responsabile per tutte le traduzioni e le codifiche dei dati e per le conversioni dei set di caratteri e dei protocolli. E' inoltre responsabile per le conversioni della sintassi tra due host in comunicazione, per esempio nel caso che uno degli host usi lo standard ASCII per le sue rappresentazioni di testo e dati, mentre l'altro host si serva di EBCDIC. Elencati di seguito si trovano alcuni usuali formati di presentazione gestiti dallo strato della presentazione: • ASCII: l’American Standard Code for Information Interchange è un set di caratteri a 8 bit usato per definire tutti i caratteri alfanumerici. E’ l’implementazione più comune per le trasmissioni di testi sul computer; • EBCDIC: l’Extenden Binary Coded Decimal Interchange Code è un metodo di rappresentazione dei testi usato ampiamente sui mainframe e sui mini computer IBM; • XDR (External data representation): si servono di XDR applicazioni come NFS e NIS per fornire un formato universale per la trasmissione di testi tra due host. Facilita le trasmissioni tra due host che si servono di differenti rappresentazioni dei testi (come per esempio i sopra citati EBCDIC e ASCII); • File binari: molti file audio, grafici ed eseguibili sono convertiti in un formato binario al livello della presentazione. Quando i dati giungono all’host destinatario, l’estensione dei file mette in relazione il formato di presentazione con un’applicazione associata. Lo strato dell’applicazione Lo strato dell’applicazione consente ai programmi di accedere ai servizi di rete. Non ha a che fare con i programmi che necessitano solo di risorse locali. Per usare lo strato dell’applicazione, un programma deve avere una componente della comunicazione che richiede risorse di rete. Di seguito, si trova un elenco di tipi di programmi attualmente in uso che coinvolgono lo strato dell’applicazione: • Posta elettronica: lo strato dell’applicazione fornisce servizi di comunicazione in rete. Le implementazioni comuni comprendono prodotti come Microsoft Exchange Server, Microsoft Outlook, Eudora Express, Netscape Messenger o Lotus Notes; • Electronic Data Interchange (EDI): lo strato dell’applicazione consente un flusso di dati gestionali più efficiente per le ordinazioni e le spedizioni di merci, gli inventari e la contabilità tra aziende associate; • Applicazioni per le teleconferenze: lo strato dell’applicazione consente agli utenti che si trovano in luoghi remoti di utilizzare applicazioni per riunirsi, come per esempio video, dati vocali e scambio di fax. Un programma molto diffuso che si serve di questa tecnologia è Microsoft Net Meeting; • World Wide Web (WWW): attraverso i browser, gli utenti possono vedere informazioni provenienti da località remote della rete, in formati quali testo, grafica, audio e video. Tra i più comuni server web, al momento attuale, si contano Apache Web Server, Netscape Suite-Spot e Microsoft Internet Information Server.