Il sistema operativo (di seguito anche SO) è il software di base di un dispositivo elettronico (computer, tablet, cellulare, ecc.) cioè un software senza il quale il dispositivo non potrebbe funzionare o avrebbe delle capacità molto limitate.
I sistemi operativi più diffusi per computer sono:
- I sistemi Windows (win95, 98, NT, Me, XP, Vista, 7, 8, ecc.)
- Il sistema Unix
- I sistemi Unix-Like o derivati da Unix e cioè: Linux, Mac OS X, BSD, ecc.
Mentre i sistemi operativi più diffusi per dispositivi mobili (es. tablet, smartphone, cellulari, palmari, ecc. ) sono:
- Android
- iOS
- Windows Mobile
- Palm OS
- Symbian
- Ubuntu Touch
ecc.
Compiti e struttura del Sistema operativo
Il compito principale del sistema operativo è quello di permettere all’utente, di interagire con la macchina (hardware, di seguito chiamato anche HW). Si può vedere il SO come ad un sistema a cipolla in cui al centro si trova l’Hardware (HW), attorniato dal SO, ed esternamente l’utente.
A sua volta il SO è suddiviso in vari strati, chiamati moduli.
I moduli di un sistema operativo
I moduli di un SO in ordine di vicinanza all’HW, sono:
- gestore delle periferiche di I/O (input/output):
- si occupa di gestire tutte le periferiche sia di input (tastiera, mouse, ecc.) che di output (monitor, stampante, ecc.), sia esterne che interne (Hard Disk, RAM, scheda audio, scheda video) al computer, controllando il flusso di dati dal computer (CPU) verso l’esterno (output), e dall’esterno verso il computer (input)
- gestore della memoria e dei processi:
si occupa di gestire i processi (vedi sotto) e la memoria principale (RAM) o di lavoro, in cui essi normalmente risiedono
- gestore del file system:
- si occupa di gestire il salvataggio dei file in memoria di massa (e quindi in maniera permanente) tramite un sistema gerarchico chiamato appunto file system
- gestore dell’interfaccia:
- è la parte che permette all’utente di interagire con la macchina detta appunto interfaccia; un’interfaccia può essere di due tipi, e cioè:
- grafica (GUI: graphical user interface)
- non grafica (CLI: command line interface)
L’utente può cioè interagire con l’HW o tramite il più conosciuto sistema a finestre con icone, pulsanti e menù ed usando principalmente il mouse; oppure digitando dei comandi su di una interfaccia testuale (il prompt di MS-DOS sui sistemi Microsoft e le shell di linux, sono esempi di CLI).
Un esempio di come interagiscono i vari moduli si trova più sotto
Da notare che i vari moduli in realtà non sono completamente indipendenti l’uno dall’altro ma interagiscono tra di loro compenetrandosi.
Il kernel del Sistema Operativo
Alcune parti del SO fanno parte del cosiddetto Kernel. Più precisamente:
Il kernel è il “cuore” di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della memoria primaria, delle risorse hardware del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione.
Inoltre:
La controparte del kernel è la shell, ovvero l’interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente all’hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità (scheduling) realizzando così il multitasking.
Processi
I processi sono programmi in esecuzione; i programmi a loro volta, sono sequenze di istruzioni. Tutti i programmi in esecuzione in un determinato istante (processi o task) si trovano fisicamente nella memoria di lavoro (o memoria principale detta anche RAM). I processi rimangono in RAM solo durante l’esecuzione e vengono cancellati alla fine della loro esecuzione (es. quando chiudo la finestra del programma), oppure quando si spegne la macchina (questo perché stanno in RAM che è una memoria volatile, e cioè che perde i dati allo spegnimento).
I programmi dunque non risiedono inizialmente in RAM ma, in una memoria di massa come l’Hard Disk e vengono caricati (cioè copiati dall’Hard Disk alla RAM) all’occorrenza (cioè quando apro un programma).
Il file system
Il file system è il sistema con cui sono organizzati i file.
Un file a sua volta è un insieme di dati dello stesso tipo (ad esempio file musicale, immagine, file di testo, ecc.).
Anche le cartelle (o directory) possono essere considerati file: le cartelle sono contenitori di file e cartelle.
Il fatto che una cartella può contenere al proprio interno file e cartelle fa diventare il file system gerarchico.
Gerarchico vuol dire che ha una struttura ad albero del tipo padre-figlio.
Il desktop è ad esempio una cartella contenuta in un’altra che è contenuta in un’altra ancora e così via fino ad arrivare alla radice del file system che,nei sistemi Microsoft é l’unità che in genere viene chiamata “C:”; nei sistemi Unix-like invce la radice del file system non si chiama unità ed è descritto dal simbolo / (slash)
Conclusioni
Domande:
- Chi si occupa di caricare i programmi in RAM?
- Chi si occupa di eseguirli?
- Chi si occupa di salvare i dati in Hard Disk?
La risposte a queste e ad altre domande è:
la CPU ovvero il processore cioè colui che tutto “fa” (esegue) spostando i dati da un posto all’altro tramite i BUS di sistema.
Ma ricordiamoci che la CPU è un Hardware e cioè non è capace di funzionare da sola senza software.
Ma allora qual è il software che costringe (guida) la CPU a fare tutto?
La risposta è dentro di voi…basta dire: io SO! (o forse la risposta è proprio il SO 🙂 ).
Esempio di interazione tra i vari moduli
Quindi per interderci, se, ad esempio, l’utente che sta davanti al computer, apre un programma facendo doppio clic sulla sua icona (interpellando quindi il gestore dell’interfaccia), la GUI chiederà alla CPU di caricare il programma dall’hard disk alla RAM (interpellando quindi il gestore delle periferiche di I/O che gestisce l’Hard Disk, e il gestore della memoria che deve occuparsi di registrare la presenza di un nuovo programma in RAM per permettere poi alla CPU di eseguirlo.
Per concludere, come già detto, tutte le richieste fatte al sistema operativo vengono anche chiamate System Call (chiamate di sistema).