Sistema operativo
Sistemi Operativi
Indice Argomenti
- Che cos’è un sistema operativo (SO)?
- Cosa fa un sistema operativo?
- Come funziona un sistema operativo?
- Quali sono le funzioni di un sistema operativo?
- Interfaccia utente
- Gestione delle applicazioni
- Provisioning ed esecuzione dell’hardware
- Pianificazione e definizione delle priorità dei processi
- Elaborazione parallela
- Gestione dei file
- Rete
- Sicurezza
- Monitoraggio delle prestazioni e rilevamento degli errori
- Backup e ripristino
- Virtualizzazione
- Gestione dei dispositivi
- Tipi ed esempi di sistemi operativi
Che cos’è un sistema operativo (SO)?
Un sistema operativo (SO) è il programma che, dopo essere stato inizialmente caricato nel computer da un programma di avvio, gestisce tutti gli altri programmi applicativi presenti nel computer. I programmi applicativi utilizzano il SO richiedendo servizi tramite un’interfaccia di programmazione applicativa (API) definita. Inoltre, gli utenti possono interagire direttamente con il sistema operativo tramite un’interfaccia utente (UI), come un’interfaccia a riga di comando (CLI) o un’interfaccia utente grafica (GUI).
Cosa fa un sistema operativo?
Un sistema operativo offre notevoli vantaggi al software per computer e allo sviluppo di software. Senza un sistema operativo, ovvero un software di sistema progettato specificamente per il funzionamento del computer, ogni applicazione dovrebbe includere una propria interfaccia utente (UI), nonché il codice completo necessario per gestire tutte le funzionalità di basso livello del software di sistema del computer sottostante, come l’archiviazione su disco e le interfacce di rete. Considerando la vasta gamma di hardware sottostante disponibile e il numero di routine software che devono essere eseguite a livello di software di sistema per supportare le funzioni del computer, ciò aumenterebbe le dimensioni di ogni applicazione e renderebbe lo sviluppo di software poco pratico.
Il sistema operativo gestisce invece molte attività software a livello di sistema, tra cui l’invio di pacchetti di rete o la visualizzazione di testo su un dispositivo di output standard, come un display. Il software di sistema funge da intermediario tra le applicazioni e le funzioni sottostanti del computer e dell’hardware. Il sistema operativo fornisce un modo coerente e ripetibile per le applicazioni di interagire con l’hardware e altre funzioni a livello di sistema, senza che le applicazioni debbano conoscerne i dettagli.
Se ogni applicazione accede alle stesse risorse e servizi nello stesso modo, il sistema operativo, e il software di sistema sottostante con cui interagisce, può gestire praticamente qualsiasi numero di applicazioni. Ciò riduce notevolmente il tempo e la codifica necessari per sviluppare e debuggare un’applicazione, garantendo al contempo che gli utenti possano controllare, configurare e gestire il software e l’hardware di sistema attraverso un’interfaccia del sistema operativo comune e ben comprensibile.
Come funziona un sistema operativo?
Una volta installato, un sistema operativo si basa su un’ampia libreria di driver del dispositivo per adattare i propri servizi all’ambiente hardware specifico. Ad esempio, ogni applicazione potrebbe effettuare una chiamata comune a un dispositivo di archiviazione. Il sistema operativo riceve tale chiamata e utilizza il driver corrispondente per tradurla in azioni, o comandi, necessari per l’hardware sottostante di quello specifico computer. Il sistema operativo fornisce una piattaforma completa che identifica, configura e gestisce quanto segue:
- Una gamma di hardware, compresi i processori.
- Dispositivi di memoria e gestione della memoria del computer.
- Chipset.
- Storage.
- Networking.
- Interfacce di comunicazione delle porte, come Video Graphics Array, High-Definition
- Multimedia Interface e Universal Serial Bus (USB).
- Interfacce di sottosistema, come Peripheral Component Interconnect Express .
Quali sono le funzioni di un sistema operativo?
Tutte le principali piattaforme informatiche, sia hardware che software, in genere richiedono e includono un sistema operativo che deve essere sviluppato con funzionalità diverse per soddisfare le esigenze specifiche dei vari dispositivi.
Dal punto di vista dell’utente finale, un sistema operativo offre le seguenti tre funzionalità essenziali:
- Offre un’interfaccia utente tramite CLI o GUI.
- Avvia le applicazioni e ne gestisce l’esecuzione.
- Identifica e determina l’allocazione delle risorse hardware di sistema, come stampanti e unità disco di backup, a tali applicazioni, in genere tramite un’API standardizzata.
Interfaccia utente
L’utente può interagire con il computer tramite una GUI, ovvero una schermata visiva “punta e clicca” contenente icone che attivano le funzioni di sistema e avviano le applicazioni, una CLI, che consiste in una singola riga di comando per l’immissione di dati, o entrambe.
Gestione delle applicazioni
Un sistema operativo gestisce l’avvio e la gestione di ogni applicazione, supportando le seguenti funzioni:
- Condivisione temporale di più processi, o thread, in modo che diverse attività possano condividere le risorse disponibili dei processori.
- Gestisce le interruzioni prodotte dalle applicazioni per ottenere l’attenzione immediata di un processore, garantendo che ci sia memoria sufficiente per eseguire l’applicazione e i dati corrispondenti senza interferire con altri processi.
- Esegue la gestione degli errori che può rimuovere i processi di un’applicazione.
- Esegue la gestione della memoria senza interrompere altre applicazioni o il sistema operativo.
Provisioning ed esecuzione dell’hardware
Un sistema operativo può anche supportare API che consentono alle applicazioni di utilizzare le funzioni del sistema operativo e dell’hardware senza la necessità di conoscere nulla sullo stato del sistema operativo o dell’hardware di basso livello. Ad esempio, un’API di Windows può consentire a un programma di ottenere input da una tastiera o un mouse; creare elementi GUI, come finestre di dialogo e pulsanti; e leggere e scrivere file su un dispositivo di archiviazione. Le applicazioni sono quasi sempre personalizzate per utilizzare il sistema operativo su cui l’applicazione intende essere eseguita.
Pianificazione e definizione delle priorità dei processi
In un sistema operativo multitasking, in cui più programmi possono essere eseguiti contemporaneamente, il sistema operativo determina l’ordine in cui le applicazioni devono essere eseguite e il tempo di esecuzione di ciascuna applicazione prima di passare a un’altra. Ad esempio, il sistema operativo può determinare se un processo batch, come una stampa di grandi dimensioni, può essere pianificato per essere eseguito in un secondo momento, quando le risorse sono libere.
Elaborazione parallela
Sui computer in grado di supportare l’elaborazione parallela, un sistema operativo gestisce la suddivisione di un programma in modo che venga eseguito su più processori contemporaneamente.
Gestione dei file
In base alle richieste dell’utente, ai set di regole IT o alle impostazioni predefinite, un sistema operativo gestisce la creazione, l’accesso, la modifica e l’eliminazione di file e directory.
Rete
Trasparente all’utente, il sistema operativo connette automaticamente una workstation alle risorse di rete decifrando i protocolli di rete e connettendosi alle reti. Ciò consente a un singolo utente di accedere alle stampanti e ai server di rete ospitati sulla rete.
Sicurezza
Utilizzando policy definite e autorizzate dall’IT, il sistema operativo applica controlli di accesso di sicurezza e crittografia per utenti, applicazioni e dati.
Monitoraggio delle prestazioni e rilevamento degli errori
Il sistema operativo monitora costantemente le prestazioni del computer e genera log di sistema che aiutano a ottimizzare le prestazioni e a risolvere problemi relativi all’utilizzo delle risorse, ai rallentamenti e ai colli di bottiglia delle prestazioni e alla risoluzione degli errori.
Backup e ripristino
I dati possono essere sottoposti a backup periodico durante il giorno, ogni notte, ogni settimana o con la frequenza definita. Il sistema operativo può eseguire questi backup automaticamente, senza l’intervento dell’utente o del personale IT. In caso di interruzione dei dati o di un errore di sistema, i dati possono essere facilmente recuperati dall’ultimo backup.
Virtualizzazione
La maggior parte dei sistemi operativi consente agli utenti di definire più sistemi operativi che funzionano indipendentemente l’uno dall’altro utilizzando partizioni create via software che separano ciascun sistema operativo dagli altri su una singola workstation fisica. Ciò consente all’utente di eseguire più applicazioni, ciascuna con il proprio sistema operativo dedicato, contemporaneamente su una singola workstation per ottimizzare le prestazioni.
Gestione dei dispositivi
Un sistema operativo identifica, configura e fornisce alle applicazioni un accesso comune ai dispositivi di input/output sottostanti come stampanti, tastiere e altri dispositivi hardware del computer. Quando il sistema operativo riconosce e identifica l’hardware, installa i driver e le interfacce di dispositivo corrispondenti che consentono al sistema operativo e alle applicazioni in esecuzione sul sistema operativo di utilizzare i dispositivi.
Un sistema operativo identifica la stampante corretta e installa i driver di stampa appropriati in modo che un’applicazione debba effettuare chiamate solo alla stampante, senza dover utilizzare codici o comandi specifici per quella stampante. Il processo è simile per altri dispositivi, inclusi i seguenti:
- Porte USB.
- Porte di rete.
- Dispositivi grafici, come le unità di elaborazione grafica.
- Chipset della scheda madre.
- Dispositivi di archiviazione, come gli adattatori per dischi SCSI (Serial-Attached SCSI) e i dischi formattati con un file system appropriato.
Il sistema operativo identifica e configura i dispositivi fisici e logici per la manutenzione e in genere li registra in una struttura standardizzata, come il Registro di sistema di Windows. I produttori di dispositivi applicano periodicamente patch e aggiornamenti ai driver e il sistema operativo dovrebbe aggiornarli per garantire prestazioni e sicurezza ottimali. Quando i dispositivi vengono sostituiti, il sistema operativo installa e configura anche nuovi driver.
Tipi ed esempi di sistemi operativi
Sebbene i ruoli fondamentali di un sistema operativo siano onnipresenti, esistono innumerevoli sistemi operativi che soddisfano un’ampia gamma di esigenze hardware e utente, tra cui:
Sistemi operativi generici
Un sistema operativo generico può eseguire una moltitudine di applicazioni su un’ampia gamma di hardware, consentendo all’utente di eseguire una o più applicazioni o attività contemporaneamente. Un sistema operativo generico può essere installato su molti modelli di computer desktop e laptop diversi eseguono applicazioni che spaziano dai sistemi di contabilità ai database, dai browser web ai giochi.
I sistemi operativi generici si concentrano in genere sulla gestione di processi, thread e hardware per garantire che le applicazioni possano condividere in modo affidabile l’ampia gamma di hardware di elaborazione disponibile.
I sistemi operativi desktop più comuni includono i seguenti:
- Windows, il sistema operativo di punta di Microsoft, è lo standard di fatto per i computer domestici e aziendali. Introdotto nel 1985, il sistema operativo basato su interfaccia grafica Microsoft Windows è stato rilasciato in numerose versioni da allora. L’intuitivo Windows 95 è stato in gran parte responsabile del rapido sviluppo del personal computing.
- Mac OS è il sistema operativo per la linea di PC e workstation Apple.
- Unix è un sistema operativo multiutente progettato per flessibilità e adattabilità. Sviluppato originariamente negli anni ’70, Unix è stato uno dei primi sistemi operativi ad essere scritto in linguaggio C.
- Linux è un sistema operativo simile a Unix, sviluppato dalla comunità open source, progettato per fornire agli utenti di PC un’alternativa gratuita o a basso costo. Linux ha la reputazione di essere un sistema operativo efficiente e veloce.
Sistemi operativi mobili
I sistemi operativi per computer mobili sono progettati per il mobile computing e per dispositivi incentrati sulla comunicazione, come smartphone e tablet. I dispositivi mobili offrono in genere risorse di elaborazione limitate rispetto ai PC tradizionali e il sistema operativo deve essere ridotto in termini di dimensioni e complessità per ridurre al minimo il suo utilizzo, garantendo al contempo risorse adeguate per una o più applicazioni in esecuzione sul dispositivo. I sistemi operativi mobili tendono a privilegiare prestazioni efficienti, reattività dell’utente e una particolare attenzione alle attività di gestione dei dati, come il supporto dello streaming multimediale. Apple iOS e Android sono esempi di sistemi operativi mobili.
Sistemi operativi embedded
Non tutti i dispositivi informatici sono di uso generale. Una vasta gamma di dispositivi dedicati, inclusi assistenti digitali domestici, bancomat, sistemi aerei, terminali POS per la vendita al dettaglio e dispositivi IoT (Internet of Things), utilizza sistemi operativi più personalizzati e “snelli”. La principale differenza tra i sistemi operativi embedded e i sistemi operativi di uso generale è che i dispositivi su cui sono integrati svolgono una sola funzione principale, quindi il sistema operativo è estremamente ridotto e dedicato sia alle prestazioni che alla resilienza. Il sistema operativo embedded dovrebbe funzionare rapidamente, non bloccarsi e gestire correttamente tutti gli errori per continuare a funzionare in qualsiasi circostanza. Nella maggior parte dei casi, il sistema operativo è fornito su un chip integrato nel dispositivo vero e proprio. Un dispositivo medico utilizzato nelle apparecchiature di supporto vitale di un paziente, ad esempio, utilizza un sistema operativo embedded che deve funzionare in modo affidabile per mantenere in vita il paziente. Embedded Linux è un esempio di sistema operativo embedded.
Sistemi operativi di rete
Un sistema operativo di rete (NOS) è un altro sistema operativo specializzato progettato per facilitare la comunicazione tra dispositivi che operano su una rete locale (LAN). Un NOS fornisce lo stack di comunicazione necessario per comprendere i protocolli di rete al fine di creare, scambiare e scomporre i pacchetti di rete. Oggi, il concetto di NOS specializzato è in gran parte obsoleto perché altri sistemi operativi gestiscono le comunicazioni di rete. Windows 10 e Windows Server 2019, ad esempio, includono funzionalità di rete complete. Il concetto di NOS è ancora utilizzato per alcuni dispositivi di rete, come router, switch e firewall, e i produttori utilizzano NOS proprietari, tra cui Cisco Internetwork Operating System e il NOS open source RouterOS di MikroTik.
Sistemi operativi in tempo reale
Quando un dispositivo di elaborazione deve interagire con il mondo reale entro limiti di tempo costanti e ripetibili, il produttore del dispositivo potrebbe scegliere di utilizzare un sistema operativo in tempo reale (RTOS). Ad esempio, un sistema di controllo industriale potrebbe dirigere le operazioni di una fabbrica o di una centrale elettrica di grandi dimensioni. Una struttura di questo tipo produce segnali da una miriade di sensori e li invia per azionare valvole, attuatori, motori e innumerevoli altri dispositivi. In queste situazioni, il sistema di controllo industriale deve rispondere in modo rapido e prevedibile alle mutevoli condizioni del mondo reale, altrimenti si potrebbero verificare disastri. Un RTOS deve funzionare senza buffering, latenze di elaborazione e altri ritardi, che sono perfettamente accettabili in altri tipi di sistemi operativi. Esempi di RTOS includono FreeRTOS e Wind River VxWorks.
Le differenze tra i tipi di sistemi operativi non sono assolute e alcuni sistemi operativi possono condividere caratteristiche con altri. Ad esempio, i sistemi operativi generici includono di routine le funzionalità di rete presenti in un NOS tradizionale. Allo stesso modo, un sistema operativo embedded include comunemente attributi di un RTOS, mentre un sistema operativo mobile può in genere eseguire numerose app contemporaneamente come altri sistemi operativi generici.
Sistemi operativi distribuiti
Un sistema operativo distribuito installato in rete può fornire servizi a una moltitudine di workstation, in particolare computer thin client su cui sono presenti poche o nessuna applicazione o dato residente. Più utenti accedono e condividono applicazioni e risorse ospitate su questi server di rete distribuiti più grandi, e i sistemi operativi su questi server gestiscono le richieste di accesso e il consumo di risorse da parte di più workstation utente. Esempi di sistemi operativi distribuiti sono Microsoft Windows Server e varie distribuzioni di Linux open source per server.
Sistemi operativi per cluster
I sistemi operativi per cluster sono sistemi operativi progettati per gestire un cluster di computer che lavorano insieme su un singolo sistema. L’elaborazione dell’intelligenza artificiale è un ottimo esempio di cluster computing, poiché richiede l’elaborazione rapida, simultanea e parallela dei dati. I sistemi di elaborazione ad alte prestazioni in cui migliaia di transazioni devono essere elaborate simultaneamente e in tempo reale, come i sistemi di brokeraggio, rappresentano un altro caso d’uso per il cluster computing. Rocks Cluster Distribution e Open MPI open source sono due esempi di sistemi operativi per cluster computing.