>
SISTEMI OPERATIVI
sommario
INTRODUZIUONE SISTEMA OPERATIVO
Un sistema operativo (abbreviato in SO, in inglese OS),
in informatica, è un software di base, detto anche piattaforma operativa
(composto normalmente da più sottosistemi o componenti software:
kernel, scheduler, file system, gestore della memoria,
gestore delle periferiche, interfaccia utente e spooler di stampa),
che gestisce le risorse hardware e software della macchina, fornendo servizi di base ai software applicativi;
tra i sistemi operativi per computer desktop si citano Microsoft Windows,
MacOS, le distribuzioni Linux, sistemi Unix-like, BSD e Chrome OS, mentre per i dispositivi mobili,
quali smartphone e tablet, vi sono iOS, Android, HarmonyOS, Windows Phone, Sailfish OS, Symbian OS e KaiOS.
Per il mondo server abbiamo Windows Server,IBM i,
varie distribuzioni specifiche Linux, MacOS Server.
vai a scheduler
vai a kernel
vai a file system
VAI A GESTIONE DELLA MEMORIA
VAI A GESTIONE DELLE PERIFERICHE
VAI A INTERFECCIA UTENTE
LA STRUTTURA DEL SISTEMA OPERATIVO
Puo essere il sistema operativo monoutente o multitsking:
monoutente: se un solo utente per volta può accedere alle risorse dell'elaboratore;
multitasking:se più utenti possono accedere alle risorse dell'elaboratore che a sua volta può essere:
- seriale sequenzialmente uno per volta
- parallelociascuno parallelamente agli altri
In generale, un sistema operativo è organizzato a diversi livelli, ognuno con compiti specifici
torna a sommario
kernel
- Un kernel è un gruppo di funzioni fondamentali, strettamente interconnesse fra loro e con l'hardware,
che vengono eseguite con il privilegio massimo disponibile sulla macchina: la modalità kernel designa proprio questo tipo di interazione;
un kernel non è altro che un software che ha il compito di fornire ai moduli che compongono il sistema operativo e
ai programmi in esecuzione sul computer le funzioni fondamentali ed un accesso controllato all'hardware,
sollevandoli dai dettagli della sua gestione; esso fornisce dunque le funzionalità di base per tutte le altre componenti del sistema operativo,
che assolvono le loro funzioni servendosi dei servizi che esso offre ed è dunque il motore o core di un sistema operativo.
seconda del tipo di sistema operativo il kernel può inglobare altre parti (kernel classico, monolitico o modulare) o fornire solo funzioni base delegando più funzioni possibile a oggetti/gestori esterni (microkernel).
Un kernel tradizionale, ovvero monolitico e altri, integra invece dentro di sé la gestione della memoria virtuale, la cpu, lo scheduler e i gestori di file system, nonché i driver necessari per il controllo di tutte le periferiche collegate.
Quali funzioni sia opportuno che il kernel debba fornire e quali possano essere demandate a moduli esterni è oggetto di opinioni divergenti:
se il kernel di un sistema operativo implementa soltanto un numero molto ristretto di funzioni, delegando il resto ad altre parti esterne dette server o moduli in comunicazione con il kernel stesso, si parla di microkernel.
Il vantaggio di un siffatto sistema operativo è la maggiore semplicità del suo kernel, del suo sviluppo, la possibilità di cambiare facilmente i moduli e una certa tolleranza ai guasti in quanto se un modulo "crolla" (crash),
solo la funzionalità del modulo s'interrompe, ed il sistema rimane funzionale e gestibile dall'amministratore (che può ad esempio ripristinare la funzionalità del modulo stesso); lo svantaggio è invece l'interazione più complessa e costosa fra kernel e le altre componenti del SO stesso,
che spesso rallenta il sistema e/o lo rende meno stabile.
Questo tipo di kernel è più complesso da progettare, mantenere ed aggiornare, ma è anche più veloce, efficiente e stabile.
Una sua evoluzione è costituita dai kernel "modulari", che mantengono al loro interno lo scheduler e i gestori di file system e memoria virtuale ma separano alcune funzioni non essenziali in moduli a sé stanti, da caricare in memoria solo in caso di effettivo uso della funzione o periferica di loro competenza.
torna a sommario
SCHEDULER
- Lo scheduler è il componente fondamentale dei sistemi operativi multitasking,
cioè quelli in grado di eseguire più processi contemporaneamente (va inteso simbolicamente.
In realtà non c'è una gestione parallela dei processi ma avviene in sequenza,
i tempi sono talmente brevi che all'utente sembrerà che i programmi vadano contemporaneamente).
Lo scheduler si occupa di fare avanzare un processo interrompendone temporaneamente un altro,
realizzando così un cambiamento di contesto (context switch).
Generalmente computer con un processore sono in grado di eseguire un programma per volta,
quindi per poter far convivere più task è necessario usare lo scheduler.
Esistono vari algoritmi di scheduling che permettono di scegliere nella maniera più efficiente possibile quale processo far proseguire.
I migliori scheduler hanno di complessità O(1
torna a sommario
FILE SYSTEM
- l file system si occupa dunque di esaudire le richieste di accesso alle memorie di massa.
Viene utilizzato ogni volta che si accede a un file sul disco, e oltre a fornire i dati richiesti tiene traccia dei file aperti
dei permessi di accesso ai file. Inoltre si occupa anche e soprattutto dell'astrazione logica dei dati memorizzati sul computer (directory, ecc).
torna a sommario
GESTORE DELLA MEMORIA
- l gestore di memoria è la componente del sistema operativo che si occupa di gestire ed assegnare la memoria primaria ai processi che ne fanno richiesta immediatamente prima dell'elaborazione.
La gestione della memoria è necessaria anche per tenere traccia di quanta memoria è impegnata e di quanta invece è disponibile per soddisfare nuove richieste: in mancanza di un sistema di gestione,
si avrebbe prima o poi il caso nefasto di processi che ne sovrascrivono altri,
con gli ovvi inconvenienti. Esso è eseguito dal MMU (Memory Management Unit) che alloca la memoria primaria richiesta dai programmi e dal sistema operativo stesso,
salva sulla memoria di massa le zone di memoria temporaneamente non usate dai programmi (memoria virtuale) e garantisce che le pagine swappate vengano riportate in memoria se richieste
GESTIONE DELLE PERIFERICHE
- a gestione dell'input/output ovvero delle periferiche di sistema è attuata attraverso il meccanismo dell'interrupt
da parte delle periferiche stesse che chiamano in causa il sistema operativo
il quale opererà un cambiamento di contesto (context switch)
all'interno del ciclo del processore assegnando al processore il compito di input/output richiesto.
Un'altra modalità tipica di gestione delle periferiche, alternativa agli interrupt, è il polling.
torna a sommario
INTERFACCIA UTENTE
- secondo passo verso una migliore gestione del computer si ha con lo sviluppo di un'interfaccia utente separata dal kernel,
un interprete di comandi che funzioni anche da interfaccia utente ovvero da Shell. Questa shell primitiva di solito funge anche da interprete per un linguaggio di programmazione:
a seconda delle scelte dei progettisti del software può essere un vero linguaggio oppure un più semplice linguaggio di scripting con cui creare comandi batch. Era il tipico sistema operativo degli home computer degli anni 80, come il Commodore 64 e il Sinclair ZX Spectrum. L'interfaccia utente permette dunque all'utente di interagire con il computer. Esistono sostanzialmente due famiglie di interfacce utente:
interfaccia a riga di comando e interfacce grafiche che forniscono, ad esempio, una scrivan
torna a sommario
SPOOLER DI STAMPA
- Lo spooler di stampa è stato storicamente il primo modulo esterno del sistema operativo ad essere implementato,
per risolvere il problema della gestione delle stampe su carta. Infatti, essendo le stampanti elettromeccaniche dei dispositivi molto lenti,
i primi programmi per elaboratore dovevano necessariamente sprecare molto tempo di CPU, estremamente prezioso all'epoca,
per controllare la stampante ed inviarle i dati. Riceve dunque dai programmi i dati da stampare e li stampa in successione,
permettendo ai programmi di proseguire senza dover attendere la fine del processo di stampa.
torna a sommario