Algoritmi di scheduling



Documenti analoghi
J. Assfalg Appunti di Sistemi Operativi

Scheduling della CPU:

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

Sistemi Operativi SCHEDULING DELLA CPU

Lo scheduler di UNIX (1)

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

Scheduling della CPU

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

Lo scheduling. Tipici schedulatori

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

SCHEDULATORI DI PROCESSO

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

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

Corso di Informatica

Sistemi Operativi Kernel

Processi e Thread. Scheduling (Schedulazione)

Lo schedulatore del kernel

Scheduling. Scheduling 14/12/2003 1/7

Sistemi Operativi. Scheduling dei processi

Pronto Esecuzione Attesa Terminazione

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

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

La schedulazione. E.Mumolo

Scheduling della CPU

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

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

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

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

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

GESTIONE DEI PROCESSI

Scheduling della CPU Simulazione in linguaggio Java

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

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

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

Lezione 6. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

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

FONDAMENTI di INFORMATICA L. Mezzalira

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Architettura degli Elaboratori 2. tipi di scheduling. scheduling. scheduling della CPU (1) Esercitazione 1. politiche di ordinamento dei processi

Sistemi Operativi (modulo di Informatica II) I processi

La Gestione delle risorse Renato Agati

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Algoritmi di scheduling

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

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

Architettura degli Elaboratori 2

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

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

( x) ( x) 0. Equazioni irrazionali

Esercizio 1: trading on-line

Il Sistema Operativo

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

J. Assfalg Appunti di Sistemi Operativi

Funzioni in C. Violetta Lonati

GENERAZIONE PROCESSO FIGLIO (padre attende terminazione del figlio)

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Scheduling della CPU (2) CPU bursts (2)

Scheduling. Livelli Algoritmi

Sistema operativo: Gestione dei processi

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

STRUTTURE DEI SISTEMI DI CALCOLO

Sistemi operativi e reti A.A Lezione 2

Introduzione ai Sistemi Operativi

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

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

Lo Scheduling Real Time in Linux. Universita degli studi di Roma La Sapienza Ivan Gualandri Matricola Relatore: Giorgio Richelli

Processo - generalità

Il Sistema Operativo (1)

Schedulazione in RTAI

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

Sistemi Operativi. 5 Gestione della memoria

CONTROLLO DI GESTIONE DELLO STUDIO

Automazione Industriale (scheduling+mms) scheduling+mms.

INFORMATICA 1 L. Mezzalira

Esercitazione E1 Scheduling, deadlock, monitor

Introduzione alla programmazione in C

Sistemi operativi. Esempi di sistemi operativi

Diagramma delle durate dei CPU burst. Lo scheduler della CPU. Criteri di scheduling. Dispatcher

RTAI e scheduling. Andrea Sambi

Corso di Sistemi di Elaborazione delle informazioni

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

DMA Accesso Diretto alla Memoria

Registratori di Cassa

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Sistemi Operativi a.a Esercizi - 2

Concetto di Funzione e Procedura METODI in Java

IL SISTEMA INFORMATIVO

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Java Virtual Machine

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

Transcript:

Capitolo 3 Algoritmi di scheduling Come caso particolare di studio, di seguito è discussa in dettaglio la politica di scheduling del sistema operativo LINUX (kernel precedente alla versione 2.6). Sono riportate anche le caratteristiche salienti degli algoritmi che implementano la politica di scheduling. 21

Appunti di Sistemi Operativi 22 3.1 Scheduling in Linux In generale, i processi possono essere classificati secondo due schemi: CPU bound vs. I/O bound; interattivi vs. batch vs. real-time. Le due classi sono indipendenti, in quanto possono esistere, ad esempio, processi batch sia I/O bound che CPU bound e lo stesso vale per i processi interattivi o real-time. Rispetto a questa distinzione, la politica di scheduling Linux è in grado di: riconoscere processi soft real-time a cui è assegnata un elevata priorità (ad esempio, processi che realizzano il play di un file multimediale); favorire implicitamente processi I/O bound (tuttavia, non è in grado di riconoscere processi batch o interattivi). Più in dettaglio, la politica di scheduling Linux si propone il raggiungimento dei seguenti obiettivi, alcuni dei quali contrastanti tra loro: - timesharing; - gestione di priorità dinamiche; - avvantaggiare processi I/O-bound; - tempi di risposta brevi; - throughput elevato per i processi in background; - evitare starvation. Distinguendo tra politica ed algoritmo di scheduling, gli obiettivi della politica sono perseguiti dall algoritmo di scheduling nel modo seguente: - suddivisione del tempo in epoche; - dipendenza della priorità dal residuo del quanto di tempo dall epoca precedente; - definizione delle condizioni che determinano l invocazione dello scheduler.

