Search Header Logo
Sistemi Operativi - Gestione della memoria

Sistemi Operativi - Gestione della memoria

Assessment

Presentation

•

Computers

•

11th Grade

•

Hard

Created by

Giovanni Pedroncelli

Used 7+ times

FREE Resource

53 Slides • 20 Questions

1

Sistemi Operativi - Gestione della memoria

By Giovanni Pedroncelli

2

La memoria centrale
media

3

La memoria centrale

Situazione ideale: memoria infinita, veloce, poco costosa, non volatile

​

Gestione della RAM tramite ​virtualizzazione --> la fa sembrare infinita per soddisfare tutte le richieste dell'utente

4

Gestore della memoria
  1. sa sempre quali parti della memoria sono libere e quali in uso

    ​

  2. ​sceglie quali parti di memoria allocare ai processi che ne hanno bisogno e poi la dealloca

    ​

  3. ​gestisce lo swapping tra memoria centrale e disco quando la memoria centrale non è sufficientemente grande

5

Gestore della memoria

Compito principale = ​trasformare il programma in esecuzione (statico, su memoria di massa) in processo (dinamico, su memoria centrale)

​

Problema: il compilatore e il linker, durante la fase di compilazione di un programma generano collegamenti tra istruzioni e indirizzi di memoria SENZA SAPERE dove il programma e i dati saranno esattamente caricati in memoria

6

Codice rilocabile
  • Il compilatore e il linker generano ​indirizzi relativi (indirizzi logici)

    ​

  • All'atto del caricamento in memoria centrale, gli indirizzi relativi (logici) ​saranno trasformati in indirizzi assoluti (indirizzi fisici) all'interno della memoria RAM

7

Codice rilocabile

Ogni ​processo dispone di uno spazio di indirizzamento logico [0,max] che dovrà essere poi caricato fisicamente nella RAM. Il compilatore suppone che il processo sarà sempre allocato a partire dall'indirizzo più piccolo, 0. A partire dal valore 0 sono generati tutti gli indirizzi

media

8

Codice rilocabile

Due modalità di rilocazione

​

  • Rilocazione Statica: quando il processo è caricato in memoria, si individua l'indirizzo di base e si somma a tutti gli indirizzi logici (offset)

  • Rilocazione Dinamica: ​il processo è caricato in una qualunque zona libera di memoria e in fase di esecuzione si salva nel registro base (di rilocazione RL) l'indirizzo effettivo di prima locazione di memoria. Durante l'esecuzione, istruzione per istruzione si calcola l'indirizzo assoluto sommando a ogni indirizzo logico il valore contenuto nel registro base RL

9

Codice rilocabile
media

10

Memory Management Unit (MMU)

Dispositivo hardware che associa indirizzi fisici a indirizzi logici

media

11

Address binding

Il registro RL contiene l'indirizzo fisico più piccolo, il registro limite contiene l'indirizzo logico più alto utilizzabile da un determinato processo --> controllo di protezione della memoria

media
media
media

12

Protezione della memoria
media

13

Riepilogo

Durante la fase di linking --> ​calcolo degli indirizzi logici

​

Binding (passaggio da indirizzo logico a indirizzo fisico) può avvenire:

​

  1. durante la compilazione (​indirizzamento assoluto)

    ​

  2. ​durante il loading del programma (rilocazione statica)

    ​

  3. ​durante l'esecuzione del programma (rilocazione dinamica)

​

14

Problemi
  • Per essere eseguito, un programma deve risiedere in memoria centrale e lo spazio libero deve​ essere sufficientemente grande e deve essere contiguo (impossibile con i programmi di oggi)

    ​

  • ​Sistemi multiprogrammati: continuo caricamento e scaricamento dei programmi in memoria --> frammentazione della memoria: spazio libero sufficiente ma NON contiguo --> costosa ricompattazione​

15

Soluzioni
  1. Swapping: liberare la RAM dai processi ​temporaneamente inattivi e salvarli su disco. Rallentamento e calo di prestazioni.

    1. Identificare i processi​ inattivi in memoria (waiting list)

    2. Salvare i loro dati su disco (contesto di questi processi)

    3. Rimuoverli dalla memoria centrale

    4. Caricare un nuovo processo nello spazio appena liberato

  2. ​Caricamento dinamico: caricare in memoria solo ciò che serve effettivamente e il resto rimane su disco per poi essere successivamente caricato quando necessario

16

Soluzioni
  1. Overlay: Frazionamento del programma eseguito a priori dal programmatore (alcune parti sono caricate alternativamente in memoria)

  2. Partizionamento: riservare a ogni processo una dimensione fissa di memoria per evitare lo swapping e ridurre la frammentazione

17

Multiple Choice

Quale NON è un compito del memory manager?

1

sapere sempre quali parti della memoria centrale sono in uso

2

individuare il programma da caricare in memoria

3

scegliere quale parte di memoria allocare ai processi

4

gestire lo swapping tra memoria principale e disco

18

Multiple Select

L'indirizzo logico

1

viene assegnato a partire dalla cella 0

2

viene rilocato dal linker

3

viene trasformato in indirizzo fisico dal linker

4

viene trasformato in indirizzo assoluto dal loader

19

Multiple Choice

MMU significa

1

Memory Management Utility

2

Memory Maker Unit

3

Memory Management Unit

4

Memory Maker Utility

20

Multiple Choice

Nella rilocazione statica

1

viene sommato a ogni istruzione l'offset

2

viene utilizzato il registro base

3

l'indirizzo base viene sommato durante l'esecuzione

4

l'indirizzo base viene sommato durante la fase di link

21

Multiple Choice

La rilocazione statica avviene all'atto del caricamento in memoria

1

Vero

2

Falso

22

Multiple Choice

L'offset si ottiene sommando all'indirizzo di base i riferimenti

1

Vero

2

Falso

23

Multiple Choice

Nella rilocazione dinamica l'indirizzo assoluto è determinato dal loader

1

Vero

2

Falso

24

Multiple Choice

Lo swapping avviene quando la memoria principale libera non è sufficiente

1

Vero

2

Falso

25

Multiple Choice

Il gestore della memoria ha il compito di deallocare la memoria quando serve

1

Vero

2

Falso

26

Multiple Choice

Il compilatore genera degli indirizzi relativi (indirizzo fisico)

1

Vero

2

Falso

27

Tecniche di allocazione della memoria centrale
media

28

Partizionamento

Suddividere la memoria in partizioni e assegnare una partizione a un processo (indipendentemente dalle sue dimensioni), partendo dal SO

​

Problema: quanto deve essere grande una partizione?

Troppo piccola -->​ frammentazione

Troppo grande --> ​spreco memoria e necessità di swapping

​

Partizione fissa / Partizione variabile

​

​

29

Schema a partizione fissa

La memoria è suddivisa in partizioni di dimensioni anche diverse all'inizializzazione del sistema, staticamente, con una tabella con lo stato di ciascuna partizione (libera/occupata)

​

Ogni partizione ha una coda dei processi in attesa

​

Problemi di frammentazione interna/esterna​

media

30

Frammentazione interna

Processo molto più piccolo della partizione ​in cui viene salvato (succede se le code delle partizioni più piccole sono tutte occupate).

media

31

Frammentazione interna - soluzione

Una sola coda di ingresso.

Se si libera una partizione, due criteri possibili:

  1. ​individuo il primo processo in coda che può essere contenuto

  2. individuo il processo più grande in coda che può essere contenuto (--> possibile starvation dei processi più piccoli)

media

32

Frammentazione esterna

Complessivamente c'è abbastanza spazio per ospitare un processo in coda ma è frammentato in partizioni diverse --> non assegnabile al processo​

media

33

Schema a partizione variabile

Possibilità di modificare dinamicamente il numero e la dimensione delle partizioni, in base alla dimensione del processo da allocare tramite unione di blocchi contigui o suddivisione di un blocco troppo grande

​

​SO più complesso con 4 strategie risolutive:

  1. ​first-fit

  2. ​next-fit

  3. best-fit

  4. ​worst-fit

​

​

34

Frammentazione esterna

Necessità di defrag (--> decadimento prestazioni). 1 byte/ms

media

35

Area di swap

Strategia sfruttata per processi in waiting list oppure a bassa priorità​

media

36

Multiple Choice

Quale tra le seguenti NON è una strategia che risolve il problema dell'allocazione dinamica della memoria centrale?

1

first-fit

2

best-fit

3

good-fit

4

worst-fit

37

Memoria virtuale

Obiettivi: evitare la frammentazione, non ricorrere alla compattazione

​

​Tecniche di allocazione NON contigua: paginazione e segmentazione

​

Ulteriore vantaggio: ​sono caricate in memoria solo le parti effettivamente utili per l'esecuzione del processo (il resto è su disco)

​

​Principio di località: è molto probabile che l'istruzione successiva sia vicina a quella correntemente in esecuzione

38

Paginazione

Suddivisione del programma in pagine di dimensione fissa ​(pagine logiche)

​

Suddivisione della memoria in pagine di dimensione fissa (​frame o pagine fisiche)

media

39

Paginazione

Le pagine logiche NON devono essere necessariamente contigue

​

Per caricare un programma basta una pagina fisica libera in cui salvare la prima pagina logica del programma (non va caricato interamente in memoria)

media

40

Paginazione - vantaggi
  • Mantenere in memoria solo le parti necessarie

  • ​Gestire solo piccole parti di memoria

  • ​No frammentazione esterna

  • ​Pochissima frammentazione interna

  • ​Possibilità di usare porzioni di memoria non contigue per un programma

41

Tabelle delle pagine

Una tabella delle pagine con gli indirizzi e le info di tutte le pagine fisiche

​

Una tabella per ogni processo​: quali parti in RAM e quali su disco​

media

42

Binding nella paginazione
media

43

Fetch policy

Il SO deve determinare quando una pagina va caricata in RAM​

​

  • demand page: pagina caricata solo quando viene fatto riferimento ad una sua locazione

  • ​prepaging: sfruttando il principio di località spaziale, quando si carica una pagina si caricano anche quelle adiacenti (senza esagerare)

44

Protezione della memoria

Nella tabella a ogni frame associati dei bit di protezione (sola lettura, lettura/scrittura, esecuzione)

​

Tentativo di accesso illegale --> trap al SO​ --> sospensione processo

​

Un bit indica se la pagina appartiene allo spazio del processo (valid) oppure no (invalid)​ --> segment violation

45

Page fault

Bit di validità:

0 = pagina non in memoria

1 = pagina in memoria

​

Fetch pagina ma bit di validità = 0 --> page fault​

​

Se c'è pagina libera OK, altrimenti ​page replacement

media

46

Page fault
media

​(3) page fault può essere per riferimento illegale (protezione memoria) o legale --> caricamento nuova pagina in memoria

47

Località spazio-temporale
  • Località spaziale: ​è altamente probabile che la prossima area di memoria a cui accedere sia vicina a quelle a cui abbiamo acceduto di recente (codice sequenziale)

  • ​Località temporale: è altamente probabile che si acceda nuovamente a locazioni di memoria a cui si è acceduto recentemente (cfr. cicli, funzioni ricorsive)

​

Il 90% del tempo è speso sul 10% del codice

48

Replacement policy

Scegliere la pagina vittima ​da rimuovere dalla memoria per far posto alla nuova pagina da caricare

​

  1. ​Resident set management: sceglierla tra le pagine del processo da caricare o da pagine di altri processi?

  2. Page replacement algorithm: ​algoritmi per scegliere la pagina con l'obiettivo di minimizzare il numero di page fault

  3. ​Optimal page replacement algorithm: qual è la pagina vittima migliore? Qual è il tempo massimo da impiegare per cercarla?

49

Replacement policy
  1. Individuazione della Pvitt

  2. ​Salvataggio di Pvitt sul disco

  3. ​Caricamento di Pnew nel frame appena liberato

  4. ​Aggiornamento tabelle

  5. Ripresa del processo​

​

Se ​la versione di Pvitt è identica a quella già presente nel disco, il passo 2 si salta (dirty bit: = 0 Pvitt su disco è già aggiornata --> saltiamo il passo 2, = 1 Pvitt su disco non è aggiornata --> eseguiamo il passo 2)

50

Algoritmi di sostituzione

Obiettivo: minimizzare il numero di page fault​

Strategia: sostituire ​le pagine la cui probabilità di essere accedute a breve termine è bassa (principio​ di località)

​

  1. ​FIFO Page Replacement Algorithm

  2. ​Least Recently Used

  3. ​Not Recently Used

  4. Algoritmi di conteggio​

​

51

FIFO Page Replacement Algorithm

Sostituisce la pagina che occupa da più tempo la memoria, indipendentemente dal suo uso (NON si usa il principio di località)

​

Necessario il time stamping dei riferimenti per ​conoscere la cronologia dei caricamenti in memoria

52

Least Recently Used (LRU)

Si basa sul principio di località: si sostituisce la pagina che è stata usata meno recentemente

​

Necessario il time-of-use, l'istante in cui è avvenuto l'ultimo accesso

​

Struttura di tipo stack: quando si accede ​alla pagina la mettiamo al top e quindi al bottom c'è la pagina vittima

53

Not Recently Used (NRU)

Versione semplificata di LRU​

​

Per ogni pagina un bit di uso R inizializzato a 0, messo a 1 quando si accede alla pagina, periodicamente resettato a 0

​

Versione modificata con il dirty bit M

​

Viene rimpiazzata la pagina con R = 0 e M = 0​

54

Algoritmi di conteggio

​​

Least Frequently Used (LFU): sostituisce la pagina con il minor numero di riferimenti (una pagina con molti riferimenti è molto usata e quindi serve)

​

Most Frequently Used (MFU): ​sostituisce la pagina con il maggior numero di riferimenti (pochi riferimenti perché caricata da poco e quindi serve)

​

55

Working set

​​Memoria di massa molto più lenta della memoria centrale

Tanti swapping --> forte rallentamento del sistema​ --> trashing

​

​

​

media

​​Δ è la dimensione del working set o finestra di lavoro, una stima del numero di pagine necessarie al processo per evolvere correttamente

​

​

​

56

Working set

​​Attenzione al valore del working set Δ

  • ​troppo basso --> troppi page fault

  • ​troppo alto --> caricamento di pagine non necessarie​

​​D è la richiesta totale di frame del processo

WSS è il numero di pagine referenziate dal processo al riferimento i

​

​

​

media
  • D < num pagine libere --> il nuovo processo viene avviato

  • ​D > num pagine libere --> swapping

57

Working set

​​Metodo alternativo

media

58

Riepilogo paginazione

​​

Permette di eliminare del tutto la frammentazione esterna perché size(pagina fisica) = size(pagina logica) ed è possibile allocare in modo non contiguo

​

59

Segmentazione

​​Come la paginazione ma i segmenti sono di dimensione variabile

​

La memoria centrale viene suddivisa come il codice (in funzioni)​

​

Ogni funzione del codice = un segmento​

​

A ogni segmento è associato un numero e la sua lunghezza

60

Segmentazione
media

61

Segmentazione
media

62

Segmentazione - vantaggi
  • ​​più semplice la gestione di strutture dati dinamiche

    ​

  • ​facilitata la condivisione di segmenti tra processi

    ​

  • più semplice il linking di procedure compilate separatamente

    ​

  • ​ogni segmento può avere un diverso tipo di protezione

63

Segmentazione - problema

Frammentazione esterna (checkerboarding)​

media

64

Segmentazione con paginazione

​Memoria centrale suddivisa in ​pagine fisiche (frame) di dimensione fissa

Spazio di indirizzamento del processo suddiviso in segmenti logici di dimensioni diverse che sono ulteriormente suddivisi in pagine logiche della stessa dimensione dei frame

​

media

Struttura dell'indirizzo logico

65

Multiple Choice

Il page fault si verifica quando

1

le pagine di memoria sono tutte occupate

2

in memoria non ci sono pagine libere

3

il sistema operativo non trova la pagina da caricare

4

un programma indirizza una pagina non presente in memoria

66

Multiple Choice

Quale tra i seguenti NON è un page replacement algorithm?

1

Least Recently Used

2

Least Frequently Used

3

Not Recently Used

4

Not Frequently Used

5

Most Frequently Used

67

Multiple Choice

Quale tra le seguenti affermazioni è falsa in merito alla paginazione?

1

La memoria fisica è divisa in blocchi chiamati frame o pagine fisiche

2

Il programma è diviso in blocchi di uguale dimensione dette pagine

3

Il numero di pagine logiche è uguale al numero delle pagine fisiche

4

Il codice deve essere rilocabile dinamicamente

5

Si risolve il problema della frammentazione esterna

68

Multiple Choice

La strategia di sostituzione FIFO Page Replacement Algorithm tiene conto del principio di località

1

Vero

2

Falso

69

Multiple Choice

Least Frequently Used e Most Frequently Used sono algoritmi di conteggio

1

Vero

2

Falso

70

Multiple Choice

Il fenomeno del trashing è dovuto alla lentezza dello swapping

1

Vero

2

Falso

71

Multiple Choice

Il fenomeno del trashing è dovuto al fatto che la memoria secondaria è molto più lenta rispetto alla memoria principale

1

Vero

2

Falso

72

Multiple Choice

Il working set è un'approssimazione della dimensione dell'area di località del programma

1

Vero

2

Falso

73

Multiple Choice

Un working set troppo largo non include l'intera località e non riesce a minimizzare il numero di page fault

1

Vero

2

Falso

pattern-tertiary
Sistemi Operativi - Gestione della memoria

By Giovanni Pedroncelli

Show answer

Auto Play

Slide 1 / 73

SLIDE