In informatica , un sistema operativo (spesso chiamato OS -English Operating System ) è un insieme di programmi che dirige l'uso delle risorse di un computer con un software applicativo .
Riceve richieste per l'utilizzo delle risorse del computer - risorse di archiviazione della memoria (ad esempio accesso a RAM , dischi rigidi ), risorse di elaborazione del processore centrale , risorse di comunicazione alle periferiche (per a volte richiedere risorse di elaborazione dalla GPU ad esempio o qualsiasi altra scheda di espansione ) o tramite la rete - dal software applicativo. Il sistema operativo gestisce le richieste e le risorse necessarie evitando interferenze tra il software.
Il sistema operativo è il software principale di un computer perché consente l'esecuzione dei programmi dopo che il caricatore di avvio ha configurato tutte le periferiche all'avvio del computer.
Offre una suite di servizi generali che facilitano la creazione di software applicativo e funge da intermediario tra questo software e l' hardware del computer . Un sistema operativo offre praticità, efficienza e scalabilità, consentendo l'introduzione di nuove funzioni e nuovo hardware senza compromettere il software.
Ci sono dozzine di diversi sistemi operativi sul mercato, molti dei quali sono inclusi con il dispositivo informatico. È il caso di Windows , Mac OS , Irix , Symbian OS , Unix ( Berkeley , System V ...), GNU/Linux , (per il quale esistono molte distribuzioni ) o Android . Le funzionalità offerte variano da sistema a sistema e sono in genere relative all'esecuzione di programmi, all'utilizzo della memoria principale o delle periferiche , alla manipolazione dei file system , alla comunicazione o al rilevamento e monitoraggio della gestione degli errori. Tuttavia, la modellazione dello schema CIM assegna a questo concetto una classe base CIM_OperatingSystem , possibilmente derivata su Windows, Linux o z/OS .
Nel 2012, le due famiglie di sistemi operativi più popolari sono Unix (inclusi macOS , GNU/Linux , iOS e Android ) e Windows . Quest'ultima detiene un monopolio virtuale sui personal computer con quasi il 90% del mercato da circa quindici anni. Quindi, a partire dal 2015, Windows ha perso terreno rispetto al sistema operativo Apple , iOS e macOS, nonché ad Android e Linux. Alla fine del 2020, grazie alla forte implementazione di Windows 10 , la sua quota si aggirava intorno al 70%.
Il sistema operativo offre una suite di servizi generali che facilitano la creazione e l'utilizzo del software applicativo . I servizi offerti riguardano l'utilizzo delle risorse informatiche da parte dei programmi . Sono utilizzati in particolare per eseguire programmi, leggere e scrivere informazioni, manipolare file , comunicare tra computer e rilevare errori. Questi servizi consentono a più utenti ea diversi programmi di condividere le risorse del computer. Il ruolo principale del sistema operativo è quindi quello di cancellare le differenze tra le diverse architetture IT , e di organizzare l'uso delle risorse in modo razionale:
Ogni dispositivo ha le sue istruzioni , con le quali può essere manipolato. Il sistema operativo ne tiene conto. Consente al programmatore di manipolare il dispositivo con semplici richieste di lettura o scrittura, evitando la perdita di tempo nel tradurre le operazioni in istruzioni specifiche del dispositivo.
Oltre alle istruzioni specifiche del dispositivo ( unità floppy , disco rigido , unità CD-ROM , unità USB , lettore di schede di memoria ...), il sistema operativo tiene conto delle dimensioni caratteristiche di ciascun supporto utilizzato per l'archiviazione dei file. Offre anche meccanismi di protezione per controllare quale utente può manipolare quale file.
Una delle funzioni del sistema operativo è quella di proteggere le risorse dall'utilizzo da parte di persone non autorizzate e di risolvere i conflitti quando due utenti richiedono contemporaneamente la stessa risorsa.
Quando si verifica un errore, hardware o software, il sistema operativo tratta l'errore attenuandone l'impatto sul sistema informatico. Può tentare di ripetere l'operazione, interrompere l'esecuzione del programma offensivo o segnalare il problema all'utente.
Un sistema operativo può conservare statistiche sull'utilizzo delle risorse, monitorare le prestazioni e i tempi di risposta.
La gamma di servizi offerti e il modo di utilizzarli differisce da un sistema operativo all'altro. Lo standard industriale POSIX l' IEEE definisce una sequenza di chiamate di sistema standard. Il software applicativo che effettua chiamate di sistema secondo POSIX può essere utilizzato su tutti i sistemi operativi conformi a questo standard.
Il sistema operativo garantisce la prenotazione delle varie risorse per le esigenze dei programmi eseguiti contemporaneamente. Le prenotazioni possono essere inserite nei registri delle attività per scopi statistici o di risoluzione dei problemi e il sistema operativo può negare una prenotazione a un utente che non ha ricevuto l'autorizzazione preventiva.
L'hardware del computer può eseguire istruzioni, queste raramente sono più di copie o aggiunte. La traduzione di operazioni complesse in istruzioni è un compito noioso per il sistema operativo. Il sistema operativo si occupa di tutta la gestione dell'hardware, quindi il software applicativo non può vedere la differenza tra una macchina semplice e rudimentale e una macchina ricca e complessa: gli stessi servizi sono offerti in entrambi i casi.
Il sistema operativo facilita il lavoro di programmazione fornendo una suite di servizi che possono essere utilizzati dal software applicativo. Dal punto di vista del programmatore , il suo software applicativo è orientato al sistema operativo e all'hardware, ei programmi sono considerati eseguiti sul sistema operativo. Un sistema operativo può quindi essere visto come una macchina virtuale . L'insieme costituito dall'hardware e dal sistema operativo costituisce la "macchina" che esegue il software applicativo, una macchina in parte simulata dal software.
Un sistema operativo è costituito da una vasta gamma di programmi. L'esatta composizione dipende dalla destinazione d'uso e dal tipo di dispositivo informatico a cui è destinato il sistema ( personal computer , server , supercomputer o anche sistema di bordo ).
Utenti e programmatori possono richiedere servizi dal sistema operativo tramite la sua interfaccia di programmazione , i comandi o l' interfaccia grafica .
Interfaccia di programmazioneLe chiamate di sistema consentono interazioni tra un programma in esecuzione e il sistema operativo. L'utilizzo delle chiamate di sistema è simile all'utilizzo di normali funzioni o subroutine in C o Pascal .
OrdiniI comandi consentono a un utente oa un programma di richiedere un'operazione dal sistema operativo. Un comando è un programma che effettua una chiamata di sistema in base alla richiesta dell'utente.
Interfaccia graficaL' interfaccia grafica consente una gestione intuitiva tramite pittogrammi . Questa interfaccia, che non è una parte essenziale del sistema operativo, e che ne nasconde tutti i dettagli intrinseci, è spesso vista come un add-on.
POSIX (acronimo di Portable Operating System Interface ) è uno standard relativo all'interfaccia di programmazione del sistema operativo. Molti sistemi operativi sono conformi a questo standard, inclusi i membri della famiglia Unix .
Durante il multitasking, il sistema operativo consente a più utenti di utilizzare il computer e dà a ciascun utente l'impressione di essere l'unico a utilizzare il computer. Per fare ciò, è previsto l'utilizzo del processore: ogni programma viene eseguito durante un determinato intervallo di tempo, quindi il sistema operativo passa all'esecuzione di un altro programma.
ProcessiUn processo è un insieme di istruzioni che vengono eseguite. Le istruzioni provengono da un programma e l'esecuzione richiede tempo, memoria, file e periferiche. Il sistema operativo si occupa della creazione, dell'interruzione e dell'eliminazione dei processi. Diversi processi sono contemporaneamente nella memoria principale.
Responsabilità del sistema operativo e della prenotazione della memoria, pianificazione dell'esecuzione, gestione dei deadlock e garanzia delle comunicazioni tra i processi. Lo scheduler associa un processo a un processore, quindi lo dissocia dal processore per associare un altro processo. Questa operazione di associazione/scollegamento è denominata cambio di contesto . Durante la pianificazione, il sistema operativo tiene conto della disponibilità o meno delle risorse utilizzate dal processo. Alcuni sistemi operativi creano processi per eseguire determinate attività specifiche del sistema.
Quando il programma è in esecuzione, potrebbe chiedere di riservare le risorse del computer. L'esecuzione di questo programma può essere interrotta e il sistema operativo continua ad eseguire un altro programma, tuttavia le risorse rimangono riservate. Quando un altro processo richiede una risorsa già riservata, il processo viene messo in attesa. In una situazione di forte concorrenza, più processi possono essere in attesa della stessa risorsa. Quando la risorsa viene rilasciata, il sistema operativo decide qual è il prossimo processo a cui verrà riservata la risorsa. La strategia di allocazione delle risorse da parte del sistema operativo mira a rispondere in modo equo a tutte le richieste ed evitare conflitti.
In alcuni software applicativi, diversi programmi eseguono la stessa attività contemporaneamente e si scambiano informazioni. Il meccanismo di protezione della memoria (vedi oltre) impedisce ai programmi di manipolare le stesse informazioni e i programmi devono chiamare i servizi del sistema operativo.
Il sistema operativo dirige l'utilizzo della memoria. Conserva l'elenco delle locazioni di memoria utilizzate e da chi, nonché l'elenco delle locazioni libere. Il sistema operativo riserva una posizione di memoria quando un processo lo richiede e la libera quando non è più in uso, ad esempio quando il processo si è fermato.
Le funzioni di controllo dell'utilizzo della memoria monitoreranno in particolare l'utilizzo della memoria, quali posizioni sono libere, vengono utilizzate e da chi. Queste funzioni decidono anche quale programma riceve la memoria, quando e quanta viene resa disponibile e recuperano la memoria che è stata utilizzata da un programma dopo la sua esecuzione, se il programma è stato interrotto intenzionalmente o accidentalmente.
La quantità di memoria utilizzata dall'intero sistema informatico dipende principalmente da come il sistema operativo effettua le prenotazioni.
Nei sistemi operativi contemporanei, più programmi vengono eseguiti contemporaneamente e utilizzano contemporaneamente la memoria principale. Se un processo cambia, accidentalmente o intenzionalmente, una posizione di memoria utilizzata da un altro processo, mette quel processo a rischio. Se modifica una posizione utilizzata dal sistema operativo, mette in pericolo l'intero sistema informatico.
Per evitare un tale problema, il sistema operativo riserva uno spazio di indirizzi per ogni programma , una posizione in memoria che solo il programma in questione può gestire. Il sistema operativo rileva qualsiasi tentativo di accesso al di fuori dello spazio degli indirizzi e provoca l'arresto immediato del programma che tenta di eseguire tali operazioni, tramite un errore di protezione generale.
Memoria virtualeIl cosiddetto meccanismo di memoria virtuale ha lo scopo di simulare la presenza o l'assenza della memoria principale mediante la manipolazione dell'unità di gestione della memoria - un componente elettronico (in inglese Memory Management Unit abbreviato MMU ). È un meccanismo comune nei sistemi operativi contemporanei.
La memoria virtuale consente l'esecuzione simultanea di più programmi di quanti ne possa contenere la memoria principale. Poiché ogni programma non ha bisogno di tutte le informazioni che gestisce per essere presenti nella memoria principale, alcune delle informazioni vengono archiviate nella memoria di massa (generalmente in un file o in una partizione del disco rigido ) che di solito è più grande ma più lenta e vengono trasferite alla memoria principale quando il programma ne ha bisogno.
I programmi hanno uno (o più) spazi di memoria virtuale continui con cui lavorare. Gli indirizzi dei dati si dicono virtuali in quanto l'informazione indirizzata non si trova necessariamente né nella memoria principale né all'indirizzo indicato. Quando il programma tenta di leggere o scrivere dati nella sua memoria virtuale, l'unità di gestione della memoria ricerca l'indirizzo fisico corrispondente all'indirizzo virtuale richiesto tramite una tabella di corrispondenza. Se la locazione non è presente nella memoria principale (questo si chiama page fault ), non ci sarà ovviamente nessun indirizzo fisico corrispondente. Il sistema operativo dovrà quindi cercare di liberare uno spazio nella memoria principale scambiando (inglese swap ) il contenuto di una data locazione di memoria centrale con il contenuto richiesto, che è nella memoria di massa. Questo viene fatto automaticamente, all'insaputa dei programmi.
Le memorie associative , incorporate nell'unità di gestione della memoria, velocizzano il calcolo degli indirizzi. I sistemi operativi in genere utilizzano due memorie associative: una per la modalità kernel e una per la modalità utente . La memoria in modalità kernel è organizzata in modo tale che il processore possa utilizzare tutta la memoria principale disponibile, durante l'esecuzione dei programmi kernel del sistema operativo . Mentre la modalità utente è predisposta per proteggere il kernel (che è quindi invisibile al programma in questione) - durante l'esecuzione di programmi al di fuori del kernel. Questa si chiama protezione e questi meccanismi sono le caratteristiche principali della modalità protetta .
Ogni programma ha una propria tabella di corrispondenza, che consente di isolarli l'uno dall'altro. Durante un cambio di contesto, il sistema operativo collocherà la tabella del programma corrente nella memoria associativa. Il sistema operativo crea anche nuove tabelle per i programmi che si avviano e decide quali locazioni di memoria virtuale saranno o non saranno presenti nella memoria principale.
Le periferiche sono tutti i dispositivi informatici che consentono al processore di comunicare con l'esterno: tastiera, stampante, scheda di rete, memoria, disco rigido. Consentono in particolare di ricevere informazioni, inviarle, nonché archiviare informazioni - raccoglierle con l'obiettivo di restituirle in seguito.
Una delle responsabilità del sistema operativo è monitorare lo stato di utilizzo - libero o riservato - di tutto l'hardware nel sistema informatico. Quando un processo richiede materiale gratuito, viene riservato a tale processo. Per utilizzare un dispositivo, il sistema operativo utilizza un controller e un driver di dispositivo.
ControlloreUn controller è un componente elettronico, che dispone di una memoria tampone, e gestisce un certo tipo di periferica (disco rigido, stampante, memoria, lettore di nastri magnetici, ecc.). Il controller è spesso integrato nel dispositivo. I diversi controller disponibili sul mercato non sono tutti utilizzati allo stesso modo.
Autista ( autista inglese )Le istruzioni per la gestione di una determinata gamma di controller sono incluse in un driver del computer : un software che sfrutta le possibilità offerte dai controller. I driver del computer fanno parte del sistema operativo e forniscono servizi uniformi utilizzati da altri programmi del sistema operativo.
Esistono due strategie per manipolare i controller:
Alcuni dispositivi non possono essere condivisi e il loro utilizzo è quindi dedicato a un programma alla volta. Alcuni dispositivi possono essere virtuali o il loro utilizzo può essere indiretto. Ad esempio, l'uso di una stampante non comporta la stampa immediata perché le informazioni vengono prima messe in attesa. Questa tecnica di spooling consente l'uso condiviso di un dispositivo che altrimenti non potrebbe essere condiviso.
Un file è una raccolta di informazioni denominate memorizzate su supporti quali un disco rigido, un nastro magnetico o un disco ottico. Ogni mezzo ha le sue caratteristiche e la sua organizzazione.
Il sistema operativo si occupa di creare e distruggere file e directory, riservare spazio sui media e copiare i contenuti dei file da e verso la memoria principale. Aiuta anche il software applicativo a trovare file, condividere file tra più utenti, modificare il contenuto dei file e creare directory (consentendo la classificazione e l'organizzazione dei file). La velocità del sistema informatico dipenderà dalla velocità di gestione dei file.
Il sistema operativo consente in particolare di manipolare gli attributi: le caratteristiche del file come il nome, la data di creazione, il tipo di contenuto, la dimensione e la posizione. Consente inoltre di manipolare i permessi: permessi che indicano se un utente sarà in grado di leggere, scrivere o eseguire il file.
Il sistema operativo tiene conto del file system: il modo in cui i file sono organizzati e distribuiti su un dispositivo di archiviazione.
Le memorie rimovibili come CD o DVD hanno un layout standardizzato le cui specifiche sono pubbliche, che ne garantisce il riconoscimento da parte di tutti i sistemi operativi (vedi ISO 9660 e UDF così come l'ibrido ISO/UDF ).
Quando il file system è distribuito , ei file sono quindi archiviati su computer diversi su una rete di computer , il sistema operativo invia una richiesta al computer che memorizza il file per ogni operazione da eseguire (vedi NFS o CIFS ).
In un sistema operativo multiutente, i programmi che manipolano il file system eseguono controlli per verificare che nessun file venga manipolato da una persona non autorizzata. Questo tipo di sistema operativo rifiuterà qualsiasi manipolazione non autorizzata.
In una rete di computer, due computer collegati comunicano quando le comunicazioni vengono effettuate su entrambi i lati secondo gli stessi protocolli di rete . Secondo il modello OSI , i diversi protocolli esistenti sono distribuiti su sette livelli, dove un protocollo di un determinato livello può essere combinato con qualsiasi protocollo dei livelli superiore e inferiore (vedi incapsulamento ).
Un sistema operativo in genere contiene diversi programmi necessari per lo scambio di informazioni in diversi protocolli di livello da 1 a 4. Mentre i livelli da 5 a 7 sono supportati da software applicativo e middleware .
Per lo scambio di informazioni secondo i protocolli di livello 1 e 2, il sistema operativo richiede il funzionamento dall'hardware del computer tramite un driver del computer , un driver che può essere parte integrante del sistema operativo o essere fornito dall'apparecchiatura produttore.
Quando si inviano informazioni sulla rete, il software applicativo crea informazioni, le formatta secondo i protocolli di livello da 7 a 5, quindi le trasmette al sistema operativo. Vari programmi del sistema operativo suddivideranno queste informazioni in frame , quindi formatteranno i frame e li invieranno secondo i protocolli di livello da 4 a 1.
Alla ricezione dei frame dalla rete, vari programmi del sistema operativo tenteranno di decodificarli secondo protocolli diversi dal livello 1 al 4, quindi trasformeranno la serie di frame in un flusso continuo, che verrà inviato al software applicativo ricevente. Il software decodificherà quindi il flusso secondo i protocolli di livello da 5 a 7. Il software applicativo effettua prima una connessione , ovvero un collegamento logico attraverso il quale verrà associato a un determinato flusso.
La scelta esatta dei protocolli utilizzati dipende dal computer in questione e dai collegamenti di rete che verranno utilizzati. Vari parametri di configurazione vengono utilizzati per influenzare la scelta dei protocolli. Consentono, ad esempio, di impedire l'uso di protocolli vietati sulla rete interessata.
I sistemi operativi contemporanei consentono a più utenti di utilizzare il computer contemporaneamente. Il sistema operativo include meccanismi per controllare l'uso delle risorse da parte di utenti, processi e programmi. Questi meccanismi consentono di certificare l'identità del programma o dell'utente e autorizzarlo ad accedere a una risorsa in applicazione delle norme di sicurezza.
I meccanismi di sicurezza del sistema operativo servono a proteggere il sistema informatico dall'interno e dall'esterno: i meccanismi di sicurezza interni proteggono i processi l'uno dall'altro e garantiscono l'affidabilità del sistema informatico. I meccanismi di sicurezza esterni proteggono i dati e i programmi archiviati nel computer da accessi non autorizzati e errori di gestione. Il sistema operativo impedisce la lettura da parte di persone non autorizzate, la manomissione, la cancellazione dei dati, nonché l'uso non autorizzato delle periferiche.
Diversi programmi vengono eseguiti contemporaneamente e utilizzano contemporaneamente la memoria principale. Se un processo cambia, accidentalmente o intenzionalmente, una posizione di memoria utilizzata da un altro processo, mette a rischio quel processo. Se modifica una posizione utilizzata dal sistema operativo, mette in pericolo l'intero sistema informatico.
Per evitare un tale problema, il sistema operativo riserva uno spazio di indirizzi per ogni programma , una posizione in memoria che solo il programma in questione può gestire. Il sistema operativo rileva qualsiasi tentativo di accesso al di fuori dello spazio degli indirizzi e provoca l'arresto immediato del programma che tenta di eseguire tali operazioni.
Il sistema operativo rifiuterà inoltre la disattivazione di programmi principali come software server o programmi del sistema operativo da parte di qualsiasi utente che non abbia precedentemente ricevuto il privilegio per eseguire questa operazione, secondo le normative introdotte dall'amministratore della sicurezza.
Quando un software autonomo ( computer bot ) richiede operazioni dal sistema operativo, il software deve prima rivelare la sua identità di prodotto e poi, sulla base di tale identità, il sistema operativo esegue gli stessi controlli di una persona fisica.
I meccanismi di controllo degli accessi hanno anche l'effetto di combattere il malware : il malware spesso esegue operazioni che possono interferire con l'utilizzo del computer.
Un insieme di programmi del sistema operativo riceve le informazioni inviate dal software applicativo e le inserisce su un'immagine digitale che verrà inviata all'hardware tramite un driver. Inoltre, un'altra serie di programmi riceve le operazioni effettuate dall'utente tramite i piloti e le trasmette al software interessato. Questi due set creano l' interfaccia uomo-macchina che consente all'utente di comunicare con la macchina.
Il sistema operativo può comunicare con un utente tramite un altro computer o un terminale (interfaccia distribuita ). Le informazioni inviate dal software applicativo verranno poi inviate all'altro computer secondo un protocollo previsto a tal fine, mentre l'altro computer invierà le operazioni effettuate dall'utente. Vedere SSH , RFB o sistema X Window .
Quando l'interfaccia è in modalità testo , l'immagine digitale è una griglia in cui sono posizionati i caratteri stampati, la griglia ha tipicamente 80 colonne e 35 righe. L'interfaccia è gestita con una tastiera. Questo tipo di interfaccia, che esiste fin dagli inizi dell'elaborazione dei dati, è ora sostituito da interfacce grafiche.
Interfaccia graficaIn un'interfaccia utente grafica (in inglese Graphical User Interface abbreviato GUI ), l'immagine digitale è composta da un programma del sistema operativo mediante sovrapposizione di punti, linee, pittogrammi e stampa. L'interfaccia viene in genere gestita con un mouse secondo il principio WIMP ( Windows, Icone, Menu e dispositivo puntatore in inglese ). L'immagine digitale viene creata utilizzando il processore grafico del computer .
Durante le operazioni del mouse, il sistema operativo sposta l'elemento dell'immagine che è il puntatore ed esegue i calcoli necessari per determinare quale elemento dell'immagine è appena sotto. Ogni elemento dell'immagine può essere associato a un programma. Un widget è un programma che disegna e anima un elemento dell'immagine il cui aspetto può essere quello di un pulsante , una spia luminosa , un ascensore, un'area di testo, un menu, ecc. Vari widget sono forniti con il sistema operativo.
I programmi per GUI sono oggi (2011) inclusi in tutti i sistemi operativi contemporanei. Il sistema X Window è l'insieme dei programmi di interfaccia utente grafica inclusi in tutti i sistemi operativi della famiglia Unix . Per Windows , l'equivalente è il programma Explorer , chiamato anche Windows Explorer (da non confondere con Internet Explorer).
Un'applicazione software utilizzata per assistere l'utente in un'attività. Il software di utilità è un software applicativo che consente all'utente di eseguire operazioni di base come l'avvio di programmi, la copia di file o la modifica delle impostazioni di configurazione . Vari software di utilità sono forniti con i sistemi operativi.
Un interprete di comandi è un programma che permette di eseguire altri programmi scrivendone il nome, eventualmente seguito da vari parametri . È accompagnato da diversi programmi che consentono la manipolazione dei file (copia, rinomina, ecc.). Questo tipo di programma viene utilizzato per eseguire manipolazioni o eseguire script - serie di manipolazioni preregistrate (vedi controllo del computer ). Questo tipo di programma viene spesso fornito con il sistema operativo, ma nulla lo richiede ed è possibile importarlo molto bene.
Un ambiente d'ufficio è un programma in cui i vari elementi del computer (programmi, file, dischi rigidi) sono presentati sotto forma di pittogrammi sui quali è possibile eseguire varie azioni. Consente di eseguire programmi, eseguire varie operazioni sui file (copia, rinomina, sposta o elimina).
Alcuni programmi consentono all'utente di modificare le impostazioni di configurazione del sistema operativo. Questi offrono elenchi a scelta multipla ed eseguono controlli di validità prima di modificare i parametri.
Altri programmi utilizzati per l' installazione del software , ovvero copiano i file nelle posizioni previste a tale scopo, e apportano le modifiche di configurazione necessarie per rendere operativo il software. Questi programmi possono essere utilizzati anche per visualizzare l'elenco dei software attualmente installati sul computer.
Un sistema operativo multiutente è generalmente dotato di programmi per monitorare l'utilizzo - da parte di altri - del computer - per consultare i registri delle attività - o per modificare gli elenchi dei diritti di accesso al fine di "consentire o negare un file a determinati utenti". .
Esistono cinque generazioni di sistemi operativi: batch , multi-scheduled, time-sharing, real-time e distribuito. Ciascuno dei principi attuati in una generazione si trova nelle generazioni successive.
Dalla generazione di sistemi operativi multiprogrammati, vengono eseguiti più programmi contemporaneamente mediante schedulazione . In questi sistemi operativi multitasking, diversi programmi risiedono nella memoria principale e il sistema operativo sospende periodicamente l'esecuzione di un programma per continuare l'esecuzione di un altro.
Ogni sistema operativo è progettato per funzionare con una particolare gamma di macchine (tipo di processore, produttore, architettura). Se un sistema operativo è disponibile per più linee di macchine diverse, viene compilato e adattato lo stesso codice sorgente per ciascuna linea di macchine. La gamma di driver inclusi nel sistema operativo è adattata all'hardware del computer disponibile sul mercato per questa gamma di macchine.
I sistemi operativi basati sull'elaborazione "batch" (sequenze di istruzioni e dati in una serie di schede perforate) sono apparsi negli anni '50. Un programma (con i suoi dati) non è altro che un programma. 'una pila di schede con indicatori di inizio e fine . L'esecuzione di un programma consiste nel chiedere ad un operatore di inserire la pila di tessere nel lettore, quindi l'operatore avvia la lettura sequenziale delle tessere. Il processore centrale è a riposo, durante le manipolazioni dell'operatore.
Un batch è un pacchetto di lavoro da svolgere. L'operatore compone un batch sovrapponendo le pile di schede dei diversi programmi (con i relativi dati) richieste dagli utenti. Forma una grande pila di carte separate da segnalibri, di solito una carta a colori specifici, che poi inserisce nel lettore. Il raggruppamento di più programmi in un batch riduce l'intervento dell'operatore.
In un sistema basato su batch , il cuore del sistema operativo è un programma monitor che risiede continuamente nella memoria principale e consente all'operatore di richiedere l'avvio o l'arresto dell'esecuzione del batch. Quando ogni lavoro nel batch completa l'esecuzione, il monitor esegue i lavori di pulizia e quindi avvia l'esecuzione del lavoro successivo. Pertanto, l'operatore interviene solo all'inizio e alla fine del lotto.
In questi sistemi operativi i comandi aggiunti al segnalibro, formulati nel JCL ( Job Control Language ) sono uno degli unici mezzi che l'utente ha a disposizione per interagire con il sistema operativo.
I sistemi operativi batch sono adatti per applicazioni che richiedono calcoli molto grandi ma poco coinvolgimento dell'utente: meteo, statistiche, tasse... Gli utenti non si aspettano risultati immediatamente. Inviano le richieste, poi tornano più tardi per raccogliere i risultati.
A causa della grande differenza di velocità tra processore e periferiche, in un sistema operativo batch il processore è inattivo il 90% del tempo perché i programmi attendono che un dispositivo o l'altro completino le operazioni. Con questi sistemi operativi non c'è competizione tra i diversi compiti, l'implementazione dell'uso di processore, memoria e periferiche è banale ma tutt'altro che ottimale.
I sistemi operativi multiprogrammati sono comparsi negli anni 60. Lo scopo di tali sistemi è quello di aumentare l'efficienza di utilizzo del processore e delle periferiche sfruttando la possibilità di farli funzionare in parallelo. Diversi programmi vengono inseriti nella memoria principale e quando il programma in esecuzione attende un risultato da un dispositivo, il sistema operativo indica al processore di eseguire un altro programma.
Nei sistemi operativi multiprogrammati, l'utilizzo del processore è condiviso dalla schedulazione : ogni volta che viene utilizzata una periferica, il sistema operativo sceglie quale programma verrà eseguito. Questa scelta è fatta sulla base delle priorità. Il sistema operativo ha un meccanismo di protezione che impedisce al programma in esecuzione di leggere o scrivere nella memoria assegnata a un altro programma. I programmi vengono eseguiti in modalità non privilegiata , nella quale è vietata l'esecuzione di determinate istruzioni.
I sistemi multiprogrammati richiedono un computer e periferiche che implementano la tecnica DMA ( accesso diretto alla memoria ). In base a ciò, il processore ordina a una periferica di eseguire un'operazione, il risultato dell'operazione viene quindi inserito nella memoria principale dalla periferica mentre il processore esegue altre istruzioni. Nei sistemi multiprogrammati, proprio come nei sistemi batch , l'utente ha pochi contatti con i programmi e poche possibilità di intervento.
I sistemi operativi time-sharing sono apparsi negli anni '70 e sono utilizzati in dispositivi interattivi in cui più utenti dialogano contemporaneamente con il computer. Un sistema operativo in multiproprietà ha lo scopo di rispondere rapidamente alle richieste degli utenti e di dare a ciascun utente l'impressione di essere l'unico ad utilizzare il computer.
Un sistema di multiproprietà implementa sofisticate tecniche di multiprogrammazione per consentire l'uso interattivo del computer da parte di più utenti e più programmi contemporaneamente. L'arrivo nel 1970 di questa nuova generazione di sistemi operativi fu il risultato della forte domanda dei consumatori e del crollo del prezzo dell'hardware informatico che ne rese possibile la realizzazione.
Nei sistemi operativi in multiproprietà la nozione di batch è di scarsa importanza. Questi sistemi implementano nuovi meccanismi per l'utilizzo del processore e della memoria, che consentono loro di rispondere rapidamente alle richieste provenienti da un gran numero di utenti contemporaneamente.
In questi sistemi, proprio come nella generazione precedente, l'utilizzo della CPU è pianificato. Tuttavia, a differenza dei sistemi di generazione precedente, nei sistemi di condivisione del tempo ogni programma viene eseguito durante un intervallo di tempo specificato, quindi il sistema operativo passa all'esecuzione di un altro programma, il che impedisce che un programma monopolizzi l'utilizzo della CPU al servizio di un utente, causando ritardi per altri utenti.
I sistemi operativi in multiproprietà implementano la tecnica dello swap : quando il programma in esecuzione richiede più memoria di quella disponibile, un altro programma inattivo viene rimosso per risparmiare spazio, il programma inattivo viene quindi salvato temporaneamente sul disco rigido. Tuttavia, la registrazione su disco è una notevole perdita di tempo.
Nel 2011 molti sistemi operativi sono basati su Unix , un sistema di condivisione del tempo.
I sistemi operativi in tempo reale sono apparsi a metà degli anni '70, in particolare presso Hewlett-Packard . Sono destinati a dispositivi che non solo devono fornire risultati corretti, ma devono darli entro un tempo specificato. Questi sistemi operativi sono spesso utilizzati da computer collegati a un dispositivo esterno (autopiloti, robot industriali, applicazioni video e audio) per i quali un ritardo nella risposta del computer causerebbe il guasto del dispositivo.
In questi sistemi operativi, l'accento è posto sul tempo necessario per completare ogni operazione, per rispondere rapidamente alle richieste per soddisfare i vincoli di tempo del sistema in cui viene utilizzato.
Alcuni servizi offerti da questi sistemi operativi sono realizzati come software applicativi e vengono eseguiti in concorrenza con essi. Un sistema operativo in tempo reale consente il contatto diretto tra software applicativo e periferiche. In alcuni sistemi real-time le risorse sono riservate, evitando così i rallentamenti causati dalle prenotazioni al volo, e garantendo la disponibilità continua delle risorse.
I sistemi operativi in tempo reale evitano di utilizzare la tecnica dello swap a causa del rischio di ritardi temporali.
RTX , Windows CE , Embedded Linux , Symbian OS , Palm OS e VxWorks sono sistemi operativi in tempo reale .
Il crollo del prezzo delle apparecchiature informatiche ha permesso, negli anni '90, di creare sistemi informatici composti da più computer, e quindi da più processori, da più memorie e da tante periferiche. Un sistema distribuito consente la condivisione delle risorse tra computer. Un utente di un computer economico può utilizzare risorse costose che esistono su un altro computer.
Mach , Amoeba , Andrew , Athena e Locus sono sistemi operativi distribuiti. Sono stati tutti sviluppati dalle università.
La storia dei sistemi operativi è fortemente legata a quella dei computer. Le prime generazioni di computer, negli anni dal 1945 al 1955, non includevano un sistema operativo. In questi computer dotati di tubi a vuoto , i programmi manipolavano le risorse hardware del computer senza passare per un intermediario. Il computer veniva utilizzato da una persona alla volta: il compito dell'operatore era quello di inserire pile di schede perforate nel lettore, dove ciascuna scheda conteneva istruzioni o dati di programma. I computer a valvole di questa generazione avevano poca potenza di calcolo, erano ingombranti, scomodi e inaffidabili (i tubi a vuoto spesso si bruciavano).
Negli anni '60, con l'avvento dei circuiti elettronici a stato solido, la potenza di calcolo dei processori aumentò notevolmente. Questo ha permesso la realizzazione di sistemi operativi rudimentali: i computer erano dotati di uno spooler - coda che permetteva di utilizzare la potenza di calcolo del processore mentre l'operatore introduceva le carte. L'utilizzo delle risorse hardware da parte dei programmi è stato poi effettuato tramite una libreria software . Era quindi possibile memorizzare più programmi contemporaneamente ed eseguirli contemporaneamente; un cosiddetto programma monitor residente risiedeva continuamente nella memoria principale e controllava l'esecuzione dei vari programmi.
Nel 1965 il Massachusetts Institute of Technology ha avviato la creazione del primo sistema operativo multitasking e multiutente: Multics (per MULTiplexed Information and Computing Service ). Sul principio della multiprogrammazione , il sistema operativo permetteva il caricamento di più programmi in memoria e gestiva il passaggio dall'uno all'altro, ma questa volta senza attendere il blocco di un programma. Ogni programma verrebbe eseguito per alcuni millisecondi, quindi il sistema passerebbe al successivo. Questo tempo molto breve ha dato l'illusione che i programmi fossero in esecuzione contemporaneamente, un'illusione che esiste ancora con i sistemi operativi contemporanei.
Inoltre, questi programmi potevano essere di proprietà di utenti separati, ognuno dei quali sentiva che la macchina funzionava solo per loro. La capacità di un computer di servire più persone contemporaneamente ha aumentato il ritorno sull'investimento nell'acquisto di hardware molto costoso da parte di aziende e istituzioni. Tuttavia, essendo scritto in un linguaggio di programmazione PL/I troppo complesso per i computer dell'epoca, Multics fu un fallimento commerciale. Tuttavia, ha ampiamente ispirato la gamma di sistemi GCOS sviluppati congiuntamente da Honeywell e Bull .
Nel 1969, gli ingegneri Ken Thompson e Dennis Ritchie dei Bell Labs sognavano di utilizzare il sistema operativo Multics, ma l'hardware per eseguirlo era ancora costoso. Thompson si propone di scrivere una versione ridotta di Multics per un PDP-7 inutilizzato. Il sistema funzionale è stato soprannominato Unics (per UNiplexed Information and Computing Service ), poi finalmente chiamato UNIX . Riprogrammato rapidamente in un linguaggio di programmazione più appropriato ( C , sviluppato da Ritchie per l'occasione), UNIX è particolarmente facile da portare su nuove piattaforme, il che ne garantisce il successo.
Già nel 1980 i circuiti a transistor elettronici furono sostituiti da circuiti integrati più piccoli, che consentirono di produrre dispositivi più compatti e meno costosi e lanciarono il mercato dei personal computer. Molti progettisti di sistemi operativi che sono entrati in questo mercato non avevano esperienza, il che ha portato a nuovi prodotti, basati su nuove idee, senza alcuna eredità o influenza di ciò che era stato fatto prima. CP / M , rilasciato nel 1974, è stato il primo sistema operativo per microcomputer, il suo carattere molto amichevole , facile da imparare e facile da usare lo ha reso molto popolare e ha influenzato il mercato dei computer .
Nel 1980 IBM contattò Bill Gates , co-fondatore della società Microsoft , per l'adattamento del linguaggio BASIC al suo nuovo microcomputer: il Personal Computer (abbreviato in PC ). Anche IBM è alla ricerca di un sistema operativo e Bill Gates consiglia loro di rivolgersi a CP/M. Ma Gary Kildall si rifiuta di firmare il contratto con IBM. Bill Gates ha colto al volo l'occasione: ha acquistato QDOS - un sistema operativo veloce e sporco per processori Intel 8086 - per offrire a IBM il pacchetto DOS/BASIC. Dopo alcune modifiche apportate su richiesta di IBM, il sistema è stato denominato MS-DOS .
Xerox , una delle maggiori aziende dell'epoca, è interessata alla prospettiva di Steve Jobs. Riunisce una manciata di scienziati e ingegneri nel suo centro di ricerca di Palo Alto e sviluppa il primo microcomputer dotato di interfaccia utente grafica, sulla base di tesi e studi di ergonomia effettuati negli anni precedenti. Il risultato di questa ricerca, la Xerox Star , non sarà mai commercializzato. Dieci anni dopo, fu Apple con il Macintosh a rendere popolare la ricerca svolta da Xerox.
Nel 1983, Richard Stallman del Massachusetts Institute of Technology ha lanciato l'idea di un sistema operativo a licenza libera: GNU . Sviluppa strumenti di programmazione , software di utilità e crea la GNU General Public License , un contratto di licenza che autorizza l'uso illimitato, nonché la pubblicazione del codice sorgente , la sua modifica e la sua ridistribuzione. Il successo fu immediato, ma nel 1990 il sistema non aveva ancora un kernel libero ei tentativi di svilupparne uno furono tutt'altro che efficaci.
Nel 1987, Andrew Tanenbaum , professore alla Libera Università di Amsterdam ha creato il sistema operativo Minix , un clone di UNIX il cui codice sorgente ha lo scopo di illustrare il suo corso sulla costruzione di sistemi operativi. Ma Minix, la cui vocazione è educativa, ha poi troppi limiti tecnici e non ne consente un uso estensivo.
Nel 1989 apparve contemporaneamente un " sistema operativo libero ": 4.4BSD . La Berkeley Software Distribution (BSD) è la versione di UNIX sviluppata da studenti e ricercatori della UC Berkeley dal 1977. Il software di utilità, creato con una licenza gratuita, è venduto con il kernel Unix di AT&T , sotto licenza del proprietario . Questa doppia licenza BSD è all'origine di diversi anni di contenzioso tra l'Università di Berkeley e AT&T. Gli studenti dell'università stanno lavorando per sostituire i programmi sviluppati da AT&T con i propri programmi, sotto licenza aperta, al fine di risolvere la controversia. Questa situazione durò fino al rilascio di 4.4BSD nel 1994, che conteneva pochissimo codice AT&T.
Nel 1991, Linus Torvalds , uno studente dell'Università di Helsinki , ispirato dal lavoro di Tanenbaum, rilasciò la primissima versione (0.0.1) del proprio kernel: Linux , che inizialmente era una riscrittura di Minix . Linux passò sotto la licenza GNU nel 1992 e bisognerà attendere il 1994 per vedere la versione 1.0, dando così vita alla distribuzione di un sistema operativo completamente gratuito, GNU / Linux .
È in seguito alle iniziative e ai lavori di Linus Torvalds e Richard Stallman, aiutati da migliaia di volontari, e consecutivamente al lavoro degli studenti dell'Università di Berkeley che GNU/Linux e 4.4BSD sono diventati i primi sistemi di funzionamento a licenza libera.
Un sistema operativo è essenzialmente guidato dagli eventi : viene eseguito quando è successo qualcosa, in genere durante una chiamata di sistema, un'interruzione hardware o un errore. È un software ampio e complesso, che offre molte funzioni. È costruito come una serie di moduli, ciascuno con una funzione specifica.
Il kernel è la parte centrale del sistema operativo. È il secondo programma caricato in memoria (subito dopo il bootloader ) e vi rimane permanentemente: i suoi servizi vengono utilizzati continuamente.
Di solito risiede in una posizione protetta della RAM, che non può essere modificata o sfruttata da altri programmi (cioè nel caso di un sistema operativo in modalità protetta ).
Questo è un componente critico: se il kernel si guasta e si spegne il computer smetterà di funzionare, mentre se un altro programma si ferma (es. un programma utente) il sistema operativo rimarrà operativo.
In genere fornisce funzioni per creare o distruggere processi (cioè eseguire programmi), dirigendo l'uso del processore, della memoria e delle periferiche. Offre anche le funzioni che consentono ai programmi di comunicare tra loro e di allinearsi nel tempo (sincronizzazione).
Nucleo monolitico In una costruzione monolitica , il sistema operativo è costituito da un unico programma: il kernel. Questo è tipicamente organizzato in strati. La costruzione monolitica è la più comune, applicata alla maggior parte degli Unix; Dal nucleo al micronucleo Nella costruzione del microkernel , il kernel fornisce i servizi minimi: molte funzioni del sistema operativo sono state rimosse dal kernel e sono offerte da programmi da esso manipolati, che si chiamano servizi (per un sistema in modalità protetta, la grande differenza con un sistema monolitico sarà che questi servizi verranno eseguiti nello spazio di memoria dell'utente e non in quello del kernel).Anno di apparizione | Nome | Famiglia | Editor | Hardware supportato | uso | Nucleo | Grafico | Multitasking | Multiutente | Multiprocessore | Tempo reale |
---|---|---|---|---|---|---|---|---|---|---|---|
1973 | SYSMIC | R2E | Micral | personal computer, postazioni di lavoro | |||||||
1977 | VMS | DEC | VAX , DEC Alpha , Hewlett-PackardPack | server, mainframe | |||||||
1978-1985 | PC / M | Ricerca digitale | Amstrad CPC , Commodore 128 , TRS-80 | computer personale | (caso di MP/M) | ||||||
1981-1990 | INDIETRO | IBM e Microsoft | Compatibile con PC | computer personale | |||||||
1982 | QNX | Sistemi software quantistici | Compatibile con PC, MIPS , PowerPC , ARM | sistemi embedded , controllori industriali | |||||||
1984 | Mac OS | Mela | Apple Macintosh | computer personale | |||||||
1985 | TOS | Atari | Atari ST , Eagle, Medusa, Hades, Milan, FireBee , ColdFireFi | computer personale | |||||||
1985 | AmigaOS | Commodoro | Commodore Amiga , PowerPC | personal computer e console di gioco | |||||||
1986 | AIX | Unix | IBM | PS/2 , RS/6000 , PowerPC | personal computer, server, workstation, supercomputer | ||||||
1986 | Irix | Unix | SGI | macchine SGI | workstation e server | ||||||
1986-1996 | Passo successivo | Unix | Il prossimo | Compatibile con PC, SPARC , Hewlett-Packard | postazioni di lavoro | ||||||
1987-2006 | Sistema operativo / 2 | IBM e Microsoft | Compatibile con PS/2 e PC | computer personale | |||||||
1987 | Minix | Andrew Tanenbaum | PC, m68k , compatibile SPARC | (pedagogico) | |||||||
1989 | Sistema operativo Symbian | Symbian srl | Nokia , Siemens , Samsung , Panasonic | telefoni cellulari, smartphone , assistenti personali | |||||||
1990 | Windows 3.x | finestre | Microsoft | Sovrapposizione software DOS | computer personale | ||||||
1991 | Solaris | Unix | Sole | Macchine Sun e x86/64 | server, workstation, supercomputer | ||||||
1991 | GNU/Linux | Unix | (Comunità) | numerosi | tutti | ||||||
1991 | Windows NT | finestre | Microsoft | Compatibile con PC | server, workstation, personal computer | ||||||
1994 | NetBSD | Unix | (Comunità) | numerosi | tutti | ||||||
1994 | FreeBSD | Unix | (Comunità) | numerosi | tutti | ||||||
1994 | OpenBSD | Unix | (Comunità) | numerosi | tutti | ||||||
1996 | Windows CE | finestre | Microsoft | x86 , MIPS , ARM | smartphone , assistenti personali, controller industriali | ||||||
1996 | RTX | intervallo zero | x86 , x64 | computer industriali | |||||||
1999 | Mac OS X | Unix | Mela | x86 , PowerPC con Apple | personal computer, server, workstation | ||||||
1999 | Sistema operativo BlackBerry | Ricerca in movimento | telefoni cellulari BlackBerry BlackBerry | smartphone | ?? | ?? | |||||
2007 | Android | Unix | Consorzio Open Handset Alliance | prodotti dei produttori di Open Handset Alliance | smartphone , tablet elettronico | ?? | ?? | ||||
2007 | ios | Unix | Mela | Dispositivi Apple ( iPhone , iPod , iPad ...) | smartphone , tablet elettronico , lettore musicale digitale | ?? | |||||
2007 | Sistema operativo pesce vela | Unix | Jolla | dispositivi della ditta finlandese Jolla | smartphone , tablet elettronico | ?? |
Fondata nel 1985, la gamma di sistemi Microsoft Windows nel 2008 è stata utilizzata in quasi il 90% dei personal computer, il che la pone in una situazione di monopolio , in particolare tra il pubblico in generale. Nel 2008, la sua quota di mercato è scesa al di sotto del 90% per la prima volta in 15 anni. Poi in seguito alla rapidissima crescita del mercato degli smartphone , e al ritardo preso da Microsoft in questo mercato, la sua quota di mercato sui dispositivi personali è passata dal 95% nel 2005 al 20% nel 2013.
Iniziata nel 1969, la famiglia di sistemi operativi Unix conta più di 25 membri. GNU/Linux , BSD e Mac OS X sono oggi i sistemi operativi più popolari della famiglia Unix.
La famiglia Windows ora equipaggia 38% dei server mentre la famiglia Unix li equipaggia il 31%, di cui circa la metà con GNU/Linux . La famiglia Unix gestisce il 60% dei siti Web del mondo. La famiglia GNU/Linux alimenta il 100% dei 500 supercomputer del mondo. Nelmaggio 2019, la famiglia Unix alimenta oltre il 98% degli smartphone .
Nato nel 1990, Symbian OS è stato nel 2007 il sistema operativo più diffuso su telefoni cellulari e assistenti personali , con una quota di mercato del 67%.
Nel 2012, i quattro sistemi operativi Android di Google , Symbian , iOS di Apple e Blackberry di Research In Motion insieme hanno rappresentato il 95% del mercato degli smartphone . Android, il più popolare (75%), è in aumento, mentre il resto è in calo. La quota di mercato di Symbian è solo del 2,3%.
Per quanto riguarda i tablet, iOS di Apple è stato il primo sistema operativo ampiamente distribuito con una quota di mercato superiore all'80% nel 2010. Tre anni dopo, la sua quota di mercato è del 20% e quella di Android supera il 56%.
La maggior parte dei server e dei supercomputer sono dotati di sistemi operativi della famiglia UNIX .
Gran parte del software applicativo sul mercato è costruito per funzionare con un particolare sistema operativo, o una particolare famiglia, e un sistema operativo è costruito per funzionare con una particolare gamma di macchine. Per l'acquirente, la scelta della famiglia di macchine limita la scelta del sistema operativo, che a sua volta limita la scelta del software applicativo.
Ogni sistema operativo, a seconda della gamma di programmi che contiene, è costruito per funzionare con determinate reti di computer. Per l'acquirente che dispone di una rete informatica (tipicamente imprese e istituzioni) la scelta del sistema operativo dipende dalla sua idoneità alla rete esistente dell'acquirente.
L'utilità di un sistema operativo per l'utente è proporzionale al numero di software applicativo che gli viene fornito. L'elevata popolarità di un sistema operativo attrae gli editori di software applicativo, il che ne aumenta ulteriormente la popolarità ( effetto rete ). Questo fenomeno rende il mercato soggetto a situazioni di monopolio .
Apple , Sun Microsystems e Silicon Graphics sono marchi che producono hardware per computer e sviluppano sistemi operativi per il proprio hardware. Alcuni sistemi operativi, come Microsoft Windows e Android , sono venduti con hardware per computer in base ad accordi tra produttori.
La compatibilità di un sistema operativo è la sua capacità di essere utilizzato al posto di un altro, in particolare per eseguire il software applicativo dell'altro. Si dice che il sistema operativo sia "compatibile" con l'altro. La compatibilità a livello di sorgente è la capacità di un sistema operativo A di eseguire il software applicativo creato per B dopo aver compilato il codice sorgente del software per la macchina A. E la compatibilità binaria è la capacità di un sistema operativo A di eseguire il software applicativo creato per B così com'è, senza doverlo ricompilare.
L' interoperabilità è la capacità di più sistemi di essere utilizzati insieme, ad esempio in un unico dispositivo o in una rete di computer .
Per essere compatibili, due sistemi operativi devono avere punti in comune, in particolare sull'interfaccia di programmazione. La compatibilità binaria è possibile solo tra due sistemi operativi che funzionano con la stessa famiglia di processori.
La compatibilità e l'interoperabilità tra i sistemi operativi sono garantite dagli editori allineando il loro prodotto agli standard del settore e alle tecnologie disponibili pubblicamente.
Il sistema operativo Unix , creato nel 1969, è servito da ispirazione per un'intera famiglia di sistemi operativi. Il gioco competitivo, molto appassionato negli anni '80, ha portato i vari membri della famiglia Unix ad allontanarsi, ea perdere la compatibilità tra loro. Enti di standard come Open Group hanno esaminato il problema e hanno emesso standard che garantiscono la compatibilità con l'intera famiglia Unix.
Tra il 1995 e il 2007, Microsoft , editore della suite di sistemi operativi Windows , è stata oggetto di diverse cause legali per pratiche anticoncorrenziali lesive della concorrenza e dell'interoperabilità. La società è stata condannata dal Dipartimento di Giustizia degli Stati Uniti per violazione dello Sherman Antitrust Act , nonché dalla Commissione Europea per violazione dei trattati sulla concorrenza nell'Unione Europea .
La divulgazione di Internet negli anni '90 ha contribuito a migliorare l'interoperabilità tra i sistemi operativi.
La guerra di Unix e il gruppo apertoIl sistema operativo Unix è stato sviluppato da American Telephone & Telegraph (AT&T). Fino al 1975 un accordo con lo stato federale americano gli vietava di commercializzare Unix, avendo il monopolio della telefonia negli Stati Uniti, il codice sorgente del sistema operativo era quindi pubblico. Ma nel 1975 questo monopolio fu attaccato in tribunale e nel 1982 la società fu smembrata per ordine del tribunale. AT & T, che nasce dalla frammentazione di AT & T Business Corporation, è stato finalmente in grado di commercializzare i tecnici Unix lasciato l'azienda del codice sorgente per la versione 7 ( aperta ) di provocare UNIX System V . Allo stesso tempo, altri editori hanno preso ispirazione dalla versione 7 per creare sistemi Unix, in particolare l' Università di Berkeley , con la sua Berkeley Software Distribution (BSD, 1979). Quindi questi sono serviti come ispirazione per altri sistemi operativi e così via. Nel 2009, la famiglia Unix era composta da più di 25 sistemi operativi.
Il gioco della concorrenza ha portato ogni editore ad aggiungere i propri miglioramenti e funzionalità al proprio sistema operativo ottimizzato per un determinato hardware. Ciò ha causato l'allontanamento dei diversi membri della famiglia Unix e la perdita di compatibilità tra loro.
Nel 1987, nel tentativo di riunire la famiglia Unix, AT&T stipulò un accordo con Sun Microsystems (un fornitore leader di sistemi operativi basati su BSD). Gli altri editori, non vedendo di buon occhio questo accordo, creano la fondazione Open Software Foundation (OSF). Allo stesso tempo, l' Open Group , un consorzio di standard, pubblica gli standard per i sistemi operativi della famiglia Unix. Le due istituzioni sono ora fuse.
POSIX è il nome dato agli standard IEEE 1003. Questa famiglia di standard appartenente all'Open Group è stata lanciata nel 1988 e riguarda l'interfaccia di programmazione. La conformità di un sistema operativo a questo standard garantisce la compatibilità a livello di origine. Nel 2009, molti sistemi operativi si sono conformati a questo standard, anche al di fuori della famiglia Unix.
POSIX fa parte della Single Unix Specification , uno standard rilasciato nel 1994 da Open Group , che copre file system, software di utilità e 1.742 funzioni dell'interfaccia di programmazione. Il nome "Unix" appartiene all'Open Group e qualsiasi sistema operativo deve essere conforme alla Single Unix Specification per essere riconosciuto come parte della famiglia Unix.
Microsoft e la concorrenzaNel 1995, ai sensi dello Sherman Antitrust Act - una legge degli Stati Uniti per la prevenzione dell'abuso di posizione dominante , il Dipartimento di Giustizia degli Stati Uniti ha vietato a Microsoft alcune delle sue pratiche considerate dannose per la concorrenza. Due anni dopo, viene aperta una causa per mancato rispetto dei divieti del 1995: Microsoft ottiene l'annullamento della causa sulla tesi che "la giustizia non è attrezzata per giudicare i meriti del design degli alti prodotti. tecnologia (sic) ” .
Tra il 1999 e il 2001 è stata aperta un'indagine sulla posizione di Microsoft. L'indagine, condotta dai giudici Thomas Jackson e Richard Posner, conclude che Microsoft sta abusando della sua posizione di monopolio per praticare il "favoritismo" nel relativo mercato dei browser web , pratiche che danneggiano i suoi concorrenti, ne ostacolano l'emergere e ostacolano l'innovazione. L'azienda è sfuggita per un pelo alla scissione e si è trovata obbligata a pubblicare le specifiche delle sue tecnologie, in particolare le interfacce di programmazione ei protocolli di rete, al fine di preservare l'interoperabilità e la concorrenza.
Successivamente, nel 2007, Microsoft è stata condannata dalla Commissione Europea a una multa di quasi 500 milioni di euro per violazione dell'articolo 82 del Trattato CE e dell'articolo 54 dell'Accordo SEE (testi relativi al diritto di concorrenza e abuso di posizione dominante ) dopo aver rifiutato di pubblicare una delle sue specifiche tecniche al suo concorrente Sun Microsystems . Secondo la Commissione europea, le azioni di Microsoft minano l'interoperabilità dei sistemi operativi e incidono negativamente sulla concorrenza.
Reti di computerOgni sistema operativo dispone di una serie di programmi relativi ai protocolli di rete . La composizione della tavolozza dipende dalla scelta dell'editor e differisce da un sistema operativo all'altro. Tuttavia, due computer possono comunicare tra loro solo se utilizzano gli stessi protocolli.
La divulgazione di Internet negli anni '90 ha spinto molti fornitori a includere nei propri sistemi operativi programmi relativi ai protocolli TCP/IP (protocolli Internet), migliorando così l'interoperabilità tra i sistemi operativi.