Docente: Giuseppe Scollo
Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2008-9
alcune categorie di programmi presentano problemi specifici di sicurezza che hanno rilevanza critica, perché da essi dipende la sicurezza di (molti) altri programmi e dati
esempi precipui di tali categorie di programmi:
studiamo la sicurezza nei sistemi operativi in due stadi successivi, corrispondenti a due diversi punti di vista:
i sistemi operativi odierni supportano multiprogrammazione e time sharing delle risorse fra più utenti:
multiprogrammazione e time sharing hanno dato origine alla necessità di protezione di varie categorie di risorse da parte di un sistema operativo, delle quali esso deve permettere una condivisione controllata:
il principio alla base della protezione è la separazione degli oggetti di un utente da quelli degli altri utenti (e del sistema); la separazione può essere:
in ordine di complessità crescente, rigidità decrescente, e per le prime tre di sicurezza decrescente
i metodi di protezione offerti dal sistema operativo sono inoltre, e ortogonalmente, da classificare in base al supporto che forniscono alla condivisione di oggetti:
problema: confinamento delle azioni di ciascun programma alla propria area di memoria
soluzioni: di vario tipo, tutte dotate di supporto hardware; eccone alcune, in ordine di complessità crescente e rigidità decrescente:
l'uso di registri di base e di confine per la protezione della memoria, sebbene sia efficace, limita la condivisione di dati fra programmi in esecuzione
l'architettura con etichetta (ingl. tagged architecture) permette forme più articolate di condivisione, in quanto ogni parola di memoria è dotata di uno o più bit di etichetta, il cui valore ne specifica i diritti di accesso
in alcune varianti si è adoperata un'etichetta per un blocco contiguo di indirizzi
normali, contenenti istruzioni o dati, da parole
speciali, che codificano i diritti di accesso per il susseguente blocco di parole normali
le architetture con etichetta non hanno avuto molta diffusione, per problemi di compatibilità con codice già sviluppato, e perché superate dagli approcci descritti appresso
segmentazione: suddivisione del programma in segmenti, ciascuno dei quali è una sua unità logica (un sottoprogramma, una struttura dati, etc.) e ha memorizzazione contigua
la segmentazione può dividere un programma in parti con diritti di accesso diversi
altri vantaggi della segmentazione:
paginazione: suddivisione del programma in pagine di lunghezza fissa, indipendenti dal contenuto logico
i vantaggi della segmentazione e della paginazione possono essere combinati, ad es. con la paginazione sulla segmentazione, che alloca pagine di memoria a segmenti di programma