Scheduling in Linux (Kernel 2.4 e 2.6) - PowerPoint PPT Presentation

About This Presentation
Title:

Scheduling in Linux (Kernel 2.4 e 2.6)

Description:

Scheduling in Linux (Kernel 2.4 e 2.6) Versioni Kernel Linux Task in Linux Il kernel Linux tratta thread e processi allo stesso modo, ossia accedendo alle risorse che ... – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 18
Provided by: GiorgioD8
Category:

less

Transcript and Presenter's Notes

Title: Scheduling in Linux (Kernel 2.4 e 2.6)


1
Scheduling in Linux(Kernel 2.4 e 2.6)
2
Versioni Kernel Linux
3
Task in Linux
  • Il kernel Linux tratta thread e processi allo
    stesso modo, ossia accedendo alle risorse che
    durante la creazione vengono assegnate e di cui
    si tiene traccia in una struttura dati chiamata
    task_struct.
  • Thread appartenenti allo stesso processo possono
    tuttavia condividere le risorse semplicemente
    poiche possiedono lo stesso riferimento ad uno
    spazio di indirizzamento condiviso.
  • In Linux task thread o processo

4
Task List
  • Il kernel memorizza i task in una lista
    doubled-linked circolare, chiamata task_list.
  • Ciascun elemento di questa lista e un
    descrittore di processo di tipo task_struct.

5
Scheduler Linux 2.4
  • Il tempo e diviso in epoche, ossia degli
    intervalli in cui tutti i processi, a turno,
    eseguono per un quanto di tempo (timeslice).
  • Il valore iniziale del quanto di un processo e
    il quanto di base 20-N tick del clock dove N in
    -20,19 e la priorita statica associata al
    processo (nice)
  • Un valore alto di nice determina un quanto
    piccolo e quindi priorita minore

6
Esecuzione dei task
  • Ogni task ha un contatore C inizialmente quanto
    di base
  • Il contatore viene decrementato in base a quanto
    tempo il processo rimane in esecuzione
    (attraverso un timer).
  • Quando tutti i processi eseguibili hanno esaurito
    il quanto a loro disposizione (cioe C0 per
    processi in stato TASK_RUNNING) termina unepoca
    e ne inizia unaltra
  • E importante notare che processi in attesa
    possono avere un valore residuo C gt0 (quando non
    hanno esaurito il quanto)

7
Ricalcolo del quanto
  • Alla fine dell'epoca si ricalcola il quanto di
    TUTTI i processi (anche quelli in attesa)
    prendendo il quanto di base incrementato della
    meta del tempo rimanente nel contatore.
  • I processi CPU-bound (che consumano interamente
    il loro quanto di tempo) riceveranno un quanto
    più o meno sempre pari alla loro priorità
  • I processi IO-bound ricevono un quanto di tempo
    superiore ai processi CPU-bound. Questo serve
    perche il quanto viene usato anche come
    priorita dinamica

8
Scelta del prossimo task
  • Dopo un context-switch, lo scheduler confronta
    le priorita dinamiche (goodness) di tutti i
    processi eseguibili
  • La goodness e calcolata come segue
  • goodness1000priorita statica, per task
    real-time
  • goodnessCpriorita statica, per task
    time-sharing con Cgt0
  • goodness0, per task time-sharing con C0
  • Manda in esecuzione il task con goodness maggiore

9
Complessita O(n) dello Scheduler
  • Ad ogni cambio di contesto e necessario iterare
    tra tutti i processi (per la scelta del prossimo
    processo)
  • Alla fine di ogni epoca viene effettuato
    l'aggiornamento dei contatori di ognuno dei
    processi da eseguire.
  • Queste due operazioni hanno una complessita che
    dipende linearmente dal numero di processi in
    esecuzione, per cui l'algoritmo di scheduling di
    Linux 2.4 risulta O(n).
  • Al crescere di n le performance dello scheduler
    peggiorano

10
Altri problemi scheduler 2.4
  • In architetture multiprocessore si usa una sola
    runqueue
  • Positivo per bilanciare il carico delle diverse
    CPU
  • Tuttavia viene usata in modo esclusivo (viene
    bloccata) dalla CPU che esegue lo scheduler
  • Le altre CPU devono attendere che la runqueue
    venga rilasciata (non si frutta il parallelismo)

11
Kernel 2.6
  • Il kernel 2.6, utilizza delle nuove strutture
    dati rispetto alle versioni precedenti
  • Lo scheduler e chiamato O(1) scheduler
    perche opera in tempo costante O(1)
    indipendentemente dal numero di thread in
    competizione per la CPU.
  • Motivazione supportare al meglio il
    multithreading nella Java Virtual Machine
  • Inoltre supporta in modo piu naturale sistemi
    multiprocessore

12
Strutture dati
  • Ogni CPU ha una runqueue chiamata active runqueue
    con 140 code di priorita (liste) gestite FIFO
  • Prime 100 priorita real time task
  • Ultime 40 user task
  • Inoltre ogni CPU ha una expired runqueue con la
    stessa struttura della active runqueue

13
Ricalcolo delle priorita
  • Ogni task ha a disposizione un quanto di tempo
    (round robin su ogni coda di priorita)
  • Quando un processo termina il suo quanto viene
    ricalcolata la sua priorita e il processo viene
    aggiunto in coda alla lista della nuova priorita
    nella expired runqueue
  • Se non ci sono task da eseguire per una certa
    priorita nella active runqueue si scambiano
    active ed expired (expired diventa la nuova
    active runqueue)

14
Active/Expired Runqueue
15
Selezione
  • Lo scheduler seleziona il task nella lista non
    vuota con maggiore priorita
  • Ad ogni priorita viene associata una bitmask.
  • Si possono utilizzare bit-a-bit per rendere
    loperazione dipendente dal numero di priorita
    invece che dal numero di processi
  • Questa proprieta rende lo scheduler 2.6 un
    programma con complessita O(1).

16
Active ed expired runqueue
17
Altre caratteristiche
  • Lo scheduler 2.6 permette la preemption dei task
    a minor priorita
  • Il calcolo dinamico delle priorita (in base
    alluso della CPU e di operazioni di I/O) evita
    starvation
  • Ogni runqueue ha un lock separato lockper
    sfruttare al meglio un sistema multiprocessore
    (lo scheduler su una CPU non blocca lo scheduler
    sulle altre)
  • Inoltre utilizza tecniche di load balancing (es.
    ogni 200ms controlla il carico e se necessario
    sposta processi dalla runqueue di un processore
    ad unaltra)
Write a Comment
User Comments (0)
About PowerShow.com