Il sistema operativo

Materie:Appunti
Categoria:Informatica

Voto:

1 (2)
Download:197
Data:08.01.2002
Numero di pagine:15
Formato di file:.doc (Microsoft Word)
Download   Anteprima
sistema-operativo_5.zip (Dimensione: 17.03 Kb)
trucheck.it_il-sistema-operativo.doc     75 Kb
readme.txt     59 Bytes


Testo

IL SISTEMA OPERATIVO
CLASSIFICAZIONE DELLE RISORSE
1) RISORSE PERMANENTI: sono tutte quelle risorse che non vengono modificate durante il loro utilizzo e possono essere utilizzati in successione da diversi processi (stampante, sistema operativo, processore…)
a) SERIALI: le risorse permanenti che sono utilizzate da un solo processore per volta
b) COMUNI: le risorse permanenti che sono utilizzate da + processori contemporaneamente
2) RISORSE CONSUMABILI: sono tutte le risorse che hanno vita limitata nel tempo e nei diversi istanti possono essere presenti in numero variabile.
1) RISORSE CONDIVISIBILI: sono utilizzate da + processori contemporaneamente (programmi del sistema operativo)
2) RISORSE NON CONDIVISIBILI: sono utilizzate da un solo processore per volta
IL SISTEMA OPERATIVO
Il sistema operativo è un insieme di programmi aventi lo scopo di rendere disponibili all’uso le risorse di calcolo e i dispositivi collegati al computer. Esso è nato per semplificare l’utilizzo da parte dell’utente ed è utilizzato per gestire le risorse hardware (processore) e software (sistema operativo) cioè le risorse del sistema. Esso funziona da interfaccia tra l’utente le la macchina. Esso è espresso in linguaggio macchina ovvero in codice binario.
Ogni istr uzione è composta da due parti: codice operativo operandi
Il sistema operativo può essere:
- PORTATILE: se si adatta a “piattaforme” hardware diverse. È l’attitudine del sistema ad essere eseguito su macchine diverse. Cresce quando è minore il costo delle modifiche necessarie
- PROPRIETARIO: se viene costruito solo per una macchina e funziona solo su quella macchina
Il sistema operativo può anche essere definito come un insieme di moduli ognuno specializzato per una specifica funzione. Ogni modulo di livello superiore può colloquiare con i moduli di livello inferiore per interposta persona.
Le primitive sono funzioni predefinite che mettono in comunicazione un modulo con gli altri. Cioè un modulo passerà un dato ad un altro modulo grazie alle primitive.
Modulo
Modulo
Sono scritti in linguaggi evoluti come il C++
Modulo
Modulo
È l’unico modulo scritto in linguaggio macchina
È l’unico modulo che può interagire con l’hardware attraverso il linguaggio macchina.
Gli altri moduli interagiscono con l’hardware attraverso linguaggi + evoluti (es. C++)
Hardware
I SISTEMI MONOPROGRAMMATI E MULTIPROGRAMMATI
- SISTEMI MONOPROGRAMMATI: utilizzano le risorse per l’avanzamento di un unico programma (programma dei PC).
La sua memoria centrale contiene, in un dato istante, il codice utente proveniente da un unico programma
- SISTEMI MULTIPROGRAMMATI: utilizzano risorse per l’avanzamento di più processi legati ad utenti diversi.
Consiste, cioè, nell’usare un’unica CPU per eseguire più programmi utente nel periodo di sospensione dell’esecuzione delle routine di sistema.
Il sistema deve avere queste peculiarità:
- stabilire una priorità di programmazione
- proteggere i dati dei diversi programmi
- risolvere i conflitti relativi alle risorse impiegate
In parole povere si vuole massimizzare il rendimento della macchina attraverso il SYSTEM OVERHEAD.
Tale sistema di carico di lavoro in più imposto dal sistema si basa sui concetti di:
- TIME SHARING: tempo utilizzato dalla risorsa per essere eseguita
- TIME SLICE: tempo a disposizione per l’esecuzione tra una routine e l’altra
SISTEMI DEDICATI ( Windows, Unix)
Tutte le risorse sono dedicate all’avanzamento di un singolo processo.
Tali sistemi prevedono, dunque, l’utilizzo da parte di un solo utente per volta.
Essi supportano:
- MULTITASKING: tipo di multiprogramazione nella quale + applicazioni (TASK) vengono eseguite contemporaneamente sulla stessa macchina scambiando tra loro dati e risultati
- MULTITHREADING: indica i meccanismi di protezione delle singole operazioni scomponendole in parti + piccole (THREAD) le quali procedono indipendentemente
SISTEMI BATCH
Si basa sul concetto di INTERATTIVITA’ (fornire dati su richiesta...)
Solitamente si utilizzano file di questa estensione quando:
- si hanno sequenze sempre uguali di comandi
- si vuol far eseguire un’operazione complessa ad un utente non esperto
All’interno di questi file è inclusa una procedura suddivisa in 3 fasi di lavoro dette JOB STREAM
1) preparazione dei dati. Avviene sui dispositivi offline sui quali vengono inseriti i propri job (nastri, perforatori di schede…)
2) inoltro all’elaboratore: opportune periferiche portano online i risultati dei job (lettori di dischi o nastri)
3) ritiro dei risultati
oppure:
1) inserimento dei dati
2) i dati passano attraverso gli elaboratori di canale (dispositivi di trasporto dell’output)
3) gli elaboratori di canali li trasportano al BUFFER (area di memoria temporanea)
4) quando il buffer raggiunge la completezza i dati vengono scaricati alla componente logica
5) la componente logica li invierà alla periferica destinataria tramite altri elaboratori di canale
SISTEMI REAL TIME
Cerca di avere una risposta istantanea agli stimoli
Si basa sulla:
- correttezza matematica del risultato
- correttezza cronologica
Essendo praticamente impossibile la realizzazione in tempo nullo di un’operazione si parla di:
- TEMPO REALE IN SENSO LATO: il tempo di reazione non è essenziale alla corretta evoluzione dell’ambiente in cui è inserito, ma può variare in un intervallo. Oggi definiti SISTEMI INTERATTIVI
- TEMPO REALE IN SENSO STRETTO: sistema di calcolo con tempi di reazione minori dell’ambiente in cui è inserito. Oggi riconosciuti come gli unici sistemi a tempo reale.
I PROCESSI
I PROCESSI sono insiemi formati da un elenco finito di azioni da eseguire in sequenza e da dati che vengono elaborati dalle azioni stesse. Al contrario del programma, il processo si evolve nel tempo ed è sequenziale.
Un programma diventa un processo passando per + stadi. L’esecuzione di un programma genera sempre almeno un processo.
Nella coda dei processi in attesa i motivi per cui si passa da un programma all’altro sono:
- termine del programma → la scelta del programma successivo in esecuzione è automatica e il periodo di tempo impiegato per compiere l’operazione è chiamato tempo di riassegnamento.
- il programma richiede operazioni relative ad un altro modulo
- scade il time slice ovvero il tempo a disposizione per l’esecuzione tra una routine ed un’altra.
Memoria di massa ROM (Read Only Memory) si trovano istruzioni permanenti (circuiti)
Sistema Operativo NUCLEO
RAM (Random Acces Memory)
Sistema operatico
Programma 1

Programma 2
Il processo è in memoria di massa ed attende di essere caricato in memoria centrale.
All’accensione della macchina viene eseguito il BOOTSTRAP (caricamento del sistema). Esso è automatico e il processo viene caricato in memoria centrale.
Il NUCLEO è il gestore dei processi ovvero colui che fa avanzare i processi.
Nella prima fase il processo è in uno STATO DI PRONTO dove necessita della risorsa principale cioè la CPU.
Quando poi la CPU si libera avviene la vera e propria esecuzione e il programma diviene in STATO DI ESECUZIONE. Se durante l’esecuzione si verificano degli intoppi, essa si interrompe. Le tipiche operazioni che possono creare degli intoppi sono quelle di input e output. In questo caso il programma passa in uno STATO DI ATTESA in quanto la CPU viene portata via.
Le INTERRUZIONI sono segnali emessi al verificarsi di determinati eventi e influiscono sulla CPU. Essi possono essere:
- SINCRONE: quando sono sincronizzate con l’orologio della macchina. (quella emessa quando termina il time slice)
- ASINCRONE: quando non sono sincronizzate con l’orologio della macchina.
(quella emessa quando finisce la carta della stampante, quando salta la corrente, quando si verifica un OVERFLOW)
Successivamente, terminate le operazioni di I/O, si ritorna allo stato di pronto, poi si passa allo stato di esecuzione ed infine allo STATO DI TERMINAZIONE.
Memoria di massa stato di pronto
Stato di esecuzione

Stato di terminazione
Stato di attesa
Il processo è in stato di pronto e la CPU viene messa a disposizione per un quanto di tempo denominato TIME SLICE. Il processo, quindi, avanza e le operazioni vengono eseguiti per tempi cortissimi. Quando il tempo è finito il processo ritorna nello stato di pronto, mentre la CPU passa ad un altro processo.
Ogni terminale chiede l’esecuzione dei programmi e, mediante il codice macchina, ottiene la sua risorsa. Gli altri processi fermi nello stato di attesa si raggruppano nella coda dei pronti
CPU
PR1
PR2
PR3
PR4
Tecnica “ROUD ROBIN”: nel momento in cui il time slice termina il processo si riaccoda nella tabella dei pronti
Nel momento in cui, invece, la CPU viene tolta senza che il time slice sia stato completato il processo si inserisce nella coda in base al tempo che ha utilizzato.
Per i processi + lunghi vengono utilizzato + time slice e vengono utilizzati + GRADI DI PRIORITÀ. Man mano che i processi avanzano si raggiunge una priorità + bassa. Per questo motivo il sistema operativo viene definito DINAMICO
Il SO è definito STATICO quando………………
La priorità dipende dalle operazioni di I/O e quindi un processo passera in + stati di attesa + è alta la priorità.
Nella gestione dei processi non si deve mai verificare lo STALLO. Lo stallo si ha quando due processi cooperano ed entrambi si bloccano. Per non verificarsi lo stallo, lo scambio di dati tra i processi deve essere sincronizzato.
TEORIA DEI “5 FILOSOFI”: se tutti i 5 filosofi mangiano insieme, tutti devono prendere la bacchetta destra. Se uno prende la bacchetta sinistra, i filosofi entrano in competizione e si crea lo stallo
Ogni processo è UNIVICAMENTE caratterizzato da un DESCRITTORE il quale contiene:
- l’identificatore di un processo (nome)
- lo stato di avanzamento di un processo
- il grado di priorità
- il riferimento alla memoria centrale occupata
- unità di input/output assegnate
- i file aperti
- tempo della CPU utilizzato
- contenuti di alcuni registri
MACCHINE VIRTUALI
Il SO è formato da LIVELLI in cui il calcolatore è il + basso e l’utente è il + alto.
I livelli sono formati da MODULI o BLACK BOX cioè insiemi di routine che attivano i meccanismi fisici per risolvere problemi logici simili. La procedura standard grazie per mezzo della quale il modulo mette a disposizione i servizi è chiamata PROCEDURA PRIMITIVA.
I moduli virtualizzano i dispositivi cioè li trasformano in MACCHINE VIRTUALI capaci di risolvere operazioni complesse come fossero elementari.
Le operazioni possono essere:
- OPERAZIONI LOGICHE: necessità da parte dell’utente di ottenere un risultato
- OPERAZIONI FISICHE: esecuzione di molteplici operazioni elementari che permettono la risoluzione di problemi dipendenti dall’elaboratore e dalla stampante richiesta
Il sistema operativo genera un insieme di macchine virtuali capaci:
- di risolvere il problema dell’utilizzo delle risorse da parte dei moduli di livelli superiori
- di moltiplicare il numero di dispositivi possibili
Per meglio esprimere questo concetto viene utilizzato il modello “A BUCCIA DI CIPOLLA” il quale rappresenta il sistema operativo come una piramide rovesciata alla cui base sta l’hardware e al cui limite stanno gli utenti.
Ogni strato intermedio è costituito da un modulo costituito da programmi implementati a quelli del livello sottostante attraverso le primitive che questo mette a disposizione
Utente
Interprete dei comandi
File system
Gestione periferiche
Gestione memoria
Nucleo
Hardware

NUCLEO
L’unità centrale di processo (CPU) è un esecutore sequenziale di operazioni, quindi è un processore.
In multiprogrammazione la sequenza di operazioni è costituita da sottosequenze generate da processi diversi e routine di interruzione.
Il nucleo dipende strettamente dall’hardware in quanto è la parte del sistema operativo + vicino all’hardware. Spetta, dunque, al nucleo eseguire tutte le operazioni relative ai processi.
Il problema delle priorità nel nucleo si risolve attraverso le politiche di SCHEDULING e in particolare attraverso il processo di SCHEDULER (gestore dei processi) che ha priorità assoluta così come il processo di INTERRUPT HANDLER il quale si occupa della gestione delle interruzioni. Tali processi a priorità assoluta sono favoriti utilizzando time slice + lunghi o scegliendoli + spesso all’interno delle code di attesa.
I SOTTOMODULI DEL NUCLEO
1) SCHEDULATORE DEI LAVORI: sceglie, tra quelli proposti dall’utente, i lavori da eseguire e li carica in memoria centrale creando i relativi processi
2) SCHEDULATORE DEI PROCESSI: decide a quale processo assegnare il processore in base a diverse politiche di gestione (vedere round robin)
3) CONTROLLORE DEL TRAFFICO: controlla l’avenzamento dei singoli processi mediante le transizioni da uno stato all’altro
LA GESTIONE DELLA MEMORIA
Si basa sul concetto di virtualizzazione della memoria centrale per ogni processore virtuale creato dal nucleo.
I metodi per l’uso della memoria centrale sono:
- METODO A PARTIZIONI FISSE: suddivisione della memoria centrale in parti di uguali dimensioni. I programmi che risiedono in memoria devono corrispondere al numero di partizioni fisse.
Svantaggi: - il numero massimo di processi che possono essere allocati in memoria è prefissato
- spreco di memoria perché un programma di solito ha dimensioni minori di quelle della partizione. Tale partizione non può però essere utilizzata da un altro programma
- il programma può essere di dimensioni maggiori della partizione
Vantaggi: - minor carico di lavoro svolto dal sistema operativo
- METODO A PARTIZIONI VARIABILI: Man mano che un programma viene eseguito vengono create le partizioni
Se si libera una partizione di dimensione inferiore rispetto al programma che bisogna inserire, tale programma deve aspettare spazio. Se si liberano due partizioni vicine possono essere occupate entrambe dallo stasso programma anche se non viene occupato tutto lo spazio.
Man mano si inseriscono i programmi si crea una deframmentazione cioè periodicamente i programmi presenti in memoria centrale devono essere portate verso l’alto per non avere troppi spazi liberi.
Svantaggi: - maggior carico di lavoro svolto dal sistema operativo
Vantaggi: - mancanza di un numero fisso di partizioni
- ogni partizione ha dimensioni uguali al programma. Dunque non c’è uno spreco di memoria
La scelta della partizione viene fatta seguendo una fra le seguenti logiche di azione:
- individuazione del FIRST FIT: si individua il primo spazio libero di dimensione sufficiente a contenere il processo
- individuazione del BEST FIT: si individua il minore tra gli spazi atti a contenere il processo
La gestione della memoria virtuale si realizza attraverso due diverse tecniche di suddivisione dei programmi in blocchi:
PAGINAZIONE:
ogni programma viene diviso in blocchi di uguale dimensioni detti PAGINE LOGICHE, a loro volta corrispondenti a PAGINE FISICHE create con la suddivisione della memoria centrale.
Per riassumere la situazione interna delle varie pagine dei programmi si utilizza una tabella:
flag di presenza fisica
Indirizzo fisico della pagina occupata
Indirizzo logico su disco di MM
Flag di modifica
Il processo di distribuzione su disco di routine, tabelle e pagine è detto PINNING il quale evita che le pagine intacchino la zona di residenza del nucleo del SO
SEGMENTAZIONE:
la partizione del programma è impostata da criteri logici e quindi può essere scelta dal programmatore.
Ogni blocco è detto segmento in quanto ogni blocco ha lunghezza diversa.
Essendo, al contrario della paginazione, l’applicazione della partizione variabile in memoria centrale, non avrà una suddivisione ben specifica.
Per riassumere la situazione interna delle varie pagine dei programmi si utilizza una tabella:
flag di presenza fisica
Indirizzo di impianto
Dimensione del segmento
Indirizzo su disco del segmento
Gli svantaggi dell’applicazione di questo metodo sono:
- frammentazione in quanto le aree liberate possono essere occupati da processi + piccoli
- difficoltà di costruire aree libere di dimensioni assegnate con lo scaricamento
- difficoltà d’interpretazione delle tabelle
vantaggi:
- mancanza di un numero fisso di partizioni
- possibilità di far condividere a + processi alcuni segmenti
LA GESTIONE DELLE PERIFERICHE
Le periferiche sono dispositivi di input/output collegati all’unità centrale.
In questo 3° livello vengono virtualizzati proprio questi dispositivi in modo da:
- mettere a disposizione la capacità delle periferiche nascondendo i meccanismi di comunicazione con una primitiva
- gestire i contrattempi comuni che si verificano nella trasmissione di dati
In questo modo si offre la possibilità di aumentare virtualmente le periferiche attraverso lo SPOOLING che consiste nell’uso contemporaneo di una periferica da parte di diversi processi attraverso una coda detta CODA DI SPOOL (Simultaneous Peripheral Operation On Line) il quale segue la logica del FIFO
FILE SYSTEM
È il virtualizzatore delle memorie di massa.
Le sue funzioni sono:
- ottimizzare la gestione dello spazio disponibile su memoria di massa
- garantire l’accesso ai dati di un file anche da parte di + utenti contemporaneamente
- fornire una certa protezione dei file dall’intervento di altri utenti
- rendere disponibili le operazioni di uso comune dei file
Consente di riferirsi ad informazioni su file tramite tabelle dei descrittori (o direttrici) in cui sono contenuti degli identificatori o degli indirizzi fisici. In questo modo si possono porre limitazioni all’accesso attraverso, per esempio, all’utilizzo di password.
Vantaggio:
- struttura gerarchica ad albero che, partendo dalla ROOT (radice) e attraverso le DIRETTRICI, arriva ai diversi file individuabili attraverso il loro identificatore. Il percorso che dalle root porta all’identificatore è detto PATHNAME ASSOLUTO. Si parla di PATHNAME RELATIVO quando il percorso parte dalla direttrice corrente.
I movimenti lungo l’albero corrispondono a caricamenti in memoria centrale delle diversi direttrici. La direttrice presente in un certo momento è detta DIRETTRICE CORRENTE.
Il SO UNIX:
quando si utilizza il sistema ti assegna due file che, operando con un terminale, corrispondono ad uno STANDARD INPUT (tastiera) e ad uno STANDARD OUTPUT che viene anche utilizzato come STANDARD ERROR (schermo). Tali standard possono essere reindicati all’esterno dei normali standard: tale processo è detto RIDIREZIONE DELL’I/O
L’INTERPRETE DEI COMANDI
È la parte del SO + esterna ed è quindi quella che riceve in ingresso le richieste di esecuzione di operazioni espresse in linguaggio di comandi.
UNIX: il linguaggio comandi permette la scrittura di algoritmi strutturati (SCRIPT)
DOS: l’interprete dei comandi è un file che si chiama COMMAND.COM. Esso contiene il minimale dei comandi per la gestione del personal. Si può anche utilizzare un algoritmo script con il controllo IF per la selezione semplice.
L’evoluzione dei personal ha portato un’evoluzione dell’interfaccia utente. Ora, infatti, si parte da una PROMPT e poi si può iniziare a scrivere da tastiera il comando. Si forma, così, la RIGA COMANDI la quale è controllata in coerenza e correttezza dall’ANALIZZATORE SINTATTICO.
Anche questo procedimento risulta ora superato con l’avvento dei menu e delle relative interfacce grafiche basate su un sistema a icone e finestre.
Il processo di esecuzione dell’interprete dei comandi è detto PROCESSO PADRE a cui segue un processo transitorio di controllo sintattico (PROCESSO FIGLIO) che, se completato senza errori, restituisce al processo padre una serie di parametri.
In multitasking i processi lavorano quasi in parallelo e i problemi incorrono nell’evitare che due processi attendano vicendevolmente una risposta dall’altro per proseguire (DEADLOCK). Tali problemi sono risolti dalle tecniche di programmazione concorrente.
All’accensione del personal vengono attivati molti processi in successione, di cui ognuno è figlio del precedente. A questo caricamento iniziale definito BOOTSTRAP provvede l’IPL (Initial Program Loaded) che è registrato su memoria ROM.
Le fasi di questo processo sono:
- caricamento in memoria del nucleo e del software di sistema
- esecuzione del gestore dei processi
- inizializzazione del sistema
- attivazione delle linee collegate ai terminali
- ad ogni terminale viene eseguito il LOGIN o identificazione
- viene fornito a ciascun utente un ambiente di lavoro o SHELL
Altri processi del bootstrap sono:
- gestore dello spool per la stampante
- gestione dell’accounting per il controllo dei tempi di connessione dei vari utenti
la chiusura del sistema SHUTOUT avviene attraverso il LOGOUT e il controllo dei terminali collegati. Questi terminali vengono scollegati entro un periodo di tempo prefissato.
GLI AMBIENTI DI SISTEMA
A livelli esterni vengono messi a disposizione dell’utente alcuni ambienti software o programmi di utilità per agevolare la gestione e la programmazione.
L’insieme di questi e dei moduli del SO è detto SOFTWARE DI BASE e comprende:
- editori di testi: consentono di modificare programmi sorgenti e qualsiasi altro tipo di testo
- compilatori: sono i programmi che trasformano in linguaggio macchina la programmazione espressa in linguaggio utente
- linker: sono programmi che uniscono tra loro i risultati di diverse compilazioni
- interpreti: sono programmi che mentre trasformano in linguaggio macchina l’operazione, la eseguono
- debugger: sono programmi di controllo contro eventuali errori o bachi. Per individuare + velocemente gli errori, il programma può essere frazionato attraverso l’impostazione dei BREAKPOINT
- gestore di maschere per data entry: facilitano le operazioni di manipolazione degli archivi
- gestore delle comunicazioni: riguarda le funzioni connesse tra le risorse informatiche in uso
Per mezzo delle operazioni dei compilatori e dei linker, il programma viene trasformato in modo da poter essere rilocato ed eseguito.
Le fasi di questo percorso sono:
COMPILAZIONE
- Si parte dalle macchine target e da uno stesso codice sorgente
- verifica la correttezza del lessico e della sintassi che dovranno essere opportunamente aggiustate dal programmatore
- il compilatore dei diversi linguaggi trasforma tale codice sorgente in CODICE OGGETTO eseguibile nel sistema.
- L’output della compilazione viene detto OGGETTO COMPILATO
La compilazione può essere anche di tipo modulare. In tal caso impone delle regole di scrittura anche per la sorgente
(es. dichiarazione di tutti gli oggetti utilizzati e del MAIN BODY attraverso delle direttive)
Ogni istruzione è costituita:
- codice operativo
- uno o due operandi - costanti
- indirizzi di memoria - indirizzo assoluto: posizione che l’operando occupa in MC nell’istante in cui viene eseguito il programma
- indirizzo rilocabile: indirizzo che la parola avrebbe se partisse dalla posizione 0
- indirizzo autorilocabile: posizione relativa all’istruzione che lo contiene
Se il programma è composto da soli indirizzi autorilocabili si dice costituito da POSITION INDIPENDENT CODE
Le caratteristiche dei moduli in formato oggetto collegabile sono:
- istruzioni in linguaggio macchina
- indirizzi in formato rilocabile
- indirizzi degli operandi in altri moduli non definiti
- tabella degli ingressi: elenco degli oggetti definiti e che possono essere usati dagli altri moduli (nome, n° e tipo dei parametri, indirizzo rilocabile)
- tabella degli esterni: elenco degli oggetti usati, ma non definiti. Tale tabella servirà ad assegnare un valore al momento dell’unione con gli altri moduli (nome, indirizzi rilocabili dove c’è l’istruzione che richiama la procedura)
LINKING
È l’operazione di collegamento effettuata su file in formato oggetto collegabile generando uno o + file di formato caricabile.
Funzioni:
- verificare che non ci siano mismatch tra le caratteristiche degli oggetti
- unire di seguito i moduli
- assegnare valori corretti agli indirizzi indefiniti
Il linker è lo strumento che esegue tutto questo.
Il Windows è rappresentato dai file DDL (Dinamic Link Library)
RILOCAZIONE
È la trasformazione degli indirizzi rilocabili in indirizzi assoluti sommando a ciascuno l’indirizzo di impianto. Ciò avviene in seguito al caricamento in memoria centrale del programma in formato caricabile
La rilocazione può avvenire:
- RILOCAZIONE STATICA: l’indirizzo di impianto è sempre lo stesso ed è noto al linker.
Se L’indirizzo di impianto è variabile e non è noto al linker, la rilocazione è eseguita staticamente ogni volta che il programma viene caricato prima di eseguirlo. Durante la copiatura in memoria ogni indirizzo rilocabile viene trasformato in assoluto.
- RILOCAZIONE DINAMICA: Se L’indirizzo di impianto è variabile e non è noto al linker, la rilocazione è eseguita dinamicamente al momento dell’esecuzione dell’istruzione
ESECUZIONE
L’unico problema è il collegamento con i file esterni dei quali dovrà essere caricata in memoria la libreria relativa

Esempio