vuoi
o PayPal
tutte le volte che vuoi
(SO)
all'accensione di un computer
Ne esistono di diverse tipologie:
SO per i desktop SO per i server SO per i SO per SO "embedded"
mainframe smartphone e
tablet
- - - - -
Windows Windows Open MVS iOS Linux
Server
- - - -
Mac OS X VMS Android Android
- OS/2 embedded
- -
DOS HarmonyOS
- UNIX
- Linux - Linux
-
Meno potenti e Sicuri e portabili Software Interfaccia touch Per
proprietario in
af dabili elettrodomesticipi
genere ccoli, apparecchi
e, ormai, nelle
automobili
Sono i più diffusi Sono pensati per Ogni azienda ha
prodotto un suo
la gestione s.o., rendendo la
multitasking e comunicazione
multithreading di tra elaboratori
applicazioni molto complessa.
mission-critical 3
 fi fi fi
• Sistema operativo = rappresenta un insieme di software progettato per fornire
all'utente una gamma di comandi e servizi, consentendo l'ottimizzazione delle
capacità di calcolo di qualsiasi dispositivo elettronico.
La sua è quella di nascondere i dettagli tecnici speci ci
funzione primaria
dell'hardware e dell'architettura, presentando le informazioni a un livello più
comprensibile per l’utente.
Il sistema operativo:
- assicura il funzionamento di base di un calcolatore coordinando e gestendo
risorse hardware (es. il processore e la memoria primaria), nonché le periferiche
e le attività software (processi)
- svolge il ruolo cruciale di interfaccia con l'utente, senza la quale l'utilizzo del
computer e dei programmi speci ci (es. applicazioni o librerie software) sarebbe
impraticabile
- è il componente chiave che si interpone tra l'utente e la macchina
- costituisce una fondamentale piattaforma su cui si basano gli altri software, i
quali devono essere progettati e implementati in modo da essere riconosciuti e
supportati da quel particolare sistema operativo.
• Piattaforma del sistema di elaborazione = è costituita dal sistema operativo
correlato al processore.
Un sistema operativo può essere:
- monoutente→ se un solo utente per volta può accedere alle risorse
dell'elaboratore
- multiutente→ se più utenti possono accedere alle risorse dell'elaboratore che a
sua volta può essere:
sequenzialmente uno per volta
⟹seriale, ciascuno parallelamente agli altri
⟹parallelo,
- monotasking→ se in grado di eseguire un solo compito o task (processo) alla
volta
- multitasking o multithreading→ se in grado di svolgere più compiti o sottocompiti
parallelamente attraverso una certa politica di scheduling (es. timesharing)
- portabile o meno su differenti architetture hardware di processori
La maggior parte dei sistemi operativi moderni per PC è multiutente, multitasking
e portabile. 4
 fi fi
In una de nizione più rigorosa, il sistema operativo assume la responsabilità di
diverse funzioni e strutture dati, tra cui:
- controllo e gestione delle risorse di sistema, comprese la CPU e la memoria
primaria, e delle componenti hardware del computer, gestendo i processi di
Input/Output da e verso le periferiche collegate al sistema.
- esecuzione dei programmi, che vengono de niti come entità passive, dai quali
emergono i processi (considerati entità attive)➜ i processi vengono eseguiti,
assegnando loro le risorse necessarie per il progresso delle loro attività.
Nel caso in cui il sistema di elaborazione preveda la memorizzazione aggiuntiva dei
dati su memoria di massa, come nei computer general purpose, il sistema
operativo si occupa anche di:
- gestione dell'archiviazione e dell'accesso ai le➜ i programmi possono gestire
l'archiviazione dei dati su memoria di massa, ad esempio creando strutture
complesse come una base di dati, utilizzando le procedure messe a disposizione
dal sistema operativo. Questa componente è comunemente chiamata le
system.
In ne, se è prevista l'interazione con l'utente, si fa spesso uso di un'interfaccia
utente (sia gra ca che testuale) per accedere alle risorse hardware del sistema,
come dischi, memoria e 1/0 in generale.
Inoltre, un sistema operativo può essere impiegato anche su macchine senza
interazione diretta con un essere umano, come ad esempio smart card o
determinati sistemi embedded, spesso più leggeri e sempli cati.
Tipicamente, un sistema operativo installato su un computer fornisce anche
applicazioni di base per svolgere varie elaborazioni.
Nonostante molte delle funzionalità sopra menzionate non siano sempre
immediatamente visibili o percepibili dall'utente, l'importanza del sistema operativo
in un calcolatore è cruciale.
Oltre a gestire le funzionalità di base, il sistema operativo in uenza
signi cativamente l'ef cienza e gran parte delle prestazioni operative complessive
del sistema, ad esempio in termini di latenze di processamento, stabilità e
prevenzione di interruzioni o crash del sistema.
Un sistema operativo moderno tipico è costituito da diverse componenti standard,
caratterizzate da una de nizione più o meno precisa:
- Kernel
- Scheduler 5
 fi fi fi fi fi fi fi fi fi fl fi
- Gestore delle periferiche
- Gestore della memoria
- File system
- Interfaccia utente
- Spooler di stampa
Kernel
Il kernel rappresenta un insieme di funzioni fondamentali strettamente
interconnesse tra loro e con l'hardware, operanti con il massimo privilegio
disponibile sulla macchina.
• Kernel = è un software dedicato a fornire ai moduli costituenti il sistema operativo
e ai programmi in esecuzione sul computer le funzioni essenziali e un accesso
controllato all’hardware. Esso funge da motore o nucleo centrale del sistema
operativo.
Tale approccio solleva tali elementi dai dettagli della gestione hardware, offrendo le
funzionalità di base necessarie per tutte le altre componenti del sistema operativo.
Scheduler
• Scheduler = costituisce il componente essenziale dei sistemi operativi
multitasking, che sono in grado di gestire simultaneamente più processi.
Questo avviene in sequenza, ma con tempi così brevi che all'utente sembra che i
programmi siano in esecuzione contemporaneamente.
Avviene parzialmente in parallelo se il processore è multi-core.
La funzione principale dello scheduler è far progredire un processo,
interrompendone temporaneamente un altro e realizzando così un cambio di
contesto (context switch).
Poiché i computer con un singolo processore sono in grado di eseguire un solo
programma alla volta, l'uso dello scheduler è indispensabile per consentire la
coesistenza di più attività.
Esistono vari algoritmi di scheduling progettati per selezionare in modo ef ciente
quale processo far avanzare.
I processi non richiedono costantemente l'utilizzo della CPU➜ talvolta, anziché
eseguire istruzioni, si trovano in uno stato di attesa, aspettando dati da un le o
l'input dell'utente tramite la tastiera.
Di conseguenza, è teoricamente possibile utilizzare questi periodi di "inattività" per
eseguire altri programmi. 6
 fi fi
Questo concetto, emerso n dagli anni '50, si è concretizzato nei sistemi operativi
multitasking, che sono dotati di uno scheduler in grado di eseguire più processi
contemporaneamente.
Lo scheduler assegna a ciascun processo a turno l'uso della CPU, sospingendo
temporaneamente l'esecuzione di processi in attesa di eventi esterni, come
operazioni di lettura/scrittura su memoria di massa, stampa o input utente.
Dato che i sistemi multitasking devono gestire più processi contemporaneamente in
memoria centrale, richiedono una quantità maggiore di memoria rispetto a quelli
monotasking.
Inoltre, con la presenza di più processi attivi simultaneamente, il controllo delle
risorse hardware diventa una necessità essenziale.
L'implementazione del multitasking può avvenire principalmente in due modi:
- multitasking cooperativo→ i processi cedono spontaneamente il controllo al
sistema una volta completata la singola operazione in corso
- multitasking preemptive→ è lo scheduler a interrompere i processi allo scadere
del tempo assegnato, trasferendo il controllo da uno all'altro
Cooperative multitasking richiede minori risorse di calcolo, con ritardi minimi nella
commutazione dei task, e non richiede alcuna struttura hardware dedicata, rendendolo
adatto a implementazioni su qualsiasi calcolatore.
Tuttavia, è vulnerabile agli errori nei programmi, spesso causando il crollo dell'intero
sistema quando un processo si interrompe.
L'isolamento fra processi è limitato, ed è un modello spesso utilizzato in vecchi sistemi.
Preemptive multitasking richiede CPU con implementazioni hardware speci che,
inclusi livelli di privilegio per l'esecuzione del codice.
Poiché le interruzioni dei processi sono arbitrarie, il sistema operativo è costretto a salvare
la maggior parte dei registri della CPU al momento del cambio di task e a ricaricarli con
quelli del nuovo task, comportando un maggiore tempo di esecuzione.
Nonostante queste richieste aggiuntive, il preemptive multitasking offre una maggiore
sicurezza del sistema e una praticamente totale immunità dai crash causati da errori nei
programmi. È il modello adottato dai moderni sistemi operativi.
Gestore delle periferiche
• Meccanismo degli interrupt = effettua la gestione dell’input/output (periferiche
del sistema). In questo meccanismo, le periferiche stesse richiamano l'attenzione
del sistema operativo.
In questo processo, il sistema operativo esegue un cambiamento di contesto
(context switch) all'interno del ciclo del processore, assegnando al processore il
compito di gestire l'operazione di input/output richiesta dalla periferica coinvolta.
7
▶︎
▶︎
 fi fi
Questo meccanismo dinamico consente una gestione ef ciente delle periferiche,
permettendo al sistema operativo di rispondere tempestivamente alle richieste delle
periferiche.
• Polling = ulteriore modalità comune di gestione delle periferiche, alternativa agli
interrupt.
In questo caso, il sistema operativo, anziché attendere passivamente segnali dagli
interrupt, veri ca periodicamente lo stato delle periferiche mediante cicli di
interrogazione.
Quando rileva una periferica pronta, il sistema operativo effettua un context switch
per gestire l'operazione di input/output.
Il polling può comportare un utilizzo continuo della CPU, anche in situazioni in cui
non è richiesta alcuna attività da parte delle periferiche, potenzialmente generando