[FONDAMENTI di Sistemi Operativi] 2 - Meccanismi di protezione

Qualsiasi argomento riguardante il proprio pc, da problemi hardware a consigli
Avatar utente
darkmod
Utente
Messaggi: 16
Iscritto il: 05/01/2015, 11:30

[FONDAMENTI di Sistemi Operativi] 2 - Meccanismi di protezione

Messaggio da darkmod »

Come già detto nel thread precedente, il CPU burst è l'intervallo di tempo dedicato al processo per essere elaborato dalla CPU. Consapevoli del fatto che i processi hanno ragion di esistere proprio per essere dati in pasto all'unità centrale di elaborazione, sono di notevole importanza diversi meccanismi che consentono la sostituzione dell'attuale processo in esecuzione. Fondamentali perchè il processore dovrà evitare l'esecuzione di istruzioni dovute ad utenti/processi non autorizzati. Il particolare stato del sistema operativo (OS) durante il quale avviene il cambiamento del processo in esecuzione sulla CPU prende il nome di
Context Switch.

Ci chiediamo in modo abbastanza scontato: come agisce la CPU per proteggersi da tali accessi non autorizzati? Esistono 3 diversi approcci...
  1. Protezione in base al tempo
  2. Protezione in base alla RAM
  3. Protezione in base alle istruzioni privilegiate e modalità duale
Protezione in base al tempo:
E' realizzabile solo nel caso in cui vi sia un dispositivo temporizzatore a disposizione della CPU. In altre parole deve esistere un contatore di decremento. Quando quest'ultimo arriva a zero viene lanciata una eccezione e di conseguenza il processo smette di essere elaborato, si crea quindi una sorta di interavallo temporale all'interno del quale è possibile eseguire il processo. Al di fuori di tale intervallo qualsiasi altra istruzione dello stesso, non verrà più elaborata.

Protezione in base alla RAM:
In tal caso la situazione è un pò più complicata in quanto è necessario introdurre alcuni concetti fondamentali riguardanti la determinazione dell'indirizzo fisico a partire da quello logico all'interno della memoria. Ritengo dunque necessario dare una piccola spiegazione riguardante tale argomento per poi definire in modo opportuno il meccanismo di protezione basato sull'utilizzo della memoria RAM.

Tutti i programmi/processi utilizzano un indirizzamento relativo ovvero non sfruttano indirizzi di memoria fissi perché in qualsiasi momento potrebbe essere opportuno eseguire qualche istruzione che non appartiene a quel programma ma bensì ad un altro (sistema concorrente).

Immagine

Nell'immagine appena sopra è possibile notare sia il metodo di assegnazione dell'indirizzo fisico a partire da quello logico, sia il meccanismo di protezione basato sulla RAM (vedi limite). A destra della stessa immagine è anche presente una tabella, ma andiamo per gradi e analizziamo tutti gli aspetti...

L'indirizzo fisico come già detto in precedenza, viene ricavato da quello logico una volta che è stato sommato alla base. Quest'ultima altro non è che il primo indirizzo di memoria utile che può essere assegnato ad un determinato processo. Nel diagramma viene anche effettuato un controllo che da ora in poi indicheremo sempre con un rombo in questi schemi. Tale controllo viene fatto prendendo in considerazione il limite ovvero l'ultimo indirizzo di memoria che può essere sfruttato dal processo in esame. Se l'indirizzo logico è minore o uguale al limite tutto procede in modo regolare al fine di determinare l'indirizzo fisico, in caso contrario il processo viene escluso dall'elaborazione da parte della CPU. Quello appena descritto è il meccanismo che si trova alla base del metodo di protezione che implica l'utilizzo della memoria RAM. Al fine di comprendere al meglio tale funzionamento possiamo fare un paragone con il meccanismo di protezione basato sul tempo, infatti in quest'ultimo veniva assegnato un determinato intervallo di tempo utile al processo per essere elaborato, mentre nel caso della protezione basata su RAM viene assegnata una porzione di memoria utile al processo stesso. La tavola sul lato destro della figura prende il nome di tabella di allocazione della memoria dove ogni processo oltre ad essere identificato dal PID (process identifier), presenta quella che è la sua base e il suo limite. I processi sono stati indicati con la lettera P iniziale (per comodità) ma in realtà vengono rappresentati con l'utilizzo di interi.
Se avete Windows fate CTRL+ALT+CANC per verificare
:)

Protezione in base alle istruzioni privilegiate e modalità duale:
La CPU può trovarsi in diversi stati, ogni stato è identificato da una serie di bit. Dunque in base alle operazioni che deve eseguire l'unità centrale, essa salta da uno stato all'altro. Ogni CPU ha n bit di memoria disponibili per gli stati, quindi può trovarsi esattamente in 2^n stati differenti. Tra questi, al fine di spiegare (spero) al meglio il meccanismo di protezione basato sulle istruzioni privilegiate consideriamo gli stati seguenti:
  • Modalità utente (operazioni privilegiate proibite)
  • Stato supervisivo (operazioni privilegiate consentite)
Ognuno degli stati precedenti è caratterizzato da un bit di modo (0/1), la sua variazione rientra tra quelle che sono le istruzioni eseguibili con determinati privilegi.

Ma come funziona nello specifico?
Il tutto si basa sull'utilizzo delle trappole ovvero sulla creazione di zone che circondano uno o più stati privilegiati. Quando la CPU tra un "salto e l'altro" entra nella trappola, il corrispondente processo viene immediatamente interrotto. A titolo di esempio una istruzione privilegiata è una qualsiasi istruzione che richiede l'accesso all'hardware.

Allora come si riesce ad eseguire comunque una istruzione privilegiata da parte di un utente?
Esegui come amministratore? Direi di si!
:)

Nello specifico si opera la cosiddetta chiamata a sistema (System Call).
Quest'ultima consente:
  • Tutti gli accessi alle risorse HW
  • Tutte le operazioni di controllo dei processi
  • Tutte le richieste di rilascio delle risorse
E' importante precisare che chi esegue tale funzione non è l'utente ma il sistema stesso o meglio un modulo fidato di quest'ultimo. L'utente ha esclusivamente il compito di passare i parametri della funzione relativi all'operazione privilegiata che effettivamente si vuole eseguire. Risulta banale ma opportuno da precisare, che la variazione del bit di modo che consente l'esecuzione di istruzioni con privilegi viene operata dal sistema.

Immagine

Torna a “Computer e dintorni”