Appunti di Sistemi Operativi 23 3.1.1 Politica di scheduling In Linux lo scheduling si basa sul concetto di timesharing, per cui ad ogni processo è assegnato un quanto di tempo massimo per l esecuzione. La selezione del prossimo processo da eseguire è basata sul concetto di priorità; questa può essere dinamica o statica. In particolare, la prima è introdotta per evitare il fenomeno della starvation, mentre la seconda è stata introdotta per consentire la gestione di processi real-time. Ai processi real-time (più precisamente soft real-time, utili ad esempio per riprodurre flussi audio e/o video in applicazioni multimediali) è assegnata una priorità maggiore di quella assegnata ai processi ordinari. Di norma Linux prevede uno scheduling con prelazione (preemptive), per cui ad un processo viene tolta la CPU se: - esaurisce il quanto di tempo a sua disposizione; - un processo a priorità più alta è pronto per l esecuzione (stato TASK RUNNING). La durata del quanto di tempo è tipicamente di 20 clock ticks, o 210 millisecondi. Questo è circa il più grande valore ammissibile senza che sia compromessa la reattività del sistema. Gli utenti possono variare la durata del quanto assegnato ad un processo tramite la funzione nice(int n). Gli utenti comuni possono solo diminuire il quanto, mentre l utente amministratore può anche aumentarlo. In particolare, l incremento n del quanto può variare nell intervallo 20 n 19, dove a valori negativi di n corrisponde un incremento del quanto (che può quindi crescere fino ad un massimo di 40), mentre valori positivi di n decrementano la priorità di un processo (che può essere ridotta fino ad un minimo di 1). 3.1.2 Algoritmo di scheduling Il tempo è suddiviso in periodi, detti epoche, che si ripetono ciclicamente. All inizio di ogni epoca, a ciascun processo viene assegnato un quanto di tempo (il valore di default è di 20 clock tick). Il quanto di tempo definisce un limite superiore al tempo di utilizzo della CPU nell epoca. All interno di una stessa epoca, la CPU può essere assegnata ad un processo più volte, fino a quando il quanto non è esaurito. Un epoca termina quando tutti i processi eseguibili (quelli nello stato TASK RUNNING) hanno esaurito il loro quanto. Terminata un epoca, ne inizia un altra; all inizio della nuova epoca viene calcolato il nuovo quanto di tempo da assegnare a ciascun processo. Questo è determinato come la somma tra il base time quantum (cioè, il valore predefinito del quanto di tempo) e metà dei clock tick eventualmente rimasti dall epoca precedente. Infatti, processi che erano bloccati al momento in cui è terminata l epoca, potevano non aver esaurito il quanto di tempo. Così facendo si assegna un bonus ai processi I/O-bound; dato che un processo I/O-bound difficilmente esaurirà il quanto a sua disposizione

Appunti di Sistemi Operativi 24 all interno dell epoca, la porzione di quanto rimanente è utilizzata per variare (incrementare) la priorità del processo nell epoca successiva. In questo modo, il numero di clock tick di un processo che non ne consuma alcuni entro un epoca può tendere asintoticamente a 40 (e comunque è limitato a questo valore). Ai processi ordinari, cioè quelli che vengono gestiti con la politica SCHED OTHER, è assegnata una priorità statica pari a 0; la priorità dinamica, invece, è la somma del base time quantum e del numero di clock tick corrente del processo. Per i processi real-time non vale la suddivisione del tempo in epoche. Ai processi real-time è assegnato un livello di priorità statica compreso tra 1 e 99, che non cambia durante l esecuzione. Come conseguenza, i processi real-time hanno una priorità statica sempre superiore a quella dei processi ordinari. Dato che lo scheduler seleziona il processo a priorità più alta, un processo ordinario può essere eseguito solo se non ci sono processi real-time pronti per l esecuzione. I processi real-time possono appartenere ad una di due categorie: - SCHED FIFO: processi real-time con quanto di tempo illimitato. Questi processi lasciano la CPU solo se: 1) si bloccano; 2) terminano; 3) un processo a priorità più alta passa nello stato di pronto; - SCHED RR: processi real-time soggetti a scheduling di tipo Round Robin. Le informazioni necessarie allo scheduler, comprese quelle relative alla priorità, sono contenute nel descrittore di processo task struct. In particolare, queste sono: - long int state: stato del processo; - long int need resched: indica se è necessaria l invocazione dello scheduler. Questo campo viene controllato al termine di ogni routine di servizio delle interruzioni; - long int policy: può assumere i valori SCHED OTHER, SCHED FIFO, SCHED RR, SCHED YIELD; - long int rt priority: indica il livello di priorità statica per i processi real-time; - long int priority: rappresenta il quanto di tempo (espresso in clock tick) assegnato ad un processo soggetto a timesharing; - long int counter: è il numero di clock tick residui. La variabile è aggiornata per il processo attualmente in esecuzione dalla funzione update process times() ad ogni interruzione dell orologio di sistema. Le variabili counter e priority non sono utilizzate per i processi soggetti alla politica SCHED FIFO.

Appunti di Sistemi Operativi 25 Invocazione dello scheduler Lo scheduler viene invocato tramite la funzione schedule(), che ha lo scopo di individuare il processo a maggiore priorità fra quelli pronti. La sua invocazione può avvenire in due modi: - invocazione diretta (o direct invocation). Questa modalità viene eseguita ogni volta che il processo si blocca (stati TASK UNINTERRUPTIBLE o TASK INTERRUPTIBLE); - invocazione ritardata (o lazy invocation). Questa ha luogo quando, al termine dell esecuzione di una primitiva di sistema, la variabile need resched indica che è necessario eseguire lo scheduler. La variabile need resched viene impostata se: - durante l esecuzione della funzione update process times() si verifica che counter <= 0 per il processo corrente (il processo corrente ha esaurito il quanto e richiede che un nuovo processo sia schedulato per l esecuzione); - la funzione wake up process() (invocata per risvegliare un processo sospeso) durante la sua esecuzione si accorge che è passato nello stato di pronto (TASK RUNNING) un processo a priorità più alta di quello attualmente in esecuzione; - il processo chiama la funzione sched yield(). L esecuzione della funzione schedule() comprende i seguenti passi: - completamento di eventuali system call in corso (nel caso di kernel non prelazionabile non è consentita la commutazione di processo mentre il kernel sta eseguendo delle operazioni per conto di un processo) e operazioni di manutenzione del sistema; - se il processo è di tipo SCHED RR e ha esaurito il quanto, viene posto in fondo alla coda e gli viene assegnato un nuovo quanto (per questo tipo di processi non vale la suddivisione in epoche); - si analizza la coda dei processi pronti per determinare qual è il processo a priorità maggiore. Questa selezione viene fatta mediante la funzione goodness(). La funzione goodness() opera nel modo seguente: - se è in grado di selezionare un processo, allora viene invocato il dispatcher per eseguire l assegnazione della CPU; - altrimenti si inizia una nuova epoca.

Appunti di Sistemi Operativi 26 Per un processo, la funzione goodness() può produrre uno dei seguenti risultati: - G = 1000, ad indicare che il processo non deve essere selezionato; - G = 0, se il processo ha esaurito il quanto; - 0 < G < 1000, se si tratta di un processo ordinario che non ha ancora esaurito il quanto di tempo. Il valore restituito è la priorità dinamica del processo (somma dei campi priority + counter di task struct); - G >= 1000, per un processo real-time. Restituisce G = 1000 + rt priority dove rt priority è il livello di priorità statica in task struct. Nel caso in cui più processi assumano il valore massimo di goodness, viene selezionato il primo nella scansione della coda dei processi pronti. In Fig.3.1 è mostrata l organizzazione delle liste con priorità dei processi Linux. Lo scheduler ha come obiettivo di mantenere in esecuzione i processi nella coda a maggiore priorità. 99 priorità statiche 98 97 96 2 1 0 scheduling RR priorità dinamiche scheduling FiFO Figura 3.1: Code di priorità per i processi Linux. Le priorità statiche dei processi real-time sono sempre maggiori delle priorità statiche dei processi normali (non real-time). Infatti, i processi normali pur variando le loro priorità dinamiche in base all uso dei clock tick all interno di un epoca, hanno comunque tutti priorità statica uguale a 0. Notare, infine, come processi real-time ad una stessa priorità possono essere schedulati con algoritmi diversi (parte con FIFO, e parte con RR).

Appunti di Sistemi Operativi 27 Problemi I principali problemi dell algoritmo di scheduling di Linux sono: - le prestazioni dello scheduler degradano al crescere del numero di processi. Infatti, le priorità (cioè i quanti) devono essere ricalcolate per tutti i processi al termine di ogni epoca; - il valore predefinito per il quanto può essere eccessivo nei sistemi con carico elevato; - il meccanismo di boost dei processi I/O-bound non è ottimale. Infatti, non tutti i processi richiedono interazione con l utente e quindi processi per l accesso a database, il trasferimento dati via rete, etc., potrebbero essere gestiti in modo diverso; - il supporto per i processi real-time è limitato. L algoritmo di scheduling di Linux, a partire dalla versione 2.6 del kernel, è stato in parte modificato (in particolare, per quanto attiene la gestione delle priorità e dei processi real-time) al fine di risolvere alcuni dei problemi indicati.