Sistemi operativi/Funzionalità dei sistemi operativi: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
 
Nessun oggetto della modifica
Riga 1:
== Definizione di sistema operativo ==
 
In informatica, il termine "sistema operativo" è usato con diverse sfumature di significato.
 
Un significato molto usato è quello di software fornito in un unico pacchetto a tutti gli utenti di un modello di elaboratore.
Per esempio, nei primi sistemi operativi per microcomputer, il sistema operativo comprendeva un interprete BASIC, e in quasi tutti i sistemi operativi Posix, cioè quelli derivati da Unix, il sistema operativo comprende un compilatore C;
Secondo tale accezione, il sistema operativo comprenderebbe programmi di videoscrittura, interpreti o compilatori di linguaggi di programmazione, visualizzatori di immagini, programmi client di posta elettronica, e molto altro.
tuttavia in questo libro non si vuol parlare né di interpreti né di compilatori.
 
Tale significato allargato è dovuto al fatto che comunemente per "sistema operativo" si intende tutto il software di base, fornito in un unico pacchetto.
Questa definizione è commercialmente valida, ma priva di utilità teorica, in quanto la tipologia di programmi di utilità forniti insieme al software di base è praticamente sconfinata.
Al limite, tutto il software impacchettato potrebbe essere considerato far parte deldi un sistema operativo.
 
In questo libro si usa un concetto molto più restrittivo.
Per sistema operativo si intende un '''sistema software che permette la condivisione di risorse informatiche da parte di sistemi software sviluppati indipendentemente'''.
 
Riga 18:
Ovviamente, dobbiamo scrivere il software appropriato, e partire da zero significa affrontare un lavoro ciclopico, ma non è un compito insormontabile per una grande azienda.
 
Per semplificare il lavoro, si possono usare dei moduli software già scritti da altri, cioè librerie e driver di dispositivi.
Sebbene esistano librerie fornite con i sistemi operativi, e sebbene la maggior parte dei driver di dispositivi attualmente esistenti sono utilizzabili solo se integrati in un sistema operativo, esistono anche librerie e driver di dispositivi che non si appoggiano su sistemi operativi.
Pertanto, per tale finalità non è strettamente necessario usare un sistema operativo.
 
La vera ragion d'essere del sistema operativo si ha quando in uno stesso sistema informatico si vogliono far coesistere sistemi software sviluppati da organizzazioni distinte, e quindi il cui sviluppo non è stato coordinato.
Line 29 ⟶ 30:
Anche se uso un personal computer esclusivamente per disegnare e stampare schemi eletrici, usando un programma di CAD elettrico memorizzato in una memoria non volatile, potrei fare a meno del sistema operativo, purché il personal computer sia impostato in modo da avviare automaticamente il programma di CAD all'accensione.
 
Ma se voglio utilizzare un personal computer non dedicato né esclusivamente alla videoscrittura né esclusivamente al CAD, bensì che mi permetta di svolgere alternativamente entrambe le attività ed eventualmente delle altre, devo poter installare nella memoria non volatile iltutti programmai programmi che mi interessainteressano, e devo poter scegliere all'avvio del sistema se voglio attivare la funzione di videoscrittura, la funzione di CAD, o qualche altra funzione.
 
L'installazione di software arbitrari e il loro lancio su scelta dell'utente sono funzioni che prescindono dai software applicativi stessi e quindi fanno necessariamente parte del sistema operativo.
 
Un sistema operativo il cui compito è l'esecuzione in successione di diversi programmi applicativi su un elaboratore è necessario ma molto semplice.
La grande complessità dei sistemi operativi oggi esistenti emerge dalla necessità di far coesistere più software applicativi in esecuzione contemporanea, se non addirittura in comunicazione.
Tale comunicazione può avvenire tra programmi in esecuzione sullo stesso elaboratore, oppure tra programmi in esecuzione in diversi elaboratori distinti collegati in rete.
 
Vediamo un altro ambito di applicazione dei sistemi operativi.
 
Per una data famiglia di elaboratori, esistono decine di aziende che producono circuiti elettronici di gestione dello schermo in modalità grafica, i cosiddetti ''adattatori grafici'', mutuamente incompatibili, cioè che devono essere utilizzati con differenti istruzioni.
 
Per la stessa famiglia di elaboratori, esistono centinaia di aziende che producono applicazioni grafiche, le quali contengono apposite istruzioni di visualizzazione grafica.
 
Per fare in modo che una data applicazioni funzioni correttamente con un dato adattatore grafico, in assenza di un sistema operativo, l'applicazione dovrebbe contenere la corretta sequenza di istruzioni specifica di quell'adattatore grafico.
 
Per fare in modo che tutte le applicazioni funzionino con tutti gli adattatori grafici è necessario che:
* O ogni azienda che costruisce applicazioni grafiche inserisca nel proprio codice le sequenze di istruzioni per ogni adattatore grafico esistente o prevedibile.
* O ogni azienda che costruisce adattatori grafici fornisca agli acquirenti del proprio circuito la sequenza di istruzioni appropriata per ogni applicazione grafica esistente o prevedibile.
 
Ovviamente, entrambe le soluzioni sono poco soddisfacenti, anche perché non si può prevedere quali saranno le applicazioni grafiche e gli adattatori grafici che verranno prodotti in futuro.
 
La soluzione sta nel fornire uno standard di comunicazione tra le applicazioni e gli adattatori grafici.
In effetti esistono standard di questo tipo (per esempio, EGA, VGA, VESA), ma tali standard, per la loro semplicità e generalità non consentono prestazioni elevate.
Per esempio, un adattatore grafico potrebbe avere incorporato un circuito in grado di disegnare una linea, mentre lo standard consente solo di accendere singoli pixel.
 
La presenza di un sistema operativo che funge da intermediario tra le applicazioni e le risorse hardware permette alle applicazioni di rendersi indipendenti dall'hardware effettivamente installato, funzionando correttamente su qualunque piattaforma e sfruttando al meglio le risorse avanzate eventualmente presenti.