Concetti Fondamentali di Gestione della Memoria, I/O e Sicurezza Informatica
Classificato in Informatica
Scritto il in
italiano con una dimensione di 25,36 KB
Gestione della Memoria Virtuale
1. Perché è necessario trovare i frammenti di una memoria contigua principale per l'esecuzione?
R. - Questo è reso possibile dalla combinazione di traduzione dinamica degli indirizzi e l'uso di tabella di pagina o segmento.
2. Che cosa è il thrashing?
R. - Si verifica quando un frammento viene espulso prima che venga utilizzato, richiedendo un ricaricamento quasi immediato (scambio continuo). Troppi scambi portano al thrashing.
3. Perché è importante il principio di località (prossimità) nella memoria virtuale?
R. - Per evitare il thrashing, cercando di indovinare i frammenti che verranno utilizzati a breve.
4. Qual è il ruolo del bit di modifica (o dirty bit) sia nella paginazione che nella segmentazione?
R. - Indica se la pagina (o il segmento) è stata modificata dall'ultimo caricamento.
5. Qual è il vantaggio di utilizzare un Translation Lookaside Buffer (TLB) avanzato?
R. - Serve come memoria cache per le voci della tabella di pagina, accelerando la traduzione degli indirizzi.
6. Quali sono gli obiettivi degli algoritmi di gestione della memoria?
R. - Cercare di minimizzare l'errore di memoria (page fault).
7. Qual è un modo per mantenere le pagine del sistema operativo di base senza che vengano sostituite?
R. - Block DM (presumibilmente si riferisce al blocco o blocco di memoria riservato al kernel).
8. Spiegare l'algoritmo Clock per la sostituzione delle pagine.
R. - Richiede di associare un bit di utilizzo aggiuntivo per ogni frame di memoria. Quando una pagina viene caricata per la prima volta, il bit di utilizzo viene azzerato (0). Quando si fa riferimento alla pagina, il bit viene impostato a 1. Quando è il momento di sostituire una pagina, si cerca il primo frame incontrato con il bit di utilizzo a 0 e lo si sostituisce. Durante questa ricerca, ogni bit di utilizzo che è 1 viene modificato a 0.
9. Quali criteri vengono utilizzati per determinare quali processi sono candidati alla sospensione (swapping out)?
R. - Quelli che hanno generato un page fault, o che necessitano di informazioni e/o risorse che non sono disponibili al momento.
10. Che supporto offre il processore per la gestione della memoria virtuale?
R. - Le interruzioni (interrupts).
GESTIONE DELLE I/O
1. In quale tecnica di I/O il processore deve verificare attivamente il completamento dell'operazione di I/O?
R. - Input/Output Programmato (Programmed I/O).
2. Spiegare i vantaggi del modulo Direct Memory Access (DMA) rispetto all'I/O programmato e all'I/O con interruzioni.
- Il DMA può prendere il controllo per trasferire dati da e verso la memoria tramite il bus di sistema.
- Il modulo DMA deve usare il bus solo quando il processore non ne ha bisogno.
- È possibile forzare il processore a sospendere temporaneamente il suo funzionamento; questo è chiamato furto di cicli (cycle stealing).
3. Cosa si intende quando si dice che il DMA"ruba cicl" al processore?
R. - Quando il DMA costringe il processore a sospendere temporaneamente la propria operazione per consentire il trasferimento dei dati.
4. Spiegare i due obiettivi della progettazione del servizio I/O.
- Efficienza: Evitare il collo di bottiglia che costituiscono le operazioni di I/O.
- Descrizione: Gestire tutti i dispositivi in modo uniforme. Utilizzare un approccio modulare gerarchico per la progettazione delle funzioni di I/O.
5. Quali sono le differenze tra il doppio buffer e il buffer circolare?
- Semplice: Orientato ai blocchi.
- Doppio: Orientato al flusso di dati.
- Circolare: Quando si utilizza più di due aree di memoria, si parla di memoria circolare.
6. Riferendosi al protocollo, quando si dice che è il modulo DMA a condurre realmente il trasferimento dei dati?
R. - Quando ci sono operazioni di I/O gestite con il modulo DMA.
7. Quali sono gli svantaggi della politica di pianificazione del disco basata sulla priorità? Quale tipo di richieste non è desiderabile?
R. - I processi più vecchi (o meno prioritari) possono attendere troppo a lungo. Non è raccomandato per sistemi di database che richiedono equità.
8. Quali sono le funzioni di RAID? Che tipo di applicazioni è conveniente?
R. - RAID (Redundant Array of Independent Disks) offre ridondanza e/o prestazioni:
- RAID 0: Non include ridondanza (solo striping). È utilizzato nei supercomputer per la velocità.
- RAID 1: La ridondanza si ottiene duplicando i dati (mirroring).
- RAID 2: Utilizza la tecnica di accesso con errore (error correction codes), coinvolgendo tutti i dischi nell'esecuzione dell'applicazione di I/O.
- RAID 3: Richiede solo 1 disco ridondante (per la parità).
- RAID 4: Tecnica di accesso indipendente (striping con disco di parità dedicato).
- RAID 6: Esegue 2 calcoli di parità separati memorizzati in blocchi su dischi diversi.
9. Spiegare come funziona la cache del disco.
R. - È un buffer situato nella memoria principale che memorizza i settori del disco. Quando arriva una richiesta per un settore specifico, si controlla prima la cache.
10. Quali algoritmi di sostituzione possono essere utilizzati per progettare la cache del disco? Perché?
R. - Si può usare l'algoritmo Least Frequently Used (LFU), ovvero il meno frequentemente usato sostituito. L'implementazione richiederebbe di associare un contatore a ogni blocco; ad ogni riferimento il conteggio viene incrementato. Quando è il momento di sostituire un blocco, quello con il valore più basso nel contatore sarà scelto.
Gestione dei File
1. Nominare tre requisiti minimi che devono essere soddisfatti dal sistema di gestione dei file (record).
- Ogni utente dovrebbe essere in grado di creare, cancellare e modificare i file.
- Ogni utente può avere l'accesso ai file controllato da altri utenti.
- Ogni utente può controllare quali tipi di accesso saranno consentiti ai loro file.
2. Quali sono le funzioni di base del supervisore di I/O?
R. - A questo livello, le strutture di controllo restano in carico della gestione dell'I/O con i dispositivi, la pianificazione e lo stato dei file. Si occupa della selezione del dispositivo su cui avverrà l'I/O a seconda del file selezionato. Si occupa anche dell'accesso a disco e nastro per garantire prestazioni ottimali. A questo livello vengono assegnati i buffer di I/O e riservata la memoria secondaria.
3. In quali casi i criteri di scelta per un'organizzazione di file sono opposti?
R. - Quando si accettano file di grandi dimensioni ma non si necessita di accesso rapido alle informazioni aggiornate, oppure quando si accettano file di grandi dimensioni ma non si necessita di accesso rapido alle informazioni o agli aggiornamenti.
4. Se si desidera accedere a un record specifico in un file sequenziale, come sarebbe la ricerca?
R. - L'accesso ai record è fatto tramite ricerca esaustiva (scansione sequenziale).
5. Cosa è più conveniente per creare un file di indice per l'accesso ai file sequenziali indicizzati?
R. - Un indice per supportare l'accesso casuale e un file di overflow.
6. Qual è la struttura organizzativa delle directory più comunemente utilizzata? Quali sono i suoi vantaggi rispetto ad altre strutture?
R. - La più usata è quella ad albero o gerarchica: una directory contiene altre directory, che a loro volta contengono file o altre directory utente. Minimizza la difficoltà di assegnare nomi univoci.
7. Riguardo al raggruppamento di record, qual è la differenza tra blocchi a lunghezza variabile con sezioni e senza sezioni?
- Con sezioni: Una parte delle sezioni del record è occupata da un blocco.
- Senza sezioni: Il record non è sezionato in parti.
8. A cosa serve la tabella di allocazione dei file? Ha la stessa struttura per diversi file system? Perché?
R. - Viene utilizzata per registrare i blocchi assegnati a un file. Non ha la stessa struttura su diversi sistemi operativi (ad esempio, FAT è usato in Windows e Linux usa un altro modello).
9. Perché l'allocazione concatenata (chained allocation) non può applicare il principio di località?
R. - Poiché non c'è frammentazione esterna, la tabella di allocazione necessita solo della prima voce per ogni blocco di partenza del file.
10. Qual è una funzione fondamentale del sistema di gestione dei file?
R. - La gestione dello spazio su disco.
SISTEMI DISTRIBUITI
1. In un processo client/server, cosa offrono il client e il server?
R. - Un sistema DDP (Distributed Data Processing) che porta all'organizzazione distribuita di database, dispositivi di controllo e monitoraggio delle interazioni.
2. Nella comunicazione client/server, cosa è necessario che condividano entrambi?
R. - Sia il client che il server devono condividere gli stessi protocolli di comunicazione e supportare le stesse applicazioni.
3. Cosa è essenziale per il successo di un ambiente client-server?
R. - È fondamentale come il cliente interagisce con il sistema nel suo complesso.
4. Spiegare come è applicata la gestione dei database in uno schema client/server.
R. - Il server è fondamentalmente un server di database. L'interazione tra client e server avviene tramite transazioni. Il server è responsabile della manutenzione del database.
5. Quali sono le differenze tra il modello client/server basato su processo-server e quello basato su client?
- Processo basato su server: Tipo di configurazione client-server di base. Le workstation sono obbligate a fornire un'interfaccia grafica all'utente.
- Basato sul Cliente (Fat Client): La maggior parte del processo applicativo può essere eseguita sul client. Il server esegue procedure di convalida e il trattamento dei database.
6. Quali sono i vantaggi di utilizzare un client pesante (fat client)?
R. - Sfrutta maggiormente le risorse del computer desktop. Scarica il trattamento delle applicazioni sul client, rendendole più efficienti.
7. Quando si parla di coerenza nella cache dei file?
R. - Quando si utilizza un file server, le prestazioni dell'I/O possono degradarsi notevolmente. La coerenza si riferisce al fatto che la cache contenga copie esatte dei dati remoti.
8. Cosa si intende per middleware?
R. - Interfacce di programmazione standard e protocolli posti tra le applicazioni e il software di comunicazione e il sistema operativo.
9. Cosa hanno in comune i cluster e il multiprocessing simmetrico?
R. - Entrambi cercano di eseguire processi paralleli, ma il clustering è generalmente più complesso e potenzialmente più costoso (a seconda dell'implementazione).
10. Perché è necessario utilizzare RAID in alcuni metodi di clustering?
R. - Per ridurre il rischio di fallimento dovuto a un guasto del disco (aumentando la tolleranza ai guasti).
SICUREZZA
Tipi di Minacce
Generalmente vi è un flusso di informazioni da una fonte (ad esempio, un file o una regione di memoria principale) a una destinazione (ad esempio, un altro file o un utente). Esistono quattro categorie generali di minacce:
- Interruzione (Disruption)
- Intercettazione (Interception)
- Alterazione (Modification)
- Invenzione (Fabrication)
Interruzione: Un elemento di apparecchiatura viene distrutto o diventa inaccessibile o inutilizzabile. Questa è una minaccia alla disponibilità. Esempi includono la distruzione di un disco rigido, il taglio di una linea di comunicazione o la disattivazione del sistema di gestione file.
Intercettazione: Una parte non autorizzata ottiene l'accesso a un elemento. Questa è una minaccia alla riservatezza (privacy). La parte non autorizzata può essere una persona o un programma. Esempi includono l'intercettazione di collegamenti telefonici per acquisire dati da una rete e la copia illecita di file o programmi.
Alterazione: Un soggetto non autorizzato non solo ottiene l'accesso, ma travisa un elemento. Questa è una minaccia all'integrità. Esempi includono la modifica dei valori in un file di dati, la modifica di un programma per farlo comportare diversamente e la modifica del contenuto dei messaggi trasmessi attraverso una rete.
Invenzione: Una parte non autorizzata inserisce oggetti contraffatti nel sistema. Questa è anch'essa una minaccia all'integrità. Esempi includono l'inserimento di messaggi falsi su una rete o la registrazione non autorizzata di un file.
PROTEZIONE
L'introduzione della multiprogrammazione ha portato alla possibilità di condivisione delle risorse tra gli utenti. La condivisione è necessaria non solo per il processore, ma anche per:
- Memoria
- Dispositivi I/O (come dischi e stampanti)
- Programmi
- Dati
La possibilità di condividere risorse ha introdotto la necessità di protezione. Uno specifico sistema operativo può prevedere diversi livelli di protezione per diversi oggetti, utenti o applicazioni. È necessario che il sistema operativo bilanci la necessità di condividere (che aumenta l'utilità del sistema) con la necessità di tutelare le risorse dei singoli utenti.
Un sistema operativo può fornire protezione nei seguenti modi:
Livelli di Protezione
- Nessuna protezione: Caso in cui si eseguono procedure delicate in tempi diversi (esecuzione non concorrente).
- Isolamento: Ogni processo viene gestito separatamente dagli altri, senza condivisione o comunicazione. Ogni processo ha il proprio spazio indirizzi, file e altri oggetti.
- Condividi tutto o materia di credito: Il proprietario di un oggetto lo dichiara pubblico o privato. Nel caso di un file, ogni processo può accedervi. Nel caso di un segmento di memoria, solo il proprietario del processo può accedervi.
- Condividi con limitazione di accesso: Il sistema operativo controlla la licenza di ogni accesso utente specifico a un particolare oggetto. Il sistema operativo agisce come un guardiano o gatekeeper tra gli utenti e gli oggetti, garantendo che si verifichi solo l'accesso autorizzato.
- Condividi e capacità dinamica: Questa protezione estende il concetto di controllo di accesso, includendo la creazione dinamica di diritti di condivisione per gli oggetti.
- Uso limitato di un oggetto: Questa forma di tutela non solo limita l'accesso a un oggetto, ma anche il valore che può essere dedicato a tale oggetto. Ad esempio, si può consentire a un utente di visualizzare un documento sensibile, ma non di stamparlo, o di accedere a un database per elaborare statistiche, ma non per determinare valori specifici dei dati.
Protezione della Memoria
In un ambiente di multiprogrammazione, la protezione della memoria principale è critica, interessando la sicurezza e il corretto funzionamento dei vari processi attivi. Impedisce che un processo possa scrivere inavvertitamente nello spazio di memoria di un altro processo, il che potrebbe causarne un malfunzionamento.
La memoria virtuale è utilizzata per la separazione dello spazio di memoria dei vari processi. La segmentazione, la paginazione, o una loro combinazione, è uno strumento efficace di gestione della memoria principale.
Per l'isolamento totale, il sistema operativo garantisce che ogni segmento o ogni pagina sia accessibile solo al processo a cui è assegnato. Questo tipo di condivisione è meglio raggiunto in un sistema che supporta la segmentazione o una combinazione di segmentazione e paginazione.
Le misure adottate per controllare l'accesso ai sistemi di elaborazione dati possono essere raggruppate in due categorie:
- Quelle connesse con l'utente.
- Quelle associate ai dati.
Controllo di Accesso Orientato all'Utente
La tecnica usuale di controllo di accesso utente in un sistema time-sharing o un server è la connessione dell'utente, che richiede:
- ID (utente)
- Password.
Questo schema ID/password è un metodo di controllo di accesso utente poco affidabile. Il dialogo di collegamento dovrebbe avvenire attraverso un mezzo sicuro; altrimenti, l'ascoltatore diventa una potenziale minaccia.
In un ambiente distribuito, abbiamo due approcci al controllo degli accessi:
- Approccio centralizzato: La rete fornisce un servizio di shuttle (navetta) per determinare chi è autorizzato a usare la rete e a cosa è autorizzato a connettersi.
- Approccio decentrato: Il controllo di accesso decentralizzato considera la connessione di rete trasparente e la normale procedura di login è eseguita dal server di destinazione.
Controllo di Accesso Orientato ai Dati
In questo controllo di accesso, si associa a ciascun utente un profilo che specifica le operazioni e gli accessi ai file ammissibili. Il sistema operativo può applicare le regole in base al profilo utente.
Il sistema di gestione del database deve controllare l'accesso a determinati record o parti di un record. Deve prendere decisioni su ogni tentativo di accesso individuale, basate sul profilo utente, sulle informazioni comunicate e sulle parti specifiche dei dati a cui si accede.
STRATEGIE PER LA SCELTA DELLE PASSWORD
- Formazione degli utenti
- Password generate dal computer
- Ispezione reattiva delle password
- Controllo proattivo delle password
Formazione degli Utenti
Si possono istruire gli utenti sull'importanza di usare password difficili da indovinare e fornire linee guida per la loro scelta. Questa strategia di formazione è improbabile che sia fruttuosa nella maggior parte delle installazioni, specialmente dove ci sono grandi popolazioni di utenti o un grande volume di transazioni. Molti utenti ignorano le linee guida. Altri potrebbero non sapere come giudicare una password complessa (ad esempio, molti credono erroneamente che investire una parola o capitalizzare l'ultima lettera renda una password non indovinabile).
Password Generate dal Computer
Anche questo approccio è problematico. Se le password sono sufficientemente casuali, gli utenti potrebbero non essere in grado di ricordarle. Anche se la password è pronunciabile, può risultare difficile ricordarla, portando alla tentazione di scriverla. In generale, i modelli di password generate dal computer hanno una storia di scarsa accettazione da parte degli utenti.
Ispezione Reattiva delle Password
È quella in cui il sistema esegue periodicamente le proprie analisi sulle password per trovare quelle facili da indovinare. Il sistema invalida tutte le password e notifica l'utente. Questa tattica presenta diversi inconvenienti. In primo luogo, se eseguita correttamente, è ad alta intensità di risorse.
Controllo Proattivo delle Password
È l'approccio più promettente per migliorare la sicurezza delle password. In questo schema, l'utente può scegliere la propria password, ma al momento della selezione, il sistema controlla se la password è ammissibile e, in caso contrario, la respinge.
Il trucco del controllo proattivo è stabilire un equilibrio tra accettazione da parte dell'utente e robustezza. Se il sistema rifiuta troppe password, gli utenti si lamentano che è molto difficile sceglierne una. Se il sistema utilizza un algoritmo semplice per definire ciò che è considerato accettabile, fornisce una guida per le tecniche di indovinamento finali.
Il primo metodo è una semplice applicazione di regole. Ad esempio, si possono applicare le seguenti:
- Tutte le password devono essere lunghe almeno R caratteri.
- I primi R caratteri devono includere almeno una maiuscola, una minuscola, una cifra numerica e un segno di punteggiatura.
Queste regole possono essere combinate con avvisi per l'utente. Anche se questo metodo è migliore che semplicemente istruire gli utenti, potrebbe non essere sufficiente a vanificare le tecniche di indovinamento delle password.
Un altro approccio possibile è raccogliere un ampio dizionario di password "cattive" possibili. Quando un utente sceglie una password, il sistema controlla che non sia presente in quell'elenco. Lo svantaggio di questo metodo è il tempo e lo spazio extra necessari.
METODI ANTIVIRUS
La soluzione ideale per la minaccia dei virus è la prevenzione: in primo luogo, non permettendo al virus di entrare nel sistema. Questo è generalmente impossibile da raggiungere, sebbene la prevenzione possa ridurre il numero di attacchi virali fruttuosi.
Il metodo migliore consiste nell'essere in grado di eseguire le seguenti operazioni:
- Rilevamento: Una volta che l'infezione si è verificata, localizzare il virus.
- Identificazione: Una volta raggiunto il rilevamento, identificare il virus specifico che ha infettato un programma. Eliminare i virus da tutti i sistemi infetti, in modo che il parassita non si diffonda ulteriormente.
- Eliminazione: Dopo aver identificato il virus specifico, rimuovere tutte le tracce del programma infetto e sostituirlo al suo stato originale.
[STEP93] individua quattro generazioni di software antivirus:
- Prima generazione: Semplici sniffer (scanner basati su firma).
- Seconda generazione: Scanner euristici.
- Terza generazione: Trappole di attività (activity traps).
- Quarta generazione: Protezione completa (pacchetti integrati).
Uno scanner di prima generazione richiede una firma per identificare i virus. Uno scanner di seconda generazione non dipende da una firma specifica. I programmi di terza generazione sono programmi residenti in memoria che identificano un virus dalle sue azioni, piuttosto che dalla struttura di un programma infetto. I programmi di quarta generazione sono pacchetti che consistono in una varietà di tecniche antivirus utilizzate in combinazione.
Sistemi di Affidabilità (Sicurezza)
Un requisito molto applicabile è proteggere i dati o le risorse sulla base di livelli di sicurezza. Quando si definiscono più categorie o livelli di dati, il requisito è conosciuta come sicurezza multilivello.
- No Read (Non leggere): Un soggetto può leggere un oggetto solo da un livello di protezione inferiore o uguale (proprietà di sicurezza semplice).
- No Write (Non scrivere): Un soggetto può scrivere un oggetto solo ad un livello di sicurezza maggiore o uguale (proprietà *-write).
Il monitor di riferimento è un elemento di controllo nell'hardware e nel sistema operativo di un computer: regola l'accesso dei soggetti agli oggetti in base a parametri di sicurezza. Questo include l'accesso a un file noto come database di sicurezza del kernel, che elenca i privilegi di accesso di ogni persona e gli attributi di protezione di ogni oggetto, e applica le regole di sicurezza.
- Mediazione completa: Le norme di sicurezza si applicano a tutti gli accessi.
- Isolamento: Il monitor di riferimento e il database di base sono protetti da modifiche non autorizzate.
- Verificabilità: La correttezza del monitor di riferimento deve essere dimostrabile, dimostrando matematicamente che applica le norme di sicurezza, fornisce isolamento e mediazione completa.
- Gli eventi di protezione importanti, come le violazioni di sicurezza, vengono rilevati e le modifiche autorizzate al database di sicurezza del kernel vengono salvate nella revisione contabile (audit trail).