Renato Agati delle risorse La Gestione
Schedulazione dei processi Gestione delle periferiche File system
Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File system
Schedulazione dei processi Stati di un processo New Terminated Ready Running Waiting
Schedulazione dei processi Mono programmazione Algoritmi di schedulazione F. L. F. S. S. J. F. Priorità Round Robin
Schedulazione dei processi Multi programmazione Processi paralleli indipendenti condivisione Mutua esclusione cooperazione rischi dipendenti comunicazione sincronizzazione competizione stallo
Schedulazione dei processi Ogni programma eseguibile occupa uno spazio logico Per essere eseguito il programma deve essere caricato (totalmente o parzialmente) in memoria, occupando uno spazio fisico Lo spazio fisico viene assegnato e gestito dal Gestore della memoria (memory manager) Gestione delle periferiche Il Gestore della memoria: Consente il caricamento di più programmi Controlla che ogni processo acceda solo all area di memoria assegnata File system
Schedulazione dei processi Caricamento statico Programma caricato per intero; risiede sempre in memoria per tutto il tempo dell esecuzione Gestione delle periferiche Caricamento dinamico Programma caricato per intero o porzioni; Programma caricato e scaricato più volte; Lo spazio fisico può essere ridefinito più volte File system
Schedulazione dei processi Caricamento statico Partizioni fisse Partizioni variabili Segmentazione Paginazione Gestione delle periferiche Caricamento dinamico Memoria virtuale Paginazione dinamica File system Segmentazione dinamica Segmentazione con Paginazione
Caricamento statico Partizioni fisse Sistema Operativo Partizioni di dimensioni diverse, ma fisse Partizione 1 Partizione 2 Partizione 3 Partizione 4 Processo 1 Libera Processo 2 Libera Ogni programma viene caricato in una partizione, dove rimane per tutta l esecuzione Se le partizioni sono più piccole del processo da caricare, esso non può essere caricato Se le partizioni sono molto grandi, si spreca spazio E bene che ogni processo occupi la partizione più piccola disponibile Esiste una tabella di descrittori di partizioni
Caricamento statico Partizioni fisse N. Partizione Dimensione Indirizzo iniziale Stato 1 8 MB 312 MB In uso 2 32 MB 320 MB In uso 3 32 MB 352 MB Non in uso 4 120 MB 384 MB Non in uso 5 520 MB 504 MB In uso NOTA: si suppone che i primo 312 MB siano usati dal sistema operativo
Caricamento statico Partizioni fisse N. Partizione Dimensione Dimensione processo Spazio sprecato 1 8 MB 1 MB 7 MB 2 32 MB 9 MB 23 MB 3 32 MB 9 MB 23 MB 4 120 MB 33 MB 87 MB 5 520 MB 121 MB 399 MB TOTALE 712 MB 173 MB 539 MB NOTA: si suppone che i primo 312 MB siano usati dal sistema operativo
Caricamento statico Partizioni variabili Partizione 1 Partizione 2 Partizione 3 Partizione 4 Sistema Operativo Processo 1 Libera Processo 2 Libera Le partizioni vengono create man mano che deve essere caricato un processo Viene comunque creata una partizione libera tra due partizioni occupate Esistono due tabelle di descrittori, una per le partizioni, una per le aree libere
Caricamento statico Partizioni variabili Partizione 1 Partizione 2 Partizione 3 Partizione 4 Sistema Operativo Processo 1 Libera Processo 2 Libera Le partizioni create rimangono tali anche quando il processo è terminato. Quando un nuovo processo non trova una partizione adatta, viene eseguito il compattamento, ovvero la ridefinizione e riallocazione delle partizioni di memoria.
Caricamento statico Segmentazione Partizione 1 Partizione 2 Partizione 3 Partizione 4 Sistema Operativo Segmento 1 Libera Segmento 2 Libera Lo spazio logico del programma non è uno spazio lineare ma viene suddiviso in segmenti Ogni segmento viene caricato in una partizione con il metodo delle partizioni variabili La frammentazione dei processi viene ridotta perché è più facile adattare i segmenti alle partizioni. Esistono tabelle dei descrittori di partizioni e di segmento.
Caricamento statico Paginazione Blocco 1 Blocco 2 Blocco 3 ----- ----- ----- Blocco n Pagina1 Pagina2 Pagina3 La memoria viene suddivisa in blocchi tutti di uguale dimensione Lo spazio logico del programma viene suddiviso in pagine della stessa dimensione dei blocchi Ogni pagina viene memorizzata in blocchi qualsiasi, contigui o non contigui Esiste tabella di descrittori dei blocchi e del loro stato. Esiste tabella di mappa di pagina per sapere in quali blocchi sono memorizzate le pagine di un programma
Caricamento dinamico Memoria virtuale Nel caricamento dinamico un programma viene caricato per intero o porzioni Il programma (o porzione) può essere caricato e scaricato più volte (swapping) Oltre allo spazio fisico deve essere assegnato al processo anche uno spazio su disco in un apposita area (area di swap) Caricamenti e scaricamenti, totali o parziali, durante l esecuzione, consistono in trasferimenti dall area di swap alla memoria principale e viceversa. La memoria reale e l area di swap su disco costituiscono la memoria virtuale Lo spazio fisico può essere ridefinito più volte
Caricamento dinamico Memoria virtuale I processi permanenti del sistema operativo non vengono mai caricati dinamicamente I processi che possono essere scaricati sono: I processi in stato di attesa (a meno che non devono usare il DMA) I processi che esauriscono il time-slice
Caricamento dinamico Paginazione dinamica Lo spazio logico del programma viene suddiviso in pagine Alcune pagine vengono caricate in memoria, altre pagine rimangono nell area di swap e vengono caricate all occorenza. Le pagine caricate in memoria sono dette accessibili; quando il programma fa riferimento ad una istruzione di una pagina inaccessibile : si verifica un interruzione (page fault) Il processo viene sospeso (passa in stato di attesa) Il sistema operativo provvede a caricare la pagina Il processo viene riattivato solo quando la pagina è stata caricata Esistono algoritmi per la gestione dei blocchi e delle pagine (quali pagine inaccessibili devono essere caricate, liberazione di blocchi scaricando le pagine accessibili, ecc.)
Caricamento dinamico Segmentazione dinamica La tecnica della segmentazione dinamica è simile a quella della paginazione dinamica Lo spazio logico del programma viene suddiviso in segmenti I segmenti vengono caricati in partizioni variabili
Caricamento dinamico Segmentazione con Paginazione Il metodo della segmentazione con paginazione combina insieme le tecniche della segmentazione e della paginazione. Il programma viene suddiviso in segmenti; ciascun segmento viene suddiviso in pagine. La memoria viene suddivisa in blocchi di ugual misura.
Sistemi Multiprocessore Memoria condivisa (piattaforma shared-address-space) La memoria è in comune ed è accessibile a tutti i processori; I cambiamenti effettuati da un processore in una locazione di memoria, sono visibili a tutti gli altri processori (cache coherency); L accesso alla memoria può essere: - uniforme (UMA) - non uniforme (NUMA) Accesso alla memoria uniforme (UMA - Uniform Memory Access): Processori identici tempo di accesso di ogni processore alla memoria è uguale per tutti; utilizzo nelle macchine SMP Symmetric MultiProcessor Accesso alla memoria non uniforme (NUMA Non Uniform Memory Access): tempo di accesso differente per ogni processore un processore può accedere direttamente alla memoria di un altro processore. Vantaggi della memoria condivisa: la vicinanza della memoria con i processori garantisce uno scambio dati veloce e uniforme. Svantaggi della memoria condivisa: l aggiunta di nuovi processori aumenta il traffico sul bus della memoria condivisa; aggiungendo nuovi processori è necessario rivedere l applicazione per risincronizzare gli accessi alla memoria.
Sistemi Multiprocessore Memoria distribuita (piattaforma message-passing) Ogni processore ha una sua propria memoria locale che non può essere condivisa con un altro processore. Ogni processore lavora in maniera indipendente dagli altri processori; i cambiamenti eseguiti nella memoria da un processore non influenzano il calcolo degli altri processori. Architettura di memoria presente nel caso in cui il calcolo parallelo viene implementato con più sistemi collegati tra loro attraverso una rete locale. Vantaggi della memoria distribuita: l aumento del numero di processori è accompagnato da un aumento proporzionale della memoria; ogni processore può accedere alla propria memoria senza interferenze di altri processori. Svantaggi della memoria distribuita: una maggiore complessità del software che deve garantire una corretta sincronizzazione tra le task di due processori quando uno di essi deve accedere ai dati elaborati dall altro. Accesso di tipo NUMA (tempi non uniformi)