Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Thread kernel e utente 25
Gli ULT vengono gestiti mediante delle apposite librerie, e il kernel non
sa proprio della loro esistenza; se si blocca un thread, si bloccano tutti
gli altri thread del processo.
I KLT vengono gestiti dal kernel come i semplici processi e creati tramite
delle chiamate al kernel, se si blocca un thread, non si bloccano anche
gli altri del processo. 26
Scheduling dei processi
I processi nella loro fase di esecuzione necessitano di risorse e di
tempo.
Le risorse possono essere dati presenti in memoria o anche risorse
fisiche come ad esempio una stampante ecc.., ma una risorsa che tutti i
processi utilizzano è il processore, la CPU.
Il tutto prende il nome di scheduling.
Ciò che si cerca di ottimizzare è:
• Il throughput, ovvero quanti processi vengono svolti in un
lasso di tempo
• Tempo di risposta
• Efficienza del processore
Durante lo scheduling, si cercherà di evitare sempre la starvation,
ovvero il tempo in cui il processo è in attesa perché non ha risorse
disponibili per essere eseguito 27
Tipologie di scheduling 28
1. Long-term Scheduling (Scheduling di Lungo Termine):
Questo tipo di scheduling decide quali processi dovrebbero
• essere aggiunti alla coda dei processi pronti per l'esecuzione.
Molto spesso viene utilizzato l’algoritmo FIFO, first in first out,
• dando priorità ai processi con priorità maggiore.
Più processi ci sono e meno tempo di CPU viene assegnato
• loro
2. Medium-term Scheduling (Scheduling di Medio Termine):
Questo tipo di scheduling decide quali processi in esecuzione
• dovrebbero essere spostati dalla memoria principale alla
memoria secondaria o viceversa.
• È coinvolto nel rilascio della memoria principale per fare
• spazio a nuovi processi e nel riportare i processi dalla
memoria secondaria quando sono pronti per essere eseguiti.
3. Short-term Scheduling (Scheduling di Breve Termine):
Questo tipo di scheduling decide quale processo, tra quelli
• che sono pronti per l'esecuzione (solitamente nella memoria
principale), dovrebbe avere accesso al processore (CPU).
Noto anche come dispatcher
• È responsabile della selezione rapida e frequente dei processi
• da eseguire per migliorare l'efficienza della CPU. 29
In oltre, in questa tipologia di scheduling abbiamo due tipologie di
criteri che vengono seguiti:
• Criteri utente
• Criteri sistema
Dove: • Turnaround time è il tempo dalla creazione del processo al
suo completamento
• Response time è il tempo di sottomissione di una richiesta e
la sua risposta 30
Dove: • Troughput è il numero di processi svolti in un lasso di tempo 31
Funzione di scheduling
Sceglie quale processo mandare in esecuzione.
Dipende da tre fattori:
• W il tempo trascorso in attesa
• E il tempo trascorso in esecuzione
• S il tempo totale richiesto
Viene invocata in due istanze di tempo:
• Preemptive
• Non preemptive 32
Esempi di esercizi con vari algoritmi di scheduling
Ovviamente, questo algoritmo penalizza i processi che hanno un tempo
di esecuzione piccolo che devono attendere la fine dell’esecuzione dei
processi con tempi lunghi. 33
Il round robin concede un lasso di tempo nei quali i processi possono
essere eseguiti, finito questo lasso di tempo si passa al processo
successivo.
Il tutto viene svolto tramite il clock. 34
Un aspetto negativo è che in questo caso, i processi con tempo di
esecuzione minore hanno la priorità sui processi con tempo maggiore e
potrebbero soffrire di starvation. 35
36
Scheduling su architetture multiprocessore
Queste sono alcune principali architetture multiprocessore
Il modo in cui possono essere assegnati i processori ai processi sono
due:
• Assegnamento statico
• Assegnamento dinamico 37
38
Gestione della memoria
Questi sono gli argomenti che verranno trattati in questo capitolo. 39
Requisiti di base e introduzione
Ad oggi giorno il costo delle memorie è in calo, questo corrisposto ad
un aumento di richiesta di memoria da parte di programmi e
applicazione.
Perché gestire la memoria?
perché ogni processo, se dovesse gestire arbitrariamente la memoria,
la utilizzerebbe tutta, e questo non permetterebbe più la
multiprogrammazione.
I requisiti per gestire la memoria sono:
• Rilocazione
• Protezione
• Condivisione
• Organizzazione fisica
• Organizzazione logica
Rilocazione
Chi usa il computer non deve sapere dove si trova il programma, anche
perché la sua posizione può non essere statica.
I riferimenti alla memoria devono essere tradotti in indirizzi fisici, sui
quali operare e prendere i dati dei programmi. 40
Il linker si occupa di generare il codice eseguibile a partire dai file
oggetto del programma. 41
Gli indirizzi di memoria possono essere di tre tipologie diverse:
• Logici
• Relativi
• Fisici o assoluti
L’indirizzo logico non corrisponde ad un indirizzo vero e proprio in
memoria, è utilizzato all’interno di un’astrazione della memoria virtuale
e corrisponde ad un indirizzo di questa memoria virtuale, più o meno
grande della RAM.
L’indirizzo relativo corrisponde ad un indirizzo che fa riferimento a
posizioni in memoria rispetto ad un punto specifico, è espresso come
uno spiazzamento da quel punto. Utilizzati per accedere a dati
all’interno di strutture dati.
L’indirizzo fisico/assoluto è l’effettivo indirizzo della posizione fisica in
memoria 42
La rilocazione degli indirizzi può avvenire in due modi differenti.
La soluzione più vecchia, il CTTS, quando l’indirizzo assoluto/fisico viene
determinato nel momento in cui il programma viene caricato in
memoria.
Una soluzione più nuova invece è quella di determinare gli indirizzi nel
momento in cui ci si riferisce alla memoria, per fare ciò però c’è bisogno
dell’hardware apposito
Per calcolare il nuovo indirizzo fisico/assoluto, viene utilizzato un
hardware e 2 registri:
1. Base register, indirizzo di partenza del processo sommato con
l’indirizzo relativo per avere quello assoluto
2. Bounds register, indirizzo limite utilizzato nel confronto tra la
somma di 1), nel caso in cui il risultato > Bounds Register,
genera un interrupt
Questi registri sono contenuti nel PCB del processo
Alcuni requisiti di base fondamentali per la gestione della memoria
sono: 43
44
45
Partizionamento della memoria
Il partizionamento è uno dei primi metodi utilizzati per gestire la
memoria e prevede diverse tecniche che sono:
1. Partizionamento fisso
2. Partizionamento dinamico
all’interno del partizionamento della memoria in generale poi
includiamo anche:
• Paginazione semplice
• Segmentazione semplice
• Paginazione con memoria virtuale
• Segmentazione con memoria virtuale 46
Partizionamento fisso
Il partizionamento fisso consiste nella suddivisione della memoria in
aree di egual grandezza, cosicché un processo <= può essere inserito.
I problemi però sono deducibili subito:
• un processo più grande non rientrerebbe nel partizionamento
• un processo piccolo occuperebbe una singola intera area e si
avrebbe una frammentazione interna, ovvero spreco di memoria
non utilizzata
per ovviare a questi problemi si è pensato al Partizionamento Fisso
Variabile, ovvero aree di memoria di diversa grandezza ma che non
cambiano, una volta decise all’inizio restano tali. 47
Per decidere quali processi assegnare alle diverse aree di memoria
partizionate, viene utilizzato un algoritmo di posizionamento 48
Partizionamento dinamico 49
Con il partizionamento dinamico però comporta a spazi di memoria che
non vengono utilizzati dai processi, creando così la frammentazione
esterna.
per poter scegliere dove allocare in memoria il processo, vengono
utilizzati 3 algoritmi di posizionamento e sono:
• best-fit
• first-fit
• next-fit 50
51
B uddy system è una tecnica di gestione della memoria utilizzata
nei sistemi operativi per affrontare il problema della
frammentazione esterna, in particolare in contesti di allocazione
dinamica della memoria.
In questo sistema, la memoria è organizzata in blocchi di dimensioni di
potenze di 2, e ogni blocco ha un "compagno" o "buddy" con la stessa
dimensione.
Quando un processo richiede una certa quantità di memoria, il sistema
cerca un blocco libero di dimensioni adeguate. Se non trova un blocco
esattamente della dimensione richiesta, cerca un blocco il cui buddy
può essere diviso per ottenere il blocco richiesto.
Quando un blocco viene assegnato a un processo, il suo buddy diventa
libero. Se entrambi i blocchi adiacenti sono liberi, possono essere
combinati per formare un blocco di dimensioni superiori. Questo
processo di "fusione" o "coalescenza" aiuta a prevenire la
frammentazione esterna, consentendo di riutilizzare la memoria in
maniera più efficiente. 52
Paginazione
Nella paginazione, la memoria fisica e virtuale è divisa in pagine di
dimensioni uguali. La memoria virtuale di un processo è suddivisa in
pagine, e lo stesso avviene per la memoria fisica.
Paginazione semplice
Non usata, ma importante per introdurre la memoria virtuale.
• La memoria viene partizionata in pezzi di grandezza uguale e
piccola (frame)
• Lo stesso trattamento viene riservato ai processi (pagine)
Ogni pagina, per essere usata, dev’essere collocata in un frame
pagine contigue possono essere messe in frame distanti
in generale, una pagina può essere messa in un qualunque frame
ovviamente, una pagina ed un frame hanno la stessa dimensione.
Ogni processo ha una propria page table, la tabella delle pagine, e
questa tabella ci dice ogni pagina del processo dove si trova.
Un indirizzo di memoria può essere visto come un numero di pagina e
uno spiazzamento al suo interno. 53
Adesso vedremo un esempio con le memorie:
Per il processo D ad esempio, all’interno della sua page table abbiamo:
la posizione delle sue pagine che è data dai valori delle celle della
tabella, e il numero di pagina dato dall’indice della tabella.
Ad esempio, la pagina 2, la troviamo in posizione 6 nella memoria. 54
Vediamo un esempio di traduzione di indirizzi: 55
Segmentazione
Un programma viene suddiviso in segmenti di dimensione variabile con
un limite massimo.
L’indirizzo di memoria è un numero d