Un sistema dinamico complesso come un calcolatore è soggetto ad
errori, guasti e anomalie, che non è sempre possibile prevedere
e riconoscere in tempo.
Al SO è affidato il compito di conoscere i possibili errori hardware
e software che si possono verificare in un qualsiasi punto del sistema
(nella CPU, nella memoria, nei dispositivi di I/O e nei programmi
utente); inoltre il SO deve essere in grado di intercettare ogni
errore e di intraprendere (se possibile) unazione appropriata
per tentare di ripristinare il corretto funzionamento, cercando
di assicurare la consistenza dellelaborazione.
Un primo importante meccanismo di protezione adoperato da tutte
le moderne CPU è lhardware dual mode, che permette
di distinguere due diversi livelli di esecuzione delle istruzioni:
- user mode, che è la normale modalità di esecuzione per
i programmi utente,
- kernel mode, che è una modalità di esecuzione privilegiata
in cui è possibile eseguire delle particolari istruzioni (dette
appunto istruzioni privilegiate) che sono vietate in user
mode.
La CPU mantiene un bit di stato per verificare, istante per istante,
il suo livello di esecuzione.
Il cuore del SO, detto nucleo o kernel, è lunico
insieme di processi che possono eseguire in kernel mode e, quindi,
accedere alle istruzioni privilegiate.
Tutti gli altri programmi, sia utente che di sistema, vengono eseguiti
sempre in user mode.
Alcuni errori dei programmi utente possono essere rilevati dallhardware
e gestiti dal SO per mezzo del meccanismo delle trap (trappola):
se durante lesecuzione di un programma lhardware rileva
unoperazione non consentita (ad es. un tentativo di eseguire
unistruzione privilegiata in user mode), scatta una trap,
cioè il processo corrente viene interrotto e viene passato il controllo
al SO che si occupa di gestire opportunamente la situazione.
Poiché non tutti gli errori possono essere rilevati dallhardware,
il SO deve essere provvisto di strumenti software propri, preposti
alla protezione degli elementi vitali del sistema quali memoria,
CPU, dispositivi di I/O, etc.
Nei sistemi operativi multiuser, in cui più utenti possono
accedere contemporanemente ad un calcolatore, sono necessari degli
ulteriori meccanismi di protezione.
In UNIX e nei sistemi da esso derivati, ogni utente possiede un
proprio account, per accedere al quale deve identificarsi
(spesso si usa il termine loggarsi), cioè specificare allaccesso
il proprio nome di login e una password (entrambi
obbligatori).
In questo modo possono accedere alla macchina solo utenti registrati
dallamministatore di sistema (detto anche superuser),
impedendo lintrusione da parte di persone non autorizzate.
Affinché un sistema multiprogrammato funzioni correttamente, bisogna
predisporre dei meccanismi di protezione per difendere le risorse
utilizzate dai vari processi in esecuzione e il SO stesso, da interazioni
indesiderate, attacchi o danneggiamenti (volontari o no) da parte
di altri processi.
Ogni SO può utilizzare un proprio modello di protezione per stabilire
chi può accedere a cosa, utilizzando i processi come soggetti il
cui potere di interferenza viene limitato con meccanismi di vario
tipo.
Il file system può essere protetto associando ad ogni file dei diritti
di accesso, che consentano di controllare il modo in cui i veri
processi possono usare i file.
Un classico meccanismo di protezione dei file è quello usato da
UNIX, in cui i file hanno, tra gli attributi, dei bit di accesso,
che indicano come e se il file è accessibile dal proprietario, dagli
utenti appertenenti allo stesso gruppo del proprietario e da tutti
gli altri utenti del sistema.
Ritornendo con maggior dettaglio su questo argomento nel secondo
capitolo.
La memoria principale può essere protetta permettendone laccesso
solo tramite un chipset particolare, detto Memory Management
Unit o MMU, che confina gli accessi di ogni processo
ad un proprio spazio di indirizzamento logico, mappando tali indirizzi
logici nei corrispondenti indirizzi della memoria fisica, la cui
associazione è nota solo durante la rilocazione o lesecuzione
(dipendentemente dal tipo di gestione della memoria).
Il concetto di rilocazione verrà presentato e chiarito nelle parti
seguenti del corso.
La protezione della CPU viene solitamente realizzata tramite un
apposito gestore software che si occupa di assegnare e togliere
la CPU ai processi al momento giusto (secondo un algoritmo scelto
dai progettisti del sistema), impedendo che un processo possa accaparrarsi
indebitamente il processore impedendo od ostacolando lesecuzione
degli altri processi.
Per permettere operazioni di I/O sicure, esse vengono realizzate
tramite delle chiamate di sistema, che sono largomento
della prossima lezione.
Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet