lezione 18 sistemi operativihomes.dico.unimi.it/sisop/lucidi0607/solez18.pdf · • la memoria...

55
Memoria Virtuale Lezione 18 Sistemi Operativi

Upload: others

Post on 26-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

Memoria Virtuale

Lezione 18Sistemi Operativi

Page 2: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi2

I Principi

• Abbiamo sinora assunto che durante l’esecuzione di un programma, lo stesso dovesse risiedere completamente in MC

• Intorno alla metà degli anni ’70 viene però osservato che questo non è un requisito fondamentale per consentire l’esecuzione di un programma

Page 3: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi3

Località

• Durante la loro esecuzione i programmi godono di due importanti proprietà:• Località temporale: se un elemento x viene referenziato

all’istante t, la probabilità che x venga referenziato anche all’istante t+t’ cresce al tendere di t’0

• Località spaziale: se un elemento x di posizione s viene referenziato all’istante t, la probabilità che venga referenziato un elemento x’ di posizione s’,

all’istante t+t’ cresce al tendere di t’ 0

∣s−s '∣≤Δ

Page 4: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi4

Località

• I principi di località suggeriscono un importante accorgimento nella gestione della memoria:

“non è necessario caricare un programma interamente in memoria per poterlo eseguire, è sufficiente caricarlo località per località”

Page 5: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi5

Località: i vantaggi

• I vantaggi che deriverebbero dall’adozione del suddetto schema sono:• Svincolo della dimensione di un programma dalla

dimensione della memoria centrale• Aumento del livello di programmazione, a parità di

memoria centrale disponibile• Maggiore velocità nelle operazioni di swapping

Page 6: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi6

Tecniche implementative

• Esistono due approcci per realizzare questa funzionalità:

• Overlay• Demand Paging (Segmentation)

Page 7: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi7

Overlay

• Meccanismo molto primitivo per realizzare la memoria virtuale

• Il programmatore suddivide il programma in porzioni la cui esecuzione non si sovrappone nel tempo

• Ogni porzione è chiamata overlay• Gli overlay vengono caricati in istanti

successivi ed eseguiti

Page 8: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi8

Demand Paging

• Sistema completamente automatico per realizzare memoria virtuale

• Uno schema elementare può essere il seguente (lazy swapper)• Carico la prima pagina dl programma da eseguire• Quando una nuova pagina viene referenziata la

carico in memoria

Page 9: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi9

Demand Paging

Page 10: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi10

Demand Paging

• La precedente strategia richiede però che sia possibile stabilire a priori la presenza o meno di una pagina in memoria

• Uso il bit present/absent (validità) nella tabella delle pagine

• L’evento di pagina non trovata in memoria è denominato page fault

• Gestire il page fault significa preoccuparsi di recuperare la pagina da disco e portarla in memoria

Page 11: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi11

Gestione del Page Fault

Page 12: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi12

Problemi da affrontare

• La precedente procedura presuppone la soluzione dei seguenti problemi:• Come faccio il backup di un’istruzione?• Come e dove recupero l’indirizzo delle pagine che

risiedono su disco?• Quali frame decido di rimpiazzare?

Page 13: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi13

Page Replacement Algorithms

• Durante la gestione di un page fault può essere necessario:

• Individuare le pagine da scaricare su disco• Salvare le pagine modificate durante l’esecuzione,

quelle non modificate possono essere sovrascritte

Page 14: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi14

Optimal Page Replacement Algorithm

• Sostituire, tra quelle presenti in memoria, la pagina che sarà referenziata il più tardi possibile• Ottimale ma non realizzabile

• Possibili stime• Tenere traccia dell’uso passato delle pagine e inferire

il futuro dal passato• Anche quest’euristica è molto difficile da realizzare

praticamente

Page 15: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi15

Not Recently Used Page Replacement Algorithm

• Per ogni pagina l’hardware gestisce un Reference bit e un Modified bit

• I bit vengono settati quando la pagina è acceduta e/o modificata

• Le pagine vengono così suddivise in quattro1. not referenced, not modified2. not referenced, modified3. referenced, not modified4. referenced, modified

• NRU rimuove la pagine casualmente a partire dalla classe con l’indice più basso non vuota

Page 16: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi16

FIFO Page Replacement Algorithm

• Mantiene una lista delle pagine che rispetta l’ordine con cui le stesse sono state caricate in memoria (le pagine più “anziane” sono all’inizio della lista)

• Le pagine più anziane sono le prime ad essere sostituite

• Svantaggio• Sostituire una pagine che è referenziata spesso

Page 17: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi17

Second Chance Page Replacement Algorithm

• Le pagine sono ordinate FIFO con un bit d’uso R• La lista delle pagine quando si verifica un page fault

all’istante 20, e A ha il bit R a uno

Page 18: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi18

The Clock Page Replacement Algorithm

• Come seconda chance ma usa una lista circolare, la lancetta punta alla pagina più vecchia

Page 19: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi19

Least Recently Used (LRU)

• Una buona approssimazione dell’algoritmo ottimale• Assume che le pagine usate recentemente saranno usate

anche in un futuro prossimo• Elimina le pagine che non sono usate da più tempo

• Mantiene una lista linkata di pagine• Quelle usate più recentemente all’inizio, • È necessario aggiornare questa lista ad ogni riferimento a pagina

• Alternativamente è possibile mantenere un contatore (64 bit) che si incrementa all’esecuzione di ogni istruzione ed il cui valore viene caricato nell’elemento della tabella delle pagine referenziato dall’istruzione • La pagina vittima è quella con il contatore più basso

Page 20: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi20

Simulating LRU in Software (aging)

• L’algoritmo di aging simula LRU in software

Page 21: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi21

Review of Page Replacement Algorithms

Page 22: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi22

The Working Set Page Replacement Algorithm

• Il working set è costituito dall’insieme delle pagine usate negli ultimi k riferimenti a memoria

• w(k,t) è la dimensione del working set all’istante t

Page 23: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi23

Modeling Page Replacement AlgorithmsBelady's Anomaly

• FIFO con 3 page frames

• FIFO con 4 page frames

• I page fault sono contraddistinti da P

Page 24: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi24

Allocation Policy

a) Configurazione originaleb) Rimpiazzamento localec) Rimpiazzamento globale

Page 25: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi25

Page Fault Frequency algorithm

Basato su allocazione globale, si sforza di mantenere i parametri di page fault e n.ro frame all’interno della linea tratteggiata

Page 26: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi26

Dimensione Pagine

• Vantaggi pagine piccole• Minore frammentazione interna • Più adattabili alle dimensioni dei programmi• Riduzione spazio di memoria inutilizzato

• Svantaggi• Grosse tabelle delle pagine• Più accessi a disco

Page 27: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi27

Dimensione Pagine

Page 28: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi28

Segmentazione

• La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati può essere

vantaggioso in presenza di aree dati distinte che crescono durante l’esecuzione• Es. Compilatore che usa aree per

• Testo sorgente• Symbol table• Tabella delle costanti intere e floating point• Albero di parsing• Stack per le chiamate di procedura del compilatore stesso

Page 29: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi29

Segmentazione

Page 30: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi30

Segmentazione

• Si fornisce alla macchina un insieme di spazi di indirizzi logici indipendenti detti segmenti

• I segmenti hanno dimensioni diverse e possono cambiare senza interferire gli uni con gli altri

• L’utente definisce i segmenti ma non li gestisce• Semplifica le operazioni di linking

• Segmento, offset per indiciare i moduli• I segmenti sono indipendenti

• Facilita la condivisione di librerie

Page 31: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi31

Segmentazione

Page 32: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi32

La gestione della memoria sul Pentium

• Supporto per: pure segmentation, pure paging, segmentazione paginata

• Pure paging: tutti i processi hanno un unico segmento di 4GB, adottata da Windows e Linux

• Due tipi di tabelle di sistema contengono i descrittori dei segmenti: GDT comune a tutti i processi e LDT una per processo

• Per poter accedere ad un descrittore di segmento è necessario che il suo selettore sia contenuto in uno dei segment register dell’architettura

Page 33: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi33

Segment Descriptor

• Contiene tutte le informazioni relative ad un segmento • Occupa 8 byte• Una volta selezionato il suo contenuto è copiato in

registri del processore per accelerarne l’accesso

Page 34: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi34

Segment Descriptor

• I campi di interesse per il calcolo dell’indirizzo fisico a partire da un’inidirzzo logico costituito dalla copia <selector, offset> sono:• Base di 32 bit che indica l’indirizzo di partenza del

segmento• Limit di 20 bit che indica la dimensione massima in

byte se Gbit=0 in pagine di 4Kbyte se Gbit=1

Page 35: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi35

Calcolo dell’indirizzo in segmentazione

Page 36: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi36

Paginazione Intel

• Nel caso di paginazione, predisposta dal kernel, l’indirizzo di 32 bit così generato deve essere ulteriormente trasformato passando attraverso la tabella delle pagine

• Poiché però le pagine hanno dimensione 4K ed i segmenti 4GB dovremmo avere tabelle delle pagine di 1M di elementi, per evitare questo problema si usa una tabella a due livelli

Page 37: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi37

Paginazione Intel

Page 38: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi38

Gestione memoria in Minix

• Effettuata dal PM• Minix di fatto non usa memoria virtuale, un

programma viene interamente caricato in memoria prima della sua esecuzione e vi rimane sino al termine

• Per l’allocazione del processo in memoria si usa una politica First-Fit

Page 39: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi39

PM

• Concorre insieme a FS e SYSTASK all’esecuzione di una serie di system call che prevedono l’allocazione o la deallocazione di memoria • Fork()• Exec• Exit• Brk • Wait • memalloc

Page 40: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi40

Memory layout

• Due diverse strategie di gestione dei processi:• Un unico blocco di memoria contiene dati e

istruzioni (combined I & D space) di un programma• Istruzioni e dati risiedono su due blocchi separati

consente la condivisione del codice

Page 41: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi41

Combined I&D

Page 42: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi42

Combined I&D

• La memoria è allocata in due occasioni: fork() e exec()• Durante la fork() si copia l’immagine del padre• L’exec provvede prima a rilasciare la memoria del

processo che la esegue e poi a caricare il nuovo processo la cui dimensione sarà reperita attraverso l’header del file di riferimento

• Quando un processo termina la memoria che occupava viene rilasciata

• Problema: l’exec potrebbe fallire, a chi si riporta l’esito negativo se il processo che l’ha eseguita è stato rimosso??

Page 43: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi43

Shared Text

• Nel caso di programmi compilati tenendo separati lo spazio dati e istruzioni durante la fork si porvvederà solo a duplicare lo spazio dati

• L’exec provvederà a ricercare nella tabella dei processi se esiste qualche altro processo che utilizza lo stesso codice

• Le dimensioni delle diverse porzioni di dati così come lo spazio supplementare da riservare per la crescita dello stack sono reperite dal PM all’interno dell’header del file oggetto

Page 44: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi44

Allocazione dei Processi

• PM gestisce una tabella dei processi mproc, “parallela” a quella gestita dal kernel in cui mantiene per ogni processo informazioni relative all’allocazione del processo in memoria (in particolare la struttura mp_seg di tipo mem_map)

• Accanto a questa tabella gestisce anche la tabella degli hole di memoria

• Tutte le dimensioni di spazi di memoria\sono riportate in memory click (1KB) invece di byte

Page 45: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi45

Esempio

Page 46: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi46

Hole list

• Contiene l’elenco di tutti gli hole di memoria ordinati per indirizzo di memoria crescente

• Il gap tra data e stack segment non è da considerarsi un hole poiché si tratta di memoria assegnata ad un processo

• Hole list viene aggiornata con fork e exit

Page 47: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi47

Signal

• Meccanismo per convogliare segnali sicroni e asincroni ad un processo utente

• Esiste un insieme predefinito di segnali e per ciascuno di essi sono definite le azioni di default che devono essere effettuate quando un processo riceve questi tipi di segnale

Page 48: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi48

Esempi

Page 49: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi49

Esempio

• Signal definite da POSIX e MINIX 3.• Le Signal indicate con (*) dipendono dall’ hardware • Signal con (M) non sono POSIX, sono però definite in

MINIX per questioni di back compatibilità

Page 50: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi50

Signal

• Un processo può però specificare:• Azioni alternative da eseguire quando riceve un

segnale di un certo tipo e quindi specificare un signal handler per la gestione del segnale

• Dichiarare di voler ignorare un certo tipo di segnale• Alle suddette regole fa eccezione il segnale

SIGKILL che non può essere ignorato• Tutte le procedure di gestione di un segnale

terminano con l’esecuzione della syscall sigreturn

Page 51: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi51

Segnali e processi utente

• Per specificare le proprie opzioni su una signal, un processo ha a disposizione due system call:• Sigaction: usata per specificare i segnali che si

intendono ignorare, i signal handler specifici che si intendono adottare, o ripristinare le azioni di default su un segnale

• Sigprocmask: può essere usata per bloccare un segnale per un certo periodo di tempo dopo il quale sarà il processo stesso a riabilitarlo con una sigaction

Page 52: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi52

Strutture Dati

• Per ogni processo sono contenute, nella tabella dei processi, delle bitmask che indicano i segnali disabilitati, abilitati e ignorati

• Per ogni segnale esiste inoltre una struttura sigaction che specifica gli handler che il processo intende usare per gestire il segnale stesso

Page 53: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi53

Esecuzione di una Sigaction

• Un segnale può essere generato solo da un processo in esecuzione quindi il destinatario del segnale in quel momento non può essere in running

• Il sistema operativo deve operare affinché nel momento in cui il destinatario del segnale viene selezionato per l’esecuzione, la prima attività che viene eseguita è il signal handler corrispondente

Page 54: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi54

Esecuzione di una sigaction

• Modifica lo stack del processo utente dove salva copia dello stack frame nel PCB e carica informazioni utili per l’esecuzione della sigreturn tra cui ret addr1, indirizzo di sigreturn

• Modifica stack frame nel PCB• Viene eseguito l’handler associato alla signal• Viene eseguita sigreturn• Il controllo ritorna allo scheduler che decide il

prossimo proceso da eseguire

Page 55: Lezione 18 Sistemi Operativihomes.dico.unimi.it/sisop/lucidi0607/Solez18.pdf · • La memoria virtuale vista finora è monodimensionale • Avere più spazi di indirizzi separati

A.A. 2006/2007 Corso: Sistemi Operativi

© Danilo Bruschi55