Gli stati di un processo



Похожие документы
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Pronto Esecuzione Attesa Terminazione

Scheduling della CPU

Scheduling della CPU:

Sistemi Operativi SCHEDULING DELLA CPU

Lo scheduling. Tipici schedulatori

Lo schedulatore del kernel

Sistemi Operativi Kernel

Corso di Informatica

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

Processi e Thread. Scheduling (Schedulazione)

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst

Sistemi Operativi (modulo di Informatica II) I processi

Scheduling. Lo scheduler è la parte del SO che si occupa di

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

Lez. 4 Lo scheduling dei processi. Corso: Sistemi Operativi Danilo Bruschi

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Criteri di Scheduling Algoritmi di Scheduling Multiple-Processor Scheduling Asymmetric/Symmetric multiprocessing Processori Multicore

5. Scheduling della CPU. 5.1 Concetti Fondamentali Lo scheduler della CPU

5. Scheduling della CPU

Corso di Sistemi di Elaborazione delle informazioni

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il software. la parte contro cui si può solo imprecare. Il software

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

GESTIONE DEI PROCESSI

Scheduling. Scheduling 14/12/2003 1/7

Obiettivo della multiprogrammazione: massimizzazione dell utilizzo CPU. Scheduling della CPU: commuta l uso della CPU tra i vari processi

TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni

Algoritmi di scheduling

Lo scheduler di UNIX (1)

Capitolo 5: Scheduling della CPU! Scheduling della CPU! Concetti di Base! Alternanza di Sequenze di CPU- e I/O-Burst!

Scheduling della CPU Simulazione in linguaggio Java

La schedulazione. E.Mumolo

La Gestione delle risorse Renato Agati

Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Il Sistema Operativo (1)

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Gestione della memoria centrale

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi. Scheduling dei processi

Gestione del processore e dei processi

SCHEDULATORI DI PROCESSO

Scheduling della CPU

Processo - generalità

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi. 5 LEZIONE SCHEDULING DELLA CPU CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi operativi. Esempi di sistemi operativi

Sistema operativo: Gestione dei processi

I processi Unix. Entry della tabella dei processi

Sistemi Operativi. Schedulazione della CPU

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

J. Assfalg Appunti di Sistemi Operativi

Architettura hardware

Introduzione ai Sistemi Operativi

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base)

DMA Accesso Diretto alla Memoria

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Scheduling. Dipartimento di Informatica Università di Verona, Italy. Sommario

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Scheduling Introduzione Tipi di scheduler Scheduler di lungo termine (SLT) Scheduler di medio termine (SMT) Scheduler di breve termine (SBT)

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

SISTEMI OPERATIVI. Gestione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 13/05/2007

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Funzioni del Sistema Operativo

Il memory manager. Gestione della memoria centrale

Gestione della Memoria

Approccio stratificato

STRUTTURE DEI SISTEMI DI CALCOLO

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

B+Trees. Introduzione

Scheduling. Livelli Algoritmi

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

GENERAZIONE PROCESSO FIGLIO (padre attende terminazione del figlio)

Транскрипт:

Roberta Gerboni 1 Gli stati di un processo Gli stati possibili nei quali si può trovare un processo sono: Hold (parcheggio): il programma (chiamato job) è stato proposto al sistema e attende di essere caricato in memoria centrale. Esso è in attesa di esecuzione e si trovainmemoriadimassa. Ready (pronto): il programma è diventato processo e si trova in memoria centrale, pronto per essere eseguito. Esso attende che gli venga assegnata la CPU. Run (esecuzione): il processo è in esecuzione (in ogni istante un solo processo si trovainquestostato)perchéglièstataassegnatalacpu. Wait (attesa): il processo è in attesa (ad esempio deve attendere la fine di un operazione di I/O). Terminate (terminazione): il processo è terminato e può essere recuperato lo spazio della memoria centrale in cui era caricato. 2

