Nothing Special   »   [go: up one dir, main page]

TPS Argomenti Vari

Scarica in formato docx, pdf o txt
Scarica in formato docx, pdf o txt
Sei sulla pagina 1di 18

I PROCESSI

Inizialmente i sistema operativi erano Monotasking quindi potevano fare una sola
attività alla volta. Quando l’utente non faceva nulla, loro aspettavano.
Oggi il computer (nominato MultiTasking anche se non fai nulla, fa anche lui
qualcosa (ad esempio scrivere un testo,nel mentre scrivo una parola il computer
svolge altre attività).
Nei sistema operativi di oggi ogni processo ha un suo lasso di tempo chiamato
quanto di tempo. Quell’asso di tempo è dedicato alla CPU, appena finisce viene
eseguito un altro processo. Quest’asso di tempo è per noi impercettibile e quindi
sembra che i processi vengano eseguiti contemporaneamente (quando in realtà
vengono eseguiti singolarmente).
I Processi sono dei progammi (i progammi si trovano sull hard disk,sono statici e solo
quando vengono avviati diventano processi) in esecuzione. Il processo è un entità
dinamica perché si evolve in stati
Ogni processo ha necessità di avere un PC ( progam counter, ovvero un registro
interno alla CPU che tende ad eseguire la prossima istruzione).
Ogni istruzione del processo passa per i vari fetch (fetch, fetch operandi, fetch
decode e fetch esecuzione.). Se un processo viene interrotto, riprende dall’ultima
istruzione al quale stata interrotta.
La fase che permette di passare da un processo all’altro si chiama “Context Switch”
(cambio di contesto), inoltre salva il PCB.
Ci sono 3 Macro(sottoinsiemi) Modelli di processi:
indipendenti, dove ogni processo lavora in modo autonomo
cooperativi, dove più processi lavorano insieme per risolvere un problema
coompetitivi, dove, fra due processi, lavorano per fare qualcosa prima dell’altro.
Ogni processo si divide in stati:

PS: “Una risorsa non è alro che l’insieme dei software e degli hardware che mi
permettono l’avanzamento del processo”
STATO PROCESSI
New (Nuovo), stato del processo appena creato, ma prima di farlo si controlla lo
spazio e le risorse necessarie. Viene quindi creata una struttura PCB, e quindi far
sapere dell’aggiunta di un nuovo processo.
Ready (Pronto), si passa in questo stato quando il processo ha tutte le risorse e lo
spazio per andare avanti.
Da pronto può successivamente andare in:
--Running (Esecuzione), dove se è il turno del processo si esegue, altrimenti ritorna
nella cosa dei processi pronti(stato pronto) (avente tutte le risorse necessarie).
Quando finisce il tempo o nel caso di un processo più importante, il processo ritorna
nello stato di pronto rifacendo la cosa da capo.
Una coda, esempio del supermercato: noi(processi) siamo in cosa per pagare un
prodotto, mentre la cassiera è il processore

--Waiting (Attesa), possiamo andare in questo stato sia dallo stato esecuzione che
da pronto. Da questo stato poi ritorniamo in pronto.
Quando al processo gli è stato tolto o gli manca qualcosa(o risorse), entra in questo
stato

Esempio: durante la coda del supermercato, se mi manca un prodotto lo vado a


prendere lasciando continuare la coda continua. Quando abbiamo il prodotto
ritorniamo in cima alla coda.
--Terminated (Finito), dove il processo può andarci dallo stato di sospeso o dallo
stato di pronto e ci va solo quando ha finito l’esecuzione o conclusa prima
dell’esecuzione totale
PCB (Process Control Block) è in sintesi una tabella che contiene tutte le
informazioni del processo [ad esempio l’ID del processo(PID),lo stato del
processo,progam counter, i registri e la priorità] come ad esempio “Gestione
Attività”.
SCHEDULAZIONE DEI PROCESSI
La schedulazione del processo (scheduler), è un software che ne gestisce la coda, le
principali sono:
-La coda dei processi pronti (RL) in cui troviamo i processi in stato di Ready
-La coda di attesa di un evento (WL) dove troviamo i processi in attesa di una risorsa
in particolare
Gli obiettivi principali dello scheduler sono:
-Cercare di utilizzare la cpu al 100% (massimizzare).
-Esegue principalmente i processi che impiegano meno tempo per poi eseguire
quelli con maggior tempo.

-Massimizzare il Throughput (buttare fuori) ovvero la quantità di processi


completati/eseguiti in un determinato lasso di tempo. E’ un procedimento che
massimizza :
il tempo di completamento l’insieme dei processi che riesco a completare.
Il tempo di risposta la velocità con cui viene eseguito il processo con minor latenza
possibile (ritardo)
Il tempo di attesa ovvero il tempo di attesa di un processo, dove ad esempio, se
abbiamo processi in coda si da un tempo per eseguirli, se non verrà eseguito entro il
tempo stabilito si passerà al processo successivo
Burst di CPU, uso massimo della CPU, è un processo che usa molto la CPU. Qui i
processi più pesanti avrando maggior priorità. Un vantaggio di questa priorità è
l’essere sempre eseguiti.
Burst di Input e Output è il contrario, dove cerco di eseguire i processi IO perché
hanno poco utilizzo della CPU, e quindi riuscire ad eseguirli più velocemente

Inoltre lo scheduler gestisce la priorità e l’ordine del processo e lungo il percorso


può sempre modificarle.
Il contesto del processo sono tutte le informazioni che lo riguardano (registri, il suo
stato, il program counter ecc.)
Lo stack è un’area di memoria dove vale l’ultimo entrato nella fila è il primo che
esce.
In principio il context-switch non era ottimizzato, ogni processo non rispettava la
coda e andavano al processore senza chiedere il permesso.
PRE-EMPTIVE E NON PRE-EMPTIVE
Pre-emptive quando i processi possono scavalcare la coda.
Non pre-emptive quando i processi non possono saltare la coda.
USER MODE E KERNEL MODE
Con la user mode non si scavalca la coda ma il processo chiede il permesso, quindi lo
user mode ne controlla l’attendibilità.
Kernel mode è la modalità che esegue i processi dall’user mode, quindi quelli
certificati.
CRITERI DI SCHEDULING
Esistono diversi sistemi di esecuzione:
Sistemi batch, Sistemi interattivi e Sistemi Real Time
-I sistemi batch ovvero l’esecuzione di un progamma in background, che non
consuma risorse. Fra questi sistemi troviamo il Throughput e il tempo di
completamento. Inoltre va bene FCFS, perché non da priorità alla velocità.
-I sistemi interattivi dove per esempio se stiamo giocando, i comandi che diamo
devono avere minor ritardo possibile, si da quindi priorità ai tempi di risposta.
Inoltre va bene SJF, perché da priorita alla velocità.
-Nei sistemi di real time bisogna rispettare le scadenze dove per esempio se devo
misurare il battito cardiaco, deve farlo ogni 3 millisecondi, non più e non meno.
ALGORITMO DI SCHEDULING FCFS
Algoritmo di scheduling FCFS (First-Come-First-Served)= in questo servizio il primo
processo ad arrivare è il primo ad essere servito, di tipo non pre-emptive, non può
scavalcare la coda e quindi non è molto ottimizzato. (Va bene per la stampante)
ALGORITMO DI SCHEDULING SJF
Algoritmo di scheduling SJF (Shortest Job First) sceglie tra la lista dei processi pronti
quello che occupa per meno tempo la CPU. Nel caso ci sia un processo in esecuzione
possiamo avere due casi:
 Pre-emptive: si confronta il processo che vuole essere eseguito con il processo
attualmente in esecuzione, e se impiega minor tempo di esecuzione rispetto a
quest’ultimo, si sospende e si assegna alla CPU il nuovo processo
 Non Pre-emptive: non si fa nulla
SCHEDULING CON PRIORITA’
Algoritmo con priorità puo essere un FCFS modificato e un SJF modificato. Diventa
un FCFS modificato quando nel caso in cui ci siano due processi con priorità alta si
esegue prima il processo che è arrivato per primo; diventa invece un SJF moificato
quando nel caso in cui ci siano due processi, uno con priorità alta e uno con priorità
bassa, si esegue prima quello con priorità alta.
ALGORITMO DI SCHEDULING ROUN ROBIN
Algoritmo Round Robin è una coda circolare di tipo FIFO (First In First Out), si da il
quanto di tempo, dopodichè si torna in coda. Si divide il processo in diverse parti e si
fa eseguire in modo circolare di tipo FIFO.
ALGORITMO MLFQ
L’algoritmo MLFQ (Multiple Level Feedback Quenes) si ottiene dalla combinazione
tra l’FCFS e l’algoritmo di priorità. In questo algoritmo si danno le priorità ai processi
con maggior iterattività rispetto a quelli lunghi. Ci sono diverse code, ad ognuna
viene associata un quanto di tempo diverso, quando un processo esaurisce il tempo,
viene spostato in una coda con priorità più bassa.
SCHEDULING A CONFRONTO TRA SISTEMI OPERTIVI
Scheduling a confronto tra sistemi operativi:
- Windows 7,8,10
Usa Round Robin con 32 livelli di priorità, quindi usa una doppia tecnica, la priorità e
Round Robin. La priorità si abbassa quando si esaurisce il quano di tempo.
- Linux
Utilizza lo scheduling con prelazione, utilizza 140 livelli di priorità. Esistono 3 classi di
priorità:
 Real time
 Sistem Thread
 User

TEMPO DI ATTESA/ATTESA MEDIO


Tempo di attesa il tempo in cui un processo pronto per l'esecuzione rimane in attesa
della CPU.
Tempo di attesa medio ovvero il tempo di attesa calcolato con una determinata
formula.
SINCRONIZZAZIONE

!RICORDA! Esistono processi indipendenti (quelli che lavorano in modo autonomo)


e processi cooperanti (quelli che scambiano dati con altri processi)
Troviamo processi completamente diversi che possono collaborare, quando ciò
avviene una sincronizzazione

MEMORIA

La memoria centrale è la memoria RAM, ma esistono anche diversi tipi di


memoria,classificati in base alla velocità e alla capacità:
nastro : molto capiente, magnetico e sequenziale.
disco : capiente, lento, non volatile ed economico.
memoria principale : volatile, mediamente grande, veloce e costoso.
cache : volatile, veloce, piccola e costosa.
registri : all’interno del processore, estremamente veloci e ridotti ad
alcuni byte.
CARICAMENTO DEL PROGAMMA
Un progamma eseguibile risiede sul disco, e quando deve essere eseguito
viene caricato sulla memorira RAM.
Durante questa trasformazione da progamma eseguibile in quello in
esecuzione, vengono creati degli indirizzi.
All’inizio questi indirizzi vengono chiamati indirizzi logici, e poi si
trasformano in indirizzi fisici.
Un codice che ha queste caratteristiche è chiamato codice rilocabile.
Ogni progamma ha un suo spazio di indirizzamento, che sarebbe la
capacità di indirizzi che questo può allocare, quando viene caricato in
memoria questo parte dall’indirizzo 0, e in base a questo la rilocazione
può avvenire in due modi:
-rilocazione statica, consiste nel sommare tutti gli indirizzi di base ai
riferimenti del progamma che in totale formano l’offset
-rilocazione dinamica, questa consiste nel caricare un progamma
eseguibile in una parte libera di memoria, eseguirlo, e quando
quest’ultimo viene eseguito, entra in un registro base (dove vengono
sommati tutti gli indirizzi logici).
-L’MMU (Memory Managment Unit) è quel dispositivo harware che
permette di associare gli indirizzi logici a quelli fisici
Quando avviene il passaggio fra indirizzo logico a fisico si ha una fase
chiamata address binding.
BINDING & LINKING
Il Binding, è la funzione che permette il passaggio da indirizzo logico a
quello fisico, può avvenire in 3 fasi: Durante la compilazione, esecuzione e
loading.
Il linking è la funzione che somma tutti gli indirizzi logici.
LOADING
Il Loading è la funzione che Indica il caricamento di un progamma.
Quando carichiamo un progamma, questo può essere più grande della
memoria RAM;
Può capitare inoltre che il continuo caricamento e scaricamento dei
progammi può produrre una frammentazione della memoria, ovvero la
creazione di partizioni vuote di memoria.
Bisogna quindi gestire bene la memoria per eseguire correttamente il
progamma, troviamo quindi 4 soluzioni:
-Swapping, che consiste nel scaricare tutte le fasi inattive del progamma,
per poi salvarle in una memoria fissa a parte. Questa parte libererà la
memoria centrale rallentando però il sistema operativo.
-Caricamento dinamico, consiste nel caricare solo le parti essenziali del
programma, caricando su richiesta le altre non fondamentali.
-Overlay, consente nel prendere le parti di un progamma che possono
funzionare e caricare alternativamente sulla stessa parte di memoria.
-Partizionamento, consiste nell’assegnare ad un processo una parte fissa
di memoria, così da favorire lo swapping

PARTIZIONAMENTO
Il modo più semplice per allocare la RAM nei sistemi multiprogammati è
quello di dividere in partizioni, ognuna delle quali viene assegnata ad un
progamma in base alla sua dimensione
SCHEMA A PARTIZIONE FISSA
Nello schema a partizione fissa, si creano delle partizioni le cui dimensioni
vengono scelte dal sistema operativo (durante l’inizializzazione)oppure
dall’utente durante il suo avvio, e quindi sono statiche; si crea inoltre una
tabella dove viene memorizzato quali sono libere o occupate
Per ogni partizione, poiché ognuna ha una diversa dimensione, viene
gestita una coda di processi in attesa.
Possono però verificarsi dei problemi:
-Il problema della frammentazione interna (si verifica quando la
memoria viene suddivisa in blocchi di dimensioni fisse), che capita
quando le partizioni sono di grandi dimensioni.
Questo causa uno spreco di memoria, quando dobbiamo eseguire
processi che necessitano poca RAM,
ESEMPIO: Se abbiamo solo partizioni di grandi dimensioni e bisogna
eseguire un processo di piccole dimensioni, questo andrà nella coda dei
processi in attesa nella partizione di grande dimensioni, tuttavia, poiché il
processo richiede poca memoria, il restante non usato verrà sprecato.
Tuttavia questo problema si può risolvere usando una singola coda di
ingressi e, quando una partizione si libera, il job può:
-percorrere la coda dalla testa fino a trovare un job della giusta
dimensione, per essere contenuto nella partizione.
-percorrere la coda individuando il job più grande; facendo questo però si
vanno a discriminare i job di piccole dimensioni.
- Il problema della frammentazione esterna (si verifica quando la
memoria viene suddivisa in blocchi di dimensioni variabili), che capita
quando le partizioni sono di piccole dimensioni.
Con questo problema, poiché le partizioni sono tutte di piccole
dimensioni, non si riesce ad eseguire un progamma che richiede più
memoria
ESEMPIO: se dobbiamo eseguire un processo di grandi dimensioni e
abbiamo diverse partizioni di memoria di piccole dimensioni, dal
momento che le partizioni non riescono a soddisfare la richiesta di
memoria RAM del progamma e, dal momento che il progamma non si
può dividere in pezzi e dividerlo nelle varie allocazioni, questo non si
potrà eseguire

SCHEMA A PARTIZIONE VARIABILE O DINAMICO


In questo schema è possibile modificare il numero e la dimensione di ogni
partizione, ad esempio unendo due partizioni piccole, oppure suddividere
una molto grande.
Inoltre possiamo creare delle partizioni al momento della creazione di un
processo, e assegnare a quella la dimensione che il processo richiede.
Il problema è che il sistema operativo deve scegliere dove caricare i nuovi
processi, tenendoli nella coda di entrata; utilizza quindi algoritmi di
allocazione dinamica della memoria centrale.
Il problema può avere 4 algoritmi di soluzione:
-FIRST FIT : Si ricerca in maniera sequenziale, dall’inizio delle partizioni, la
prima partizione che soddisfa la dimensione del processo da eseguire
-NEXT FIT : Si ricerca in maniera sequenziale, dall’ultima partizione
utilizzata, la prima partizione che soddisfa la dimensione del processo da
eseguire
-BEST FIT : Ricerca dall’inizio delle partizioni, la partizione più piccola in
grado di soddisfare la dimensione del processo da eseguire
-WORST FIT : Ricerca dall’inizio delle partizioni, la partizione più grande in
grado di soddisfare la dimensione del processo da eseguire; questo però è
il peggior algoritmo di allocazione

AREA DI SWAP
L’area di swap è un meccanismo di simulazione della memoria RAM
sull’hard disk.
La memoria RAM simulata viene chiamata memoria virtuale.
ESEMPIO
Se un processo in esecuzione passa nello stato di wait perché necessita di
un dato di input, questo dal momento che il processo ora ha bisogno di
questo dato, occupa memoria RAM inutilmente; per liberare la memoria
RAM si sposta il processo nella memoria virtuale sul hard disk; quando il
processo ha nuovamente le risorse necessarie per continuare, si sposta
nella memoria RAM
Swap out = Indica lo spostamento del processo dalla memoria RAM
all’area di swap
Swap in = Indica lo spostamento del processo dall’area di swap alla
memoria RAM
La memoria virtuale viene realizzata con tecniche di paginazione,
segmentazione e tecniche ibride.

PAGINAZIONE
Le tecniche di allocazione della memoria sono dette di allocazione
contigua, per indicare il fatto che, per assegnare la memoria ad un
processo, occorre trovare uno spazio di memoria libero abbastanza
grande per contenerlo completamente. Però a causa della
frammentazione si formano molti spazi liberi in memoria di piccole
dimensioni che non sono in grado di accogliere alcun processo. Per
superare i limiti dell'allocazione contigua si devono utilizzare tecniche di
allocazione che permettono di distribuire un processo in zone della
memoria anche non contigue.
La paginazione è realizzata nel seguente modo:
Il progamma e la RAM vengono divisi in pagine di dimensione fisse:
- La RAM viene divisa in blocchi chiamati frame o pagine fisiche;
- Il progamma viene diviso in blocchi chiamati pagina o pagina logica di
stessa dimensione.
La dimensione dipende dallo specifico sistema di gestione della memoria;
Il numero di pagine logiche (la loro somma indica la dimensione del
progamma) può essere diverso dal numero di pagine fisiche (la loro
somma indica la dimensione della RAM), e quindi:
- Se il numero di pagine logiche è minore del numero di pagine fisiche
libere (RAM disponibile), il programma può essere caricato tutto in
memoria;

- Se il numero di pagine logiche è maggiore del numero di pagine


fisiche libere (RAM disponibile), il programma verrà caricato
parzialmente in memoria.
Il sistema operativo si occupa della gestione delle pagine, mentre la
traduzione degli indirizzo logici generati da un processo in esecuzione, nei
corrispondenti indirizzi fisici, fiene fatta dall’MMU.
Il sistema operativo ha una tabella delle pagine, in cui sono registrati per
ogni frame un indirizzo fisico, oltre ad altri parametri (se la pagina è
occupata o libera, ID del processo che la occupa).
Quando un nuovo processo è collocato in memoria, il sistema operativo
registra nella tabella delle pagine del processo i corrispondenti frame di
allocazione, ed esegue il processo scrivendo nel Program Counter
l'indirizzo di partenza del processo.
Un vantaggio di questa tecnica è che per eseguire un programma, basta
che la memoria RAM sia libera di una pagina, in questo modo il
programma può caricare in memoria la sua pagina che contiene la prima
istruzione da eseguire.
Gli svantaggi della paginazione sono i costi, in termini di spazio e di
tempo e la separazione che si viene a creare tra vista utente e fisica della
M.

PROTEZIONE DELLA MEMORIA


Nelle tabelle delle pagine a ogni frame vengono associati alcuni bit di
protezione che possono indicare se l’accesso al frame è consentito in sola
lettura,il lettura-scrittura o solo in esecuzione.
I tentativi di accesso illegali generano una segnalazione al TRAP che
SOSPENDE IL PROCESSO CHE STA SVOLGENDO L’AZIONE “ILLEGALE”

PAGE-FAULT
Sono presenti dei bit di validità che indicano se la pagina appartiene o
meno allo spazio logico del processo: Se viene fatto riferimento a
un’istruzione sconosciuta alla memoria,LA MMU determina un’eccezione
della CPU al S.O. Quest’azione viene detta P.F.T.

LOCALITA’ DEI PROGRAMMI


Abbiamo due possibili cause per le quali possiamo definire IL PRINCIPIO
DI LOCALITA’ SPAZIO-TEMPORALE:
LOCALITA’ SPAZIALE:Quando esiste un’alta possibilità di accesso a
locazioni vicine nello spazio logico-virtuale,a locazioni appena accedute
ad es: ELEMENTI DI UN VETTORE.
LOCALITA’ TEMPORALE: Quando esiste un’alta probabilità di accesso a
locazioni accedute di recente,ad es: le funzioni ricorsive.

DI questo principio se ne tiene conto negli algoritmi di sostituzione:


PACE REPLACEMENT ALG.: Questi effettuano la scelta delle pagine
“vittime” che andranno sovrascritte in memoria delle nuove pagine da
caricare con l’obiettivo di minimizzare il numero page fault.
Le principali strategie per trovare la pagina vittima sono:
FIFO: Sostituisce la pagina che da piu tempo occupa la
memoria,indipendentemente dal suo uso,per utilizzare questa tecnica
dobbiamo avere un TIME STAMPING che ci fornisce una cronologia.

LRU,LEAST RECENTLY USED: Sostituisce la pagina usata meno


recentemente memorizzando un TIME OF USE.

NRU,Not recently used: Ottimizzazione del FIFO semplificando l’algoritmo


LRU:Invece delle sequenze di accesso viene aggiunto un bit di uso R che
viene settato cosi’:
-AL MOMENTO DEL CARICAMENTO è SETTATO A 0.
--QUANDO LA PAGINA VIENE RIFERITA VIENE MESSSO A 1.
---TUTTI I BIT VENG0NO RESETTATI PERIODICAMENTE.

Esiste una versione modificata di questo algoritmo che utilizza il DIRTY


BIT(bit associato a un blocco di memoria del computer e indica se il blocco di
memoria corrispondente è stato modificato o meno. Il dirty bit viene impostato
quando il processore scrive in questa memoria.)
Che ottiene le seguenti combinazioni:
R=0, M=0:Pagina non riferita e non modificata
R=0, M=1:Pagina solo modificata
R=1 , M=1:Pagina solo riferita
R=1, M=1: Entrambe le azioni.

Viene rimpiazzata la pagina + bassa con una pagina che non è stata ancora
aggiornata.

LFU, LEAST FREQUENTLY USED-MFU, MOST FREQUENTLY USED


Tecniche che si basano su algoritmi di conteggio.
LFU:Sostituisce la pagina con il minor numero di riferimenti.
Logica:PAGINA POCO USATA=CONTEGGIO BASSO

MFU:Sostituisce la pagina con il minor numero di riferimenti possibili.


Logica:Pagina con contatore basso=caricata da poco=inutile

WORKING SET
Essendo la memoria secondaria molto lenta ,lo swap dei processi e il rimpiazzo delle
pagine causano un grande rallentamento del sistema,impegnato in operazioni di
input-output e per nulla reattivo ai nostri comandi. Questo fenomeno è detto
TRASHING. Una vera è proprio degnerazione. Per prevenire questa situazione
bisogna assicurarsi che il processo abbia a disposizioe un RESIDENT SET per evolvere
e il modello di riferimento chiamato WORKING SET.
IL WORKING SET è IN POCHE PAROLE L’APPROSSIMAZIONE DELLA DIMENSIONE
DELL’AREA DEL PROGRAMMA
SEGMENTAZIONE
Per evitare di caricare piu’ volte lo stesso codice utilizziamo LA
SEGMENTAZIONE. La segmentazione è uno schema di gestione della
memoria centrale che mantiene la separazione tra memoria logica e fisica
ma suddivide la memoria fisica in segmenti di varie dimensioni.
Riassumendo:L’idea di base è quella di suddividere la memoria centrale
nello stesso modo in cui sono divisi i programmi,ovvero,in entità di
diverse funzioni e associare ad ogni modulo software un segmento di
memoria che puo’ contenere un array,una procedura,uno stack o un
insieme di variabili.Ogni segmento è associato ad un numero che
permette di indiduarlo e la sua lunghezza. Inoltre è tipizzato ed è caricato
in un frame della stessa dimensione.
La memoria centrale è divisa in FRAME.
Lo spazio di indirizzamento del processo in SEGMENTI LOGICI
L’hardware dedicato per la segmentazione è la MMU.
VANTAGGI:
La gestione delle strutture dati è semplificata.
Viene facilitata la possibilità di condivisione di segmenti tra processi.
Linking semplificato.
Ogni segmento puo’ avere tipi diversi di protezione.
Si mantiene una “consistenza” tra vista utente e fisica della memoria.

SVANTAGGI:
È richiesta l’allocazione della memoria.
Si è soggetti ad una frammentazione esterna.

TECNICA IBRIDA: S+P


Dalla P si prende l’identificazione dei frame liberi,la scelta del frame
libero in cui caricare una pagina...
Dalla S si prende la condivisione di porzioni di memoria,la verifica degli
accessi e delle operazioni.
Praticamente: PAGINIAMO I SEGMENTI

Potrebbero piacerti anche