Guida Protezione dei file & gestione della memoria paginata (S.O.)

Stato
Discussione chiusa ad ulteriori risposte.

syscall

Utente Emerald
21 Settembre 2013
683
43
581
475
Ultima modifica da un moderatore:
Salve popolo di inforge :rulz:,

eccoci qui finalmente per chiudere l'argomentone "teoria dei sistemi operativi" iniziato circa una settimana fa.
Troverete tutte le guide all'interno della sezione Informatica Zone del forum di inforge.

Se sei un utente esterno al forum e sei arrivato qui tramite google o qualsiasi altro motore di ricerca non preoccuparti, alla fine di questo post troverai l'elenco completo di tutti gli argomenti trattati, scritti con un preciso ordine di lettura da seguire.

In realta' gli argomenti da trattare, per completare il tutto, sono due, ovvero la protezione dei file e la gestione della memoria paginata. Poiche' comunque reputo che per il primo dei due non ci sia un "poemone" da scrivere e' inutile fare due post separati, scriveremo quindi "all in one", e chissene del counter dei messaggi, il mio intento e' solo quello di favorire la conoscenza ed alimentare la vostra irrefrenabile, si spera, fame di sapere, null'altro!

Ringrazio comunque tutti coloro che mi hanno inviato mp apprezzando l'argomento, ma vi ricordo che tutte le varie guide che ho scritto in merito all'argomento, non sono "la bibbia perfetta", ma vogliono solo essere un buon punto d'inizio per coloro che vogliano approfondire argomenti strettamente legati al mondo dell'informatica e dell'hacking. Si', perche' per discutere di argomenti specifici e "tosti" bisogna comunque avere delle solide basi, non si puo' cercare di studiare tutto alla cieca e senza un minimo di conoscenza, poiche' altrimenti si rischia di non capirci piu' nulla e, di conseguenza, abbandonare la propria idea di studio e di voglia di sapere ancor prima di iniziare!

Ma bando alle ciance, iniziamo subito con il primo dei due argomenti presenti in questo thread, ovvero: la protezione dei file!

Diciamo subito che un sistema di calcolo e' un sistema di processi ed oggetti.
Quest'ultimi sono fisici, come ad esempio la CPU, la memoria; oppure logici, come file o programmi e, vanno protetti contro possibili abusi per svariati motivi che adesso illustreremo:

- Prevenire le violazioni intenzioni e dannose di un vincolo d'accesso da parte di un utente;
- Assicurarsi che ogni processo adoperi le risorse seguendo specifici criteri;

Un processo deve poter accedere SOLO a quelle risorse strettamente necessarie allo svolgimento di un determinato compito.
Tale modo di operare viene chiamato "principio del minimo privilegio" (Principio del privilegio minimo - Wikipedia)

Per realizzare tutto cio', si specifica un "dominio di protezione", all'interno del quale il processo opera. Il dominio e' l'insieme di tutti i "diritti d'accesso", ciascuno dei quali composto da una coppia ordinata (nome oggetto, insieme dei diritti).

L'associazione tra un processo e un dominio puo' essere:

- Statica, le risorse disponibili per un processo rimangono tali per tutta la sua durata;
- Dinamica, le risorse vengono associate a un processo dinamicamente, in modo che il dominio rifletta sempre i minimi diritti d'accesso necessari.

Un modello di protezione generale e' rappresentato mediante la matrice degli accessi, dove le righe rappresentano i domini, e le colonne gli oggetti.
Sulla matrice si puo' realizzare sia l'associazione statica, sia quella dinamica e la tabella puo' essere realizzata con una:

- Tabella globale, contiene elementi tipo (dominio, oggetto, insieme dei diritti). Qualora fosse troppo grande da essere contenuta in memoria centrale, si ricorre ad operazioni di tipo I/O.

- Access control list, si crea una lista di permessi associata a un dominio. Questa lista non sara' mai accessibile da un processo ma verra' controllata da sistema operativo e permette di accedere agli utenti indirettamente.

- Meccanismo chiave/serratura, ogni oggetto ha una serie di "serrature" (sequenza unica di bit), e ogni dominio ha una lista di "chiavi".
Un processo potra' accedere ad un oggetto solo se il dominio in cui e' in esecuzione corrisponde a una delle serrature dell'oggetto.

Quueste tecniche di protezione solo solitamente implementate a livello kernel del sistema operativo.

In genere, un programma, risiede in un disco in forma di un file binario eseguibile e, affinche' possa essere messo in esecuzione, deve essere caricato in memoria centrale. Iniziamo quindi a scrivere di gestione della memoria paginata!

Compito del sistema operativo, piu' precisamente di un componento di esso, cioe' il "gestore della memoria", e' definire quello che viene chiamato "Mapping", e che consiste in una traduzione con la quale si fa corrispondere, ad ogni indirizzo logico generato da un processo, un indirizzo fisico della memoria centrale.

La forma piu' rudimentale di gestione della memoria, crea staticamente all'avvio del sistema due partizioni assegnate rispettivamente al sistema operativo ed ai processi.

L'area non assegnata al sistema operativo puo' essere occupata da un solo processo, oppure divisa in partizioni di dimensione fissa ma non tutte uguali!

Ogni partizione contiene un unico processo e il numero di partizioni determinera' il grado di multiprogrammazione.
Con il partizionamento dinamico, il S.O., conserva una tabella nella quale saranno indicate le partizioni di memoria disponibili e quelle occupate, con relative dimensioni.

Pur dando la possibilita' di ospitare piu' processi in memoria centrale proteggendone lo spazio di ciascuno, il partizionamento, oggi, non e' piu usato, poiche' il grado di multiprogrammazione e' limitato dal numero di partizioni previste e non e' in grado di aumentare lo spazio per ciascuno processo. Inoltre potrebbe presentare problemi di frammentazioni della memoria.

Una tecnica che, invece, a differenza del partizionamento, preveda la possibilita' di aumentare la quantita' di memoria centrale a disposizione di un processo, e' l'"overlaying" (googlate per ulteriori info).

L'overlaying permette a un processo di avere uno spazio di indirizzamento logico piu' grande della memoria centrale fisica ad esso allocata, caricando in memoria centrale fisica solo la porzione di spazio logico necessario per la computazione nell'immediato futuro.

Un'altra tecnica e' quella dello swapping che tende a mantenere in memoria centrale solo quei processi che potranno evolvere nella computazione. (Swap (informatica) - Wikipedia)

Il suo scopo e' quello di liberare la memoria centrale fisica da tutti quei processi che si trovino nello stato di "wait", salvando in memoria temporanea i dati globali, lo heap e lo stack.

La paginazione fonde gli obiettivi delle tecniche appena elencate, infatti permette di:

- caricare e scaricare piccole porzioni di memoria garantendo velocita' di swapping;
- mantenere in memoria centrale solo le porzioni del processo necessarie nell'immediato futuro, garantendo minima occupazione della memoria centrale;
- indipendenza dal programmatore per garantire correttezza, sicurezza ed equita' di gestione.

Per conseguire questi obiettivi, la memoria centrale fisica viene suddivisa in pagine fisiche, dette "frame", mentre lo spazio di indirizzamento del processo e' diviso in pagine logiche, di dimensioni identiche alle pagine fisiche.

La loro corrispondenza viene definita dalla tabella delle pagine di un processo e la gestione della paginazione avviene attraverso il supporto di hardware dedicato, conosciuto come Memory Management Unit (MMU - Memory management unit - Wikipedia), che contiene la tabella delle pagine e si occupa dela traduzione dell'indirizzo logico in indirizzo fisico.

Vi e' pero' un aspetto critico nella realizzazione della paginazione, ovvero la gestione di tabelle di pagine di grandi dimensioni. In questo caso la tabella non potra' essere contenuta solo dalla MMU.

Per ovviare a questo problema possono essere adottate alcune tecniche:

1) Si utilizza un buffer nel quale verranno caricate le ultime pagine a cui si e' fatto accesso.
Se la pagina non e' in memoria ausiliaria verra' effettuato l'accesso alla tabella delle pagine poste in memoria centrale.

2) La tabella gerarchica, che sfrutta la localita' dei processi, ovvero, permette di operare solo su determinate porzioni di memoria.

La tabella delle pagine viene suddivisa in pagine piu' piccole, in modo da collocare nella MMU solo la porzione di pagina necessaria.

3) La tabella delle pagine con hashing, che usa il numero della pagina logica come argomento di una funzione di hash al fine di estrarre dalla tabella di hashing un elemento contenente l'associazione tra numero di pagina logica e fisica.
In caso di collisione, questi risulteranno posti in una lista che verra' scandita sino a trovare il numero di pagina logica corrispondente a quello desiderato, per poi estrarre il valore di pagina fisica corrispondente da utilizzare in congiunzione con lo spiazzamento per generare l'indirizzo fisico.

In un ambiente paginato, la protezione della memoria e' implicita nella tabella delle pagine, poiche' ogni processo puo' accedere solo alle sue pagine!

Per maggior protezione si possono aggiungere dei bit di protezione che potranno determinare se leggere e scrivere, o soltanto leggere o solamente scrivere. Inoltre ancora, e concludo, un altro vantaggio della paginazione consiste nella possibilita' di condividere codice comune.

Vi invito comunque a consultare questo testo per approfondire maggiormente quanto appena detto sulla memoria paginata: QUI

Come promesso inizialmente rendiamo disponibili l'elenco di tutti gli argomenti trattati in questa sorta di breve panoramica di teoria dei sistemi operativi:

- http://www.inforge.net/community/in...-introduzione-all-architettura-di-un-s-o.html
- http://www.inforge.net/community/informatica-zone/364352-guida-comunicazione-tra-processi-s-o.html
- http://www.inforge.net/community/in...uida-la-schedulazione-del-processore-s-o.html
- http://www.inforge.net/community/in...a-cooperazione-tra-processi-deadlock-s-o.html
- http://www.inforge.net/community/informatica-zone/364858-guida-i-sistemi-di-i-o-s-o.html
- http://www.inforge.net/community/informatica-zone/364952-guida-gestione-delle-periferiche-s-o.html
- http://www.inforge.net/community/in...os-e-file-system-di-un-sistema-operativo.html
- http://www.inforge.net/community/informatica-zone/365108-guida-la-memoria-virtuale-s-o.html
- http://www.inforge.net/community/in...file-gestione-della-memoria-paginata-s-o.html

Tutte le guide sono volutamente scritte in maniera molto discorsiva e senza troppi fronzoli, come se ci si stesse parlando faccia a faccia quindi, evitando di proposito quella parte "visuale" con immagini che dovrebbe esser rappresentata dall'astrazione degli argomenti trattati che dovrebbe essere gia' nella testa di un informatico o comunque di un appassionato di informatica che ha un approccio con simili argomenti.

All'interno di ogni post ho comunque inserito molte note e collegamenti esterni che spesso contengono delle grafiche di componenti, e dei diagrammi per facilitare la comprensione di alcuni concetti comunque astratti.

Vi ricordo, come sempre, che e' comunque molto utile approfondire i singoli argomenti trattati in ogni post, se non trovate abbastanza materiale in rete o non lo reputate abbastanza ordinato mandatemi un messaggio privato e saro' ben lieto di fornirvi tutte le slide e tutto il materiale di cui avrete bisogno al fine di approfondire o capire meglio uno specifico argomento, dal piu' complesso al piu' semplice e banale.
f06s7n.png
Ciao, ciao o/ e grazie per l'attenzione ;)
 
  • Mi piace
Reazioni: 11alex9906 e Asahi
Visto che ormai la serie di guide è conclusa non si potrebbe fare un topic che contiene tutti i link (magari con una piccola prefazione) e metterlo in rilievo? È un peccato che tutte queste guide vadano perse in mezzo al forum.
I mod di sezione chi sono?
 
Ciao, si',
come ho scritto all'interno di una delle tante, la mia idea era proprio questa, se mi si da l'ok da un moderatore creo un post apposito con una breve introduzione e tutti i link per accedere ai singoli argomenti in modo semplice e diretto, senza star li a cercarseli uno ad uno, anche se ho comunque tentato di correlare il piu' possibile i vari argomenti all'interno dei singoli post!

Chiedo perche' appunto come dici tu, qualora non venisse messo in rilievo, l'utilita' sarebbe dimezzata poiche' comunque anche quest'ultimo andrebbe a finire chissa' in quale pagina, col tempo... ;)

Ciao, ciao e grazie per l'interessamento o/
 
Stato
Discussione chiusa ad ulteriori risposte.