Unprocessopassalapropriavitaafarelecode. Quando un nuovo processo nasce, è in coda nello stato di HOLD e richiede uno spazio nella memoria RAM dove essere caricato; nel momento in cui gli viene assegnato questo spazio viene messo nella READY queue nella quale attenderà la disponibilità della risorsa processore; appena lo scheduler lo seleziona esso otterrà il possesso del processore con cui procedere alla sua elaborazione(stato dirun). Il processo può perdere l uso del processore fondamentalmente per tre motivi: Il processo emette una richiesta di I/O e quindi viene posto nella coda del dispositivo di cui deve far uso (dischi, nastri, stampante...); Il processo crea un processo figlio e ne deve attendere la terminazione; Il processo subisce una interruzione e forzatamente deve abbandonare la cpu per ripassare nella ready queue. 3 PCB e Tabella dei processi Il PCB (Process Control Blocks) o descrittore di processo è una struttura dati che mantiene in memoria tutte le informazioni su un certo processo. All'insieme dei PCB dei processi attivi nel Sistema Operativo si accede utilizzando la tabella dei processi. Ciascun PCB contiene le seguenti informazioni: PID (identificatore del processo) lo stato del processo il program counter ( PC ) il contenuto dei registri della CPU Le informazioni sulla memoria occupata e puntatore allo stack Limiti di tempo Privilegi per l accesso a servizi e risorse Puntatore al padre Puntatore alla lista dei processi figli Lista dei file aperti dal processo Informazioni per lo schedulatore (priorità, tempo stimato di uso CPU, tempo di CPU residuo,. PCB di un processo 4

Tabella dei processi Per gestire l'esecuzione di processi il sistema operativo mantiene informazioni sui processi stessi anche quando non sono in esecuzione (stato dirun)esullerisorse. In particolare la tabella dei processi contiene l identificatore (PID) univoco di ciascun processo e il puntatore all immagine del processo. 5 Immagine di un processo. L immagine di un processo è costituita dalle informazioni che riguardano le aree di memoria e le strutture dati associate al processo che sono necessarie per poter coordinare l esecuzione di più processi. Text table: si tratta di una tabella dei riferimenti per accedere al codice eseguibile del programma di cui il processo risulta essere un istanza. Dati: area di memoria che contiene i dati utilizzati dal programma. Stack e heap: aree di memoria utilizzate dal programma per gestire le chiamate di funzione e le allocazioni dinamiche di memoria. PCB (Process Control Block): costituito da una collezione di attributi necessari al SO per controllare l esecuzione del processo stesso. 6

Le code I descrittori dei processi sono organizzati in code, una per ciascuno stato (READY, WAITING, ) e per ogni dispositivo del quale può essere fatta richiesta di utilizzo al SO. 7 Schedulatore a breve termine e context switch La componente del Sistema Operativo che si occupa di scegliere di volta in volta il processo che deve ottenere l uso della CPU è lo scheduler a breve termine che sostanzialmente dice qual è il prossimo processo che deve passare dallo stato di READY allo stato RUNNING, ovvero andare in esecuzione. Lo scheduling avviene seguendo un certo algoritmo (FCFS, RoundRobin, ShortestJobFirst, a priorità statica o dinamica...) e il passaggio da un processo all'altro è detto cambio di contesto(context switch). Il sistema operativo deve: salvare lo stato del processo che abbandona la CPU, ovvero andare ad aggiornare il PCB (Process Control Blocks detto anche descrittore) del processo caricare il nuovo processo ripristinando le aree di memoria da lui utilizzate, ripristinandone lo stato puntuale, ovvero il suo contesto. 8

Schedulatore a breve termine e context switch 9 Un processo in esecuzione può richiedere al S.O. operazioni di I/O su file, sul monitor, da tastiera, da mouse, ricezione e trasmissione dati in rete, visualizzazione di testi e immagini I processi che prevedono molte interazioni con gli utenti sono spesso in stato di WAITING e si dicono I/O-bound. P1: RUN WAIT RUN _ WAIT RUN _ WAIT I processi che eseguono molte elaborazioni di dati presenti in memoria non rilasciano quasi mai il processore restando quindi in stato di RUN e si dicono CPU-bound. P2: RUN _ WAIT RUN _ WAIT RUN 10

Il S.O. ha il compito di ottimizzare l uso del processore. L insieme dei processi attivi dovrebbe essere composto in modo equilibrato da CPU-bound e I/O-bound. 11 Considerazioni: Se i processi CPU-bound sono molto numerosi i pochi processi I/O-bound vengono rallentati peggiorando il tempo di risposta dei processi interattivi e lasciando inattivi i dispositivi periferici Se i processi I/O-bound sono molto numerosi Questo può portare ad inattività del processore, perché aumenta la probabilità che tutti i processi attivi siano in stato di attesa (WAIT) Durante i periodi di inattività del processore, se non vi sono processi in stato di READY da avviare nello stato di RUN, il gestore dei processi attiva l esecuzione di un paricolare processo di sistema detto IDLE, che pone il computer in uno stato di basso consumo energetico ad esempio diminuendo la velocità del processore oppure vengono eseguiti processi di utilità come ad esempio la scansione antivirus. 12

Task manager di Windows 7 13 Task manager di Windows 7 14

Task manager di Windows 7 15 Algoritmi di schedulazione del processore Gli algoritmi di rotazione tra i processi in esecuzione utilizzati dallo schedulatore dei processi operano con precisi criteri per scegliere quale processo far avanzare dallo stato di pronto (READY) allo stato di esecuzione (RUN). Questi algoritmi si possono dividere in due categorie: NON PREEMPTIVE (senza prerilascio) : una volta che la CPU è stata assegnata ad un processo, essa non può essergli tolta a meno che il processo non sia terminato oppure non abbia richiesto un operazione di I/O. PREEMPTIVE (con prerilascio) : viene usato nei sistemi operativi multitasking, con il significato che il S.O. che può interrompere un processo in esecuzione contro la volontà di questo in favore di un altro processo che ha una maggiore priorità oppureseilprocessohautilizzatolacpuperilmassimotempoconsentito(fine del quanto di tempo). Mentre Unix è stato sviluppato quasi da subito come sistema di tipo preemptive, nei sistemi Microsoft la preemption è stata introdotta solo con Windows 95. Questo è giustificato dal fatto che i sistemi operativi di questa famiglia, a partire dall MS-Dos, sono nati come sistemi mono utente. 16

Senza prerilascio SENZA PRERILASCIO Politiche di scheduling FCFS (First Come First Served): il processore viene assegnato ai processi in stato di pronto a seconda dell ordine di arrivo. Difetti: tempo medio di attesa abbastanza lungo e vengono penalizzati i processi brevi a causa di quelli che richiedono molto tempo di CPU. 17 Senza prerilascio SENZA PRERILASCIO Politiche di scheduling SJF (Shortest Job First): il processore viene assegnato al processo, tra tutti quelli in stato di pronto, che prevede l intervallo di tempo più breve di utilizzo complessivo della CPU o prima di un I/O. In questo caso la coda viene ordinata per valori crescenti di durata. Questa politica consente di avere tempi medi di attesa inferiori rispetto a FCFS. Si può dimostrare che SJF è ottimale. Spostando un processo breve prima di uno lungo (anche se quest ultimo è arrivato prima) si migliora l attesa del processo breve più di quanto si peggiori l attesa del processo lungo il tempo medio di attesa diminuisce! Di conseguenza diminuisce anche il turnaround. 18

Senza prerilascio SJF Politiche di scheduling Nessun algoritmo può produrre un tempo di attesa medio e un turnaround medio migliori. Infatti dati: n processi con lo stesso tempo di arrivo e tempo di esecuzione del processo i-esimo t_exe = a i, il processo j-esimo dovrà aspettareuntempo a 1 + a 2 + + a j-1 Quindi: T_medio di attesa = [0 + a 1+ (a 1+ a 2) + (a 1+ a 2+ a 3) +.+(a 1 +a n-1)] / n = = [(n-1)a 1 + (n-2)a 2 + + a n-1 ] / n che risulta minimizzato quando a 1 < a 2 < < a n Mac èunproblema cheimpediscediusarequestoalgoritmo Difetti: spesso non si hanno sufficienti informazioni per stabilire quale processo richiederà per primo un operazione di I/O o quanto tempo di utilizzo complessivo della CPU chiede ogni processo, perché normalmente questi dati sono disponibili solo a run time. Inoltre i processi più lunghi rischiano la starvation (morire di fame ), cioè di non essere eseguiti. 19 Senza prerilascio FCFS Coda dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P1 P2 P3 P4 P5 P6 Tempo medio di attesa:? Tempo medio di fine esecuzione:? SJF Coda ORDINATA dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P3 P1 P4 P5 P2 P6 Tempo medio di attesa:? Tempo medio di fine esecuzione:? 20

Senza prerilascio FCFS Coda dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P1 P2 P3 P4 P5 P6 Tempo medio di attesa: (0+3+7+9+12+15)/6 = 7.6 unità di tempo Tempo medio di fine esecuzione: (3+7+9+12+15+20)/6 = 11 unità di tempo SJF Coda ORDINATA dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P3 P1 P4 P5 P2 P6 Tempo medio di attesa: (0+2+5+8+11+15)/6 = 6.8 unità di tempo Tempo medio di fine esecuzione: (2+5+8+11+15+20)/6 = 10.16 unità di tempo 21 Senza prerilascio Politiche di scheduling SENZA PRERILASCIO Con priorità: alcuni processi vengono considerati più importanti di altri. La priorità viene assegnata dal S.O. in base a criteri legati al tipo di processo e all utente che lo ha mandato in esecuzione. In questo caso la coda di READY viene ordinata per valori decrescenti di priorità dei processi e ogni volta viene scelto il processo con priorità più alta da mandare in esecuzione. Se due processi hanno la stessa priorità verrà servito il primo arrivato in coda. Se arriva in coda di READY un nuovo processo viene inserito rispettando l ordinamento. Difetti: se continuano ad arrivare processi con alta priorità quelli con priorità bassa rischiano la starvation. 22

Senza prerilascio Esercizio: I processi A, B, C, D sono arrivati in stato di READY in questo ordine e quasi contemporaneamente. Il tempo di CPU necessario a ciascun processo per completare la propria esecuzione è rispettivamente di 30, 10, 15, 8 ms. Le rispettive priorità sono: 1, 3, 4, 2 dove a valore maggiore corrisponde priorità più alta. Determinare il Tma (tempo medio di attesa) e il Tms (tempo medio di fine esecuzione) detto anche Turnaround (dalla sottomissione alla fine esecuzione) nel caso di utilizzo dei seguenti 3 algoritmi di schedulazione senza prerilascio: FCFS, SJF e Con priorità e confrontare i risultati. 23 Con prerilascio Politiche di scheduling CON PRERILASCIO Con priorità: gli algoritmi che si basano sulla priorità possono essere anche di tipo preemptive. La coda viene ordinata come nel caso precedente per priorità crescente. La differenza è la seguente: se arriva in coda un processo con priorità maggiore di quello che sta utilizzando la CPU, viene forzato il prerilascio. Il prerilascio può avvenire: Quandoarrivaunnuovoprocesso instatodireadychehaprioritàmaggioredi quelloinstatodirun QuandounprocessopassadallostatodiWAITallostatodiREADY edhapriorità maggiorediquelloinstatodirun Difetti: i processi con bassa priorità rischiano la starvation. Per questo spesso si usa una priorità dinamica che aumenta con l anzianità del processo. 24

Con prerilascio CON PRERILASCIO Politiche di scheduling Round Robin: tutti i processi vengono considerati della stessa importanza. A ciascun processo viene concesso l uso del processore per un T di tempo detto quanto di tempo (o time-slice). Il timer allo scadere del quanto di tempo invia un segnale di interruzione che provoca l intervento del S.O. che forza il processo a prerilasciare il processore eatornareinstatodiready. In questo modo si evita la starvation, perché a turno tutti i processi usano lacpuperunostessointervalloditempo. La politica RR è equivalente a FCFS con prerilascio. 25 Con prerilascio Round Robin: Politiche di scheduling Se ci sono N processi in coda READY e il quanto di tempo è Q, allora ogni processo riceve 1/N del tempo della CPU in blocchi di almeno Q unità di tempo per volta. Il RR è l algoritmo di scheduling naturale per implementare il time sharing, ed è quindi particolarmente adatto per i sistemi interattivi. Nel caso peggiore un utente non aspetta mai più di (N-1)*Q unità di tempo prima che il suo processo venga servito. 26

Con prerilascio Considerazioni su Round Robin Politiche di scheduling Il comportamento del RR dipende molto dal valore del quanto di tempo scelto. Se il time-slice è molto breve si verificano interruzioni frequenti per passare da un processo all altro (context switch) e l efficienza del sistema diminuisce(overhead). Se il time-slice è molto lungo il sistema diventa come FCFS (time-slice infinito). Si verificano poche interruzioni, ma si perdono i vantaggi del RR in quanto vengono nuovamente penalizzati i processi che richiedono poco tempo di CPU (aumenta il tempo di risposta dei processi interattivi). 27 Con prerilascio Round Robin Processi in ordine di arrivo da P1 a P6 in READY e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 T P1 P2 P3 P4 P5 P6 P1 P2 P4 P5 P6 P6 Tempo medio di attesa: ((0+10)+(2+9)+(4)+(6+7)+(8+6)+(10+5))/6 = 11.6 T Tempo medio di fine esecuzione: (13+15+6+16+17+20)/6 = 14.5 T 28

Con prerilascio Round Robin ProcessidaP1aP8 incodadeipronti (READY)e unità di tempo di CPU richieste da ciascun processo. Tempo di CPU Processi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 T P1 P2 P3 P4 P5 P6 P7 P8 P1 P2 P4 P5 P6 P7 P6 Tempo medio di attesa: ((0+14)+(2+13)+(4)+(6+11)+(8+10)+(10+9+1)+(12+9)+(14))/8 = 15.37 T Tempo medio di fine esecuzione: (17+19+6+20+21+25+24+16)/8 = 18.5 T 29 Con prerilascio Round Robin Il tempo di turnaround dipende dalla durata del quanto, ma non c è una relazione precisa fra di loro. Il turnaround non migliora necessariamente se si aumenta il quanto Q, ma può migliorare se la maggior parte dei processi haunburstminorediq. D altra parte, se Q è troppo grande diventa un FCFS, e non va bene per il time sharing. Unaregolaempiricadicechel 80%deiCPUburstdovrebbeessereminorediQ. 30

Con prerilascio CON PRERILASCIO Politiche di scheduling Scheduling a code multiple: si può realizzare quando i processi sono facilmente divisibili in classi differenti. Ad esempio: foreground (interattivi, ad esempio un editor) background (non interagiscono con l utente) Si può partizionare la coda di READY in più code, ciascuna con una diversa priorità: inserendo i processi in una delle code, sulla base delle proprietà di ciascun processo assegnando ad ogni coda lo scheduling appropriato Ad esempio: foreground: RR background: FCFS 31 Con prerilascio Scheduling a code multiple Ad esempio si può fare la scelta di: Politiche di scheduling Scheduling a priorità fissa: servire prima tutti i processi nella coda foreground e poi quelli in background. (Possibilità di starvation) oppure Time slice: ogni coda ha una certa quantità Tdi tempo di CPU, ad esempio: 80% alla coda foreground e 20% alla coda background Esempio di partizionamento dei diversi tipi di processi in più code 32

Con prerilascio CON PRERILASCIO Politiche di scheduling Scheduling a code multiple con FeedBack (retroazione) - MFQS L assegnamentodiunprocessoaunacodanonèpiùfisso. IprocessipossonovenirespostatidalSOdaunacodaadun altra. Quando un processo nasce, viene inserito in una coda in base ad una certa priorità assegnata. Quando va in stato di RUN, se il quanto di tempo assegnatogli termina prima che il processo abbia terminato il CPU burst, viene retrocesso alla coda successiva; se, invece, il processo termina il suo CPU burst prima che sia terminato il quanto di tempo assegnatogli, il processo può essere promosso. La politica MFQS è definita dai seguenti parametri: numero delle code algoritmo di scheduling di ogni coda quando declassare un processo quando promuovere un processo in che coda inserire un processo quando arriva (dall esterno o da un I/O burst) MFQS è il tipo di scheduling più generale, che comprende tutti quelli visti. 33 Scheduling per sistemi multi-core SonoormaicomunilearchitettureconCPUa2,4,6e8core. Sono, in sostanza, dei piccoli sistemi multiprocessore in cui sullo stesso chip sono presenti due o più core che vedono la stessa memoria principale(e di solito condividono un livello di cache). La presenza di più unità di esecuzione dei processi, permette naturalmente di aumentare le prestazioni della macchina, posto che il SOsiaingradodisfruttareapienociascuncore. 34

Scheduling per sistemi multi-core Tutti i moderni SO prevedono in particolare la cosiddetta multielaborazione simmetrica (symmetric multiprocessing, SMP), in cui uno scheduler gira su ciascun core. I processi READY possono essere inseriti in un unica coda, vista da ciascun scheduler, consentendo quindi di far eseguire un processo su qualunque processore disponibile al momento. In questo caso sono necessari meccanismi di accurata sincronizzazione dei processori nell accesso a strutture dei dati condivise(la coda di READY ); oppure VipuòessereunacodaREADYseparataperciascuncore. Questa soluzione potrebbe portare ad una situazione con un processore in stato idle e un altro sovraccarico di processi. Quandoloschedulerdiuncoresiattiva,sceglieunodeiprocessiREADY elomandainesecuzionesulpropriocore. 35 Scheduling per sistemi multi-core La multielaborazione può essere Asimmetrica o Simmetrica. ASMP (asymmetric multiprocessing) Il SO imposta in genere l uso esclusivo di uno o più processori. Il resto dei processori esegue applicazioni utente. Come risultato, il singolo processore che esegue il sistema operativo deve gestire gli tutti altri processori che eseguono applicazioni utente. Il sovraccarico di lavoro del processore destinato al SO può costringere le applicazioni a delle attese, riducendo così la velocità complessiva del sistema. 36

Scheduling per sistemi multi-core SMP (symmetric multiprocessing) È usato per ottenere di prestazioni più elevate. Ogni processore, in questo caso, può eseguire qualsiasi tipo di processo. I processori comunicano tra loro attraverso la memoria condivisa. Sistemi SMP forniscono un migliore bilanciamento del carico e tolleranza di errore. Poiché i thread del sistema operativo possono essere eseguiti su qualsiasi processore, si riduce notevolmente il pericolo di avere un sovraccarico di sistema. I sistemi SMP sono più complessi dei sistemi ASMP proprio per il coordinamento e la sincronizzazione che deve avvenire all'interno del sistema. Per questo motivo, i sistemi SMP sono generalmente progettati e scritti da zero. 37 Un aspetto importante dei sistemi multi-core è il bilanciamento del carico. Nonhainfattisensoavereunsistemacon2o3o4coresepoiivariprocessida eseguire non sono distribuiti più o meno omogeneamente tra i vari core. Codaunica Scheduling per sistemi multi-core Nel caso di un unica coda READY, il bilanciamento del carico è sostanzialmente automatico: quando un core è inattivo, il suo scheduler prenderà un processo dalla coda comune e lo manderà in esecuzione su quel core. Coda separata I SO moderni spesso usano una coda separata per ciascun core. Esiste allora un esplicito meccanismo di bilanciamento del carico che può prendere un processo in attesa sulla coda di un core sovraccarico e spostarlo nellacodadiuncorescarico. Ad esempio, Linux SMP attiva il proprio meccanismo di bilanciamento del caricoogni200millisecondieognivoltaincuisisvuotalacodadiuncore. 38

Scheduling per sistemi multi-core Lamigrazionediunprocessodauncoreadunaltropuònonessere conveniente nel caso in cui ciascun core abbia una cache privata. Per questa ragione, alcuni SO, come Linux, mettono a disposizione delle system call per poter specificare che un processo non deve cambiare core, indipendentemente dal carico del core stesso. Nella realtà le cose sono ancora più complicate, in quanto i moderni processori hanno 2 o 3 livelli di cache. Nel caso ad esempio dei Core i7, i vari core condividono la cache di terzo livello (L3) e ciascun core haunacacheprivatadisecondolivellol2ediprimo livellol1(l1èa suavoltadivisainunacacheperidatieinunaperleistruzioni). 39 Lo scheduling in Windows XP Loschedulerusaunoschemaa32livellidipriorità(da0a31): iprocessireal-timehannounaprioritàda16a31, gli altri processi hanno una priorità da 1 a 15 (0 è un valore riservato). Quando un processo nasce gli viene assegnata priorità 1. Nel caso di processi non real-time lo scheduler sceglie il processoaprioritàpiùaltaegliassegnalacpu. Secisonopiùprocessiconlastessapriorità,siusaRR. 40

Lo scheduling in Windows XP SeilprocessochestautilizzandolaCPUvainWAITprimadiesaurire ilsuoquantoditempo,lasuaprioritàvienealzata(max15). L entità dell incremento dipende dal tipo di evento che il processo attende: se è un dato dalla tastiera (quindi siamo in presenza di un processo interattivo) si avrà un grosso incremento della priorità. seilprocessoattendeundatodaldisco,l incrementoèminore. Se il processo che sta utilizzando la CPU consuma interamente il quanto di tempo assegnato, la sua priorità viene diminuita(min 1). Questa strategia favorisce ovviamente i processi che interagiscono con il mouse e la tastiera, per i quali è importante un tempo di risposta molto basso. 41 Lo scheduling in Windows XP Windows distingue tra i processi in background e il processo in foreground(finestra attiva). Quando un processo passa in foreground il quanto di tempo assegnatogli viene moltiplicato per 3, cosicché il processo può continuare l esecuzione per un tempo tre volte più lungo, prima di abbandonare la CPU. 42

Lo scheduling in LINUX (primo tipo) Linux ha utilizzato diversi tipi di scheduling. Nel primo tipo le priorità alte sono indicate con valori numerici bassi, e viceversa: un eredità dei primi sistemi Unix. periprocessireal-timelaprioritàvada0a99 perglialtriprocessi(nonreal-time)laprioritàvada100a140. I valori nell intervallo 100-140 sono detti nice. 43 Processi non real-time Lo scheduling in LINUX (primo tipo) Questi processi vengono raggruppati in due code separate: 1. codaattiva:iprocessichesonoandatiinwaitprimaditerminare ilquanto di tempo loro assegnato(inclusi i processi che non hanno ancora iniziato ad eseguire) 2. coda scaduta: i processi che hanno esaurito il proprio quanto di tempo. Lo scheduler sceglie il processo a priorità più alta nella coda attiva e gli assegnalacpuperuntempoparia: uninteroquantoditempo(disolitoda10a100millisecondi)seilprocesso non aveva ancora iniziato ad eseguire il proprio codice (in quel quanto di tempo). la porzione di quanto di tempo non ancora utilizzata dal processo quando eraandatoinwaitlavoltaprecedenteincuiavevausatolacpu(quindiper un tempo sicuramente inferiore al quanto assegnato inizialmente) Quando un processo ha esaurito il proprio quanto di tempo, viene spostato nella coda scaduta. 44

Lo scheduling in LINUX (primo tipo) Notate che, inizialmente, la coda scaduta è vuota: nessun processo è ancora riuscito ad utilizzare completamente un quanto di tempo assegnatogli. Quando la coda attiva è vuota, vuol dire che a tutti i processi hanno ricevuto ed esaurito completamente un quanto di tempo (in sostanza, siamo di fronte ad una forma sofisticata di Round Robin) A questo punto le due code si cambiano di ruolo: quella scaduta divene la coda attiva, e viceversa, e il processo di scheduling ricomincia assegnando un quanto di tempo al processo con priorità più alta nella coda attiva. 45 Lo scheduling in LINUX (primo tipo) Il nice (ossia, la priorità corrente) di un processo viene ricalcolato dinamicamente quando il processo ha esaurito il proprio quanto di tempo, sommandogli o sottraendogli il valore 5, a seconda del suo grado di interattività. Un processo interattivo ha normalmente lunghi tempi di attesa per le operazioni di I/O e il suo nice verrà decrementato di 5, viceversa per un processo che ha speso poco tempo in attesa del completamento di operazioni di I/O. Quindi, lo scheduling favorisce i processi interattivi, che nella nuova coda attiva avranno una priorità migliore (nice più basso) dei processi non interattivi. 46

Lo scheduling in LINUX (secondo tipo) A partire da fine 2007 (versione 2.6.23 ) il kernel di Linux, adotta un nuovo algoritmo di scheduling, il Completely Fair Scheduler(CFS). IlCFScercadidistribuireequamenteiltempodiCPUtratuttiiprocessi chesonoinstatodireadyinattesadell usodellacpu. Politica adottata: se ci sono N processi ready to run, allora ad ogni processo dovrebbe spettare esattamente 1/N del tempo di CPU. Lo scheduler memorizza la quantita di tempo assegnata ad ogni processo Tiene conto anche dei tempi di attesa di I/O I processi in stato di READY non vengono più organizzati in code di scheduling, ma vengono mantenuti in un albero di ricerca binario. Un albero binario è una struttura dati ad accesso molto efficiente, e questo è importante, dato che la struttura deve essere letta e modificata dallo scheduler ad ogni context switch. 47 Lo scheduling in LINUX (secondo tipo) Completely Fair Scheduler (CFS): implementazione Tempo di CPU consumato da ciascun processo Tutte le operazioni (ricerca, cancellazione, inserimento) in quest'albero hannocomplessitao(log 2 N). Ciascun nodo dell'albero(processo) è caratterizzato dal: tempo consumato = tempo di CPU assegnatogli inizialmente meno quanto ancora gli resta da consumare 48

Lo scheduling in LINUX (secondo tipo) Completely Fair Scheduler (CFS): implementazione Tempo di CPU consumato da ciascun processo Ilnodopiùasinistraèsemprequellocolvalorepiùbassochecorrisponde al processo che ha usato la CPU per meno tempo, e viene scelto dallo scheduler per entrare in esecuzione. Il CFS può essere configurato scegliendo la periodicità del context switch, ossia ogni quanto tempo viene ricalcolato il valore contenuto nei nodi. 49