1 IL SISTEMA OPERATIVO

1 IL SISTEMA OPERATIVO

A che cosa serve un sistema operativo

Quando scriviamo un documento con un programma di videoscrittura, impostiamo un calcolo su un foglio elettronico o usiamo un videogioco, non abbiamo l’impressione di “avere a che fare” con il microprocessore, la RAM, le periferiche ecc. Al contrario abbiamo la sensazione di usare una sofisticata macchina da scrivere, una raffinata calcolatrice o una console di gioco. L’interfaccia grafica GUI (Graphic User Interface) attraverso cui interagiamo con il dispositivo, ci nasconde tutti i dettagli legati alla gestione dell’hardware sottostante.


Curiosamente, però, il programma di videoscrittura, il foglio elettronico e il videogioco (così come gli altri programmi applicativi) non interagiscono con l’hardware, ma a loro volta utilizzano un’interfaccia per ottenere servizi da un software sottostante chiamato sistema operativo (SO).


Il sistema operativo, quindi, gestisce e coordina l’utilizzo dell’hardware e fornisce un’interfaccia utente, senza la quale, oggi, sarebbe impossibile utilizzare un computer.

Come è fatto un sistema operativo

Il sistema operativo è un software “a strati”, la cui struttura può essere rappresentata dal diagramma in figura. Ogni strato è una porzione del SO che si occupa di una funzione specifica.

Al centro c’è il kernel (nucleo), un software che gestisce i processi e le politiche per la condivisione delle risorse. Gli strati esterni gestiscono la memoria, le periferiche di I/O e il File System sulle memorie di massa, cioè il modo in cui sono organizzati i file e le cartelle sul supporto fisico.


Il kernel viene eseguito con i massimi privilegi (modalità superuser) e può accedere a tutte le risorse del sistema senza alcuna limitazione. I programmi applicativi girano in modalità utente (user) e, avendo meno privilegi del kernel, non possono disporre liberamente delle risorse hardware, ma solo di quelle concesse dal sistema operativo.

 >> pagina 139

L’evoluzione dei sistemi operativi

La storia dei sistemi operativi inizia negli anni Cinquanta del secolo scorso, quando i calcolatori ricevevano i dati in input attraverso le schede perforate, inizialmente usate anche per l’output ma in seguito sostituite da stampe cartacee.

Per agevolare le operazioni di input era stato realizzato un software (il resident monitor) residente nella memoria del computer e antenato del sistema operativo, che svolgeva tutte le attività richieste a ogni nuova elaborazione.

Nei primi sistemi di elaborazione, ogni utente preparava un insieme di schede perforate ( job) che descrivevano un lavoro. I job venivano consegnati (fisicamente) a un operatore specializzato che li raggruppava in lotti ( batch) e li trasferiva a un lettore per fornirli in input al sistema di elaborazione. Durante l’elaborazione di un lotto, poteva essere utilizzato un solo programma alla volta (sistema monoprogrammato). Al termine dell’elaborazione i risultati venivano stampati in output e portati fisicamente all’utente che aveva richiesto l’elaborazione.

Rispetto alle altre fasi del processo, l’elaborazione avveniva molto velocemente, tuttavia il sistema era inefficiente perché gli utenti erano costretti ad attendere a lungo i risultati e il calcolatore rimaneva per molto tempo inutilizzato in attesa del completamento delle operazioni di input/output.


Con il passare del tempo divenne possibile fornire in input ai sistemi monoprogrammati anche i programmi.

L’introduzione dei nastri magnetici contribuì a migliorare le prestazioni consentendo di sottoporre all’elaboratore centrale un flusso in input (e in output) consistente, veloce e continuativo. Le operazioni di input e di output vennero delegate a elaboratori ausiliari (precursori dei sistemi operativi) che gestivano autonomamente i nastri accumulati, realizzando una “catena di montaggio” (pipeline) per l’inserimento di dati e programmi e per la stampa dei risultati.


L’introduzione degli hard disk eliminò la necessità degli elaboratori ausiliari, aumentando ulteriormente l’efficienza del sistema. I job (dati e programmi), depositati sull’hard disk dalle periferiche di input, venivano letti dall’elaboratore che produceva risultati in uscita salvandoli direttamente sull’hard disk. Le periferiche di input e di output potevano finalmente lavorare alla propria velocità, nella nuova modalità spooling (Simultaneous Peripheral Operation On Line), cioè gestendo autonomamente la propria coda di dati (job  queue).

I sistemi operativi moderni

I sistemi operativi attualmente in uso sono multiprogrammati: all’interno della RAM sono presenti contemporaneamente più programmi in esecuzione (processi o task, cioè l’evoluzione dei job).

La CPU viene condivisa tra più processi e i sistemi operativi devono risolvere diversi problemi, fra cui:

  • task  scheduling: lo spazio disponibile nella RAM è limitato, è quindi compito del sistema operativo stabilire (applicando le diverse tecniche di scheduling) quali processi caricare in memoria tenendo conto di precedenze e altre criticità;
  • memory ▶ management: il sistema operativo deve stabilire dove allocare fisicamente un task all’interno della RAM e quali politiche adottare per condividere la memoria tra i processi;
  • CPU scheduling: il sistema operativo deve stabilire le politiche di condivisione della CPU e le modalità di gestione degli eventuali conflitti;
  • meccanismi di protezione: il sistema operativo ha il compito di impedire l’uso diretto dell’hardware da parte dei programmi applicativi e di fornire i servizi che gli consentano di funzionare da intermediario.

I sistemi batch multiprogrammati vengono attualmente usati per le elaborazioni lunghe, periodiche e che non necessitano dell’intervento umano come, per esempio, l’elaborazione e la stampa delle buste paga, le previsioni meteo e le elaborazioni dei supercalcolatori. La mancanza di interattività con le persone consente, tra l’altro, di conoscere a priori, con discreta certezza, i tempi necessari per le elaborazioni.

L’interattività è stata realizzata grazie allo sviluppo dei sistemi a condivisione di tempo (sistemi  time  sharing). Inizialmente più utenti (sistemi multiutente) servendosi di appositi terminali, condividevano il processore centrale, avendo la possibilità di usare la CPU per un tempo limitato (pochi millisecondi), chiamato time  slice. I processi in attesa di input da tastiera rilasciavano il processore che nel frattempo veniva riassegnato, dal sistema operativo, a qualche altro utente.


La diffusione dei PC ha spinto verso lo sviluppo delle interfacce utente. Il sistema operativo MS-DOS (MicroSoft Disk Operating System) disponeva di un’interfaccia testuale attraverso la quale l’input avveniva esclusivamente tramite tastiera. Trattandosi di un sistema monoprogramma, non consentiva di utilizzare contemporaneamente due programmi applicativi. Con i primi sistemi operativi Mac e Windows, si diffusero le interfacce grafiche che funzionavano con il mouse e che, oggi, costituiscono la normalità dei sistemi operativi, ormai tutti multiprogramma e time sharing.

Le interfacce utente si sono evolute fino a includere quelle touch e quelle vocali, utilizzate soprattutto nei dispositivi mobili.

Lo sapevi che

Negli anni Ottanta Microsoft incluse molte delle caratteristiche innovative introdotte dal SO MacOS nel proprio software Windows, scatenando una battaglia legale con Apple, durata oltre un decennio.

  ApprofondiMENTO
GLI INTERPRETI DI COMANDI TESTUALI

Tutti i sistemi operativi per PC dispongono di un interprete comandi testuale, che prende il nome di shell, o CLI (Command Line Interface), in grado di eseguire i comandi inseriti dall’utente da tastiera. È possibile creare piccoli programmi che contengono sequenze di comandi da lanciare nella shell.

Nel sistema operativo Linux vengono chiamati script di shell; in Windows esistono, per esempio, i file .bat (da batch) e .ps1 (script di PowerShell).

 >> pagina 141

I sistemi operativi più diffusi

I sistemi operativi più utilizzati nei computer sono Microsoft Windows, Apple Mac OS X e Linux. Nei dispositivi mobili, invece, i più diffusi sono Google Android e Apple iOS.

  • Microsoft Windows: è il sistema operativo per PC più noto e diffuso, dotato del maggior numero di software sul mercato. È in assoluto il più utilizzato in ambito aziendale e offre nelle sue versioni server, un sofisticato sistema centralizzato di gestione dei PC in rete (Active Directory).
  • Apple Mac OS X: è un’evoluzione del sistema operativo Mac OS, proprietario dell’azienda Apple. È ritenuto molto affidabile, con un’interfaccia grafica gradevole e molto funzionale. Viene rilasciato per girare solo su architetture hardware prodotte dalla stessa Apple; non è quindi progettato per essere eseguito su PC di altri produttori.
  • Linux: è un sistema operativo open source inventato, nel 1991, da Linus Torvalds. È disponibile in molte distribuzioni: una delle più note è Ubuntu.


  • Google Android: è un sistema operativo inizialmente sviluppato per smart- phone e tablet che, successivamente, ha trovato applicazione anche su altri dispositivi, come per esempio alcuni modelli di autoradio e televisori. I software applicativi che vengono eseguiti su Android sono chiamati App. I produttori di dispositivi Android, spesso, personalizzano il sistema operativo per adattarlo meglio all’hardware sottostante.
  • Apple iOS: è il sistema operativo che Apple ha sviluppato specificamente per i suoi modelli di smartphone (iPhone) e tablet (iPad). Anche i software applicativi per iOS vengono chiamati App. iOS è ben integrato con Mac OS ed è possibile sincronizzare i due sistemi condividendo facilmente dati, configurazioni e App che, scaricate su un dispositivo, vengono automaticamente rese disponibili sull’altro.

Le App possono essere scaricate, a pagamento o gratuitamente, dai market, cioè da servizi cloud di distribuzione digitale. Per Android è disponibile Google Play Store, per iOS e Mac OS X si usa Apple App Store.

Con Windows 10 anche Microsoft ha introdotto la possibilità di scaricare App su PC tramite il proprio market Microsoft Store.

Lo sapevi che

Ubuntu è un termine della lingua africana Bantu e significa umanità. Indica rispetto e condivisione con il prossimo ed è stato usato perché rispecchia la filosofia di Linux in cui molti sviluppatori collaborano volontariamente per un obiettivo comune.

  SCHEDA CLIL
Two dogs strive for a bone but a third don’t run away with it

Nowadays, the smartphone (and tablet) market is clearly splitted into two big areas: the Android world and the Apple/iOS world.

Actually, some other mobile operating systems also exist. But we can say that they are not widespread at all. An important exception, in the recent past, was Windows Phone.

It was an operating system developed by Microsoft, and specifically designed for mobile devices. It was a great attempt to unify graphical user interfaces on smartphones and PCs, by moving both branches towards a new concept of interacting element: a button called tile. Windows 10 Mobile extended such feature with fully integrated live tiles, as well as we currently use under Windows 10 on our personal computer.

Unfortunately, just a few apps were ported to Windows mobile operating system, and Microsoft itself discontinued support in early 2020.

So, the two big competitors were left “alone” on the market. And now I can safely bet that an Android or Apple mobile phone is stored in your pocket.

Clic!
Clic!
Tecnologie informatiche per il primo biennio