Platformăde e-learning și curriculăe-content pentru...

49
Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Sisteme de operare 13. Planificarea proceselor

Transcript of Platformăde e-learning și curriculăe-content pentru...

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

� Sisteme de operare

13. Planificarea proceselor

2

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Suport curs

OSC

� Capitolul 5 – CPU Scheduling

MOS

� Capitolul 2 – Processes and Threads

�Secțiunea 5 – Scheduling

3

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Cuprins

� Spațiul de adresă al unui proces

� Tipuri/criterii/algoritmi de planificare

� Planificare pentru sisteme batch

� Planificare pentru sisteme interactive

� Planificare pentru sisteme real-time

� Planificarea execuției în Windows

� Planificarea execuției în Linux

4

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Spațiul de adresă al unui proces

� Zona de date

�.data - variabile globale inițializate cu valori nenule

�.bss - variabile globale neinițializate sau inițializate cu zero

�.rodata - read-only(constante)

� Heap

�regiune dinamică

�controlată de programator

� Stiva

�regiune dinamică

�controlată de compilator

5

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Stiva

int a(int b, int c){

int d=3;

int e=4;

int f=5;

int g=6;

return b+c+d+e+f+g;

}

int main(){

return a(1,2);

}

6

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Stiva(2)

main:

pushl %ebp

movl %esp, %ebp

subl $8, %esp

movl $2, 4(%esp)

movl $1, (%esp)

call a

leave

ret

Vechiul Frame pointer

2

1

Adresa de return

7

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Stiva(3)

a:

pushl %ebp

movl %esp, %ebp

subl $16, %esp

movl $3, -4(%ebp)

movl $4, -8(%ebp)

movl $5, -12(%ebp)

movl $6, -16(%ebp)

movl 12(%ebp), %eax

movl 8(%ebp), %edx

leal %edx(%eax), %eax

add -4(%ebp), %eax

add -8(%ebp), %eax

add -12(%ebp), %eax

add -16(%ebp), %eax

leave

ret

Vechiul frame pointer

2

1

Adresa de return

Vechiul frame pointer

6

5

4

3

8

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Recapitulare – stările unui proces

• READY – gata de execuție• RUNNING – rulează• WAITING – așteaptă încheierea unei operații de I/E

9

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea proceselor

� (CPU/Process) Scheduling

�alocarea proceselor pe procesor/procesoare

� Suportul pentru multitasking

� Scheduler

�subsistem al SO

�algoritmi de planificare

10

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Comportarea proceselor

11

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Comportarea proceselor

(a) procese CPU-bound(b) procese IO-bound

12

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

De ce planificarea execuției?

� Eficiență – optimizare acces la procesor

�un proces este executat până când așteaptă un eveniment blocant sau îi expiră cuanta

�SO (scheduler-ul) alege alt proces pentru execuție (planifică) după un procedeu (algoritm de planificare)

� Interactivitate și corectitudine (fairness)

�procesele pot fi întrerupte pentru rularea altor procese cu prioritate mai mare

�toate procesele au șanse egale de obținere a a procesorului

•în cazul planificării cu priorități, unele procese sunt „mai egale”

13

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Tipuri de planificare a execuției

� Cooperativă

�se face planificare doar atunci când procesul se blochează, se termină sau cedează de bună voie procesorul

� Preemptivă

�procesele rulează un interval maxim de timp (cuantă)

�procesul este suspendat și se planifică altul

�este necesară o întrerupere de ceas

14

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Când se apelează planificatorul?

� Crearea unui proces

� Terminarea unui proces

� Blocarea unui proces

�operații de I/E

�operații de sincronizare cu alte procese

� Terminarea unei operații de I/E

� Expirarea cuantei de timp alocate unui proces

� Existența unui proces cu prioritate mai mare

15

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

În ce constă planificarea execuției?

� Selecția unui proces/thread pentru rulare

�algoritm de selecție

�se parcurge coada READY [1]

�coada poate fi arbore, heap, listă, cozi multiple

� Schimbarea de context [2]

�se salvează contextul procesului curent

�se încarcă procesul selectat

16

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Criterii de planificare (2)

� Timpul de așteptare

�cât timp se așteaptă în coada READY

� Timpul de răspuns

�timpul scurs de la crearea unui proces până la începerea execuției, sau

�cât durează o tranziție WAITING->RUNNING

� Echitate/corectitudine (fairness)

�procesele cu aceeași prioritate trebuie tratate similar

17

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Criterii de planificare

� Criterii de selecție a procesului [3]

� Utilizarea procesorului

�gradul de “ocupare” a procesorului

� Productivitate (throughput)

�câte procese sunt încheiate în unitatea de timp

� Turnaround time

�timpul scurs de la crearea unui proces până la terminarea lui

18

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Criterii de planificare (3)

� Algoritmii de planificare urmăresc

�maximizarea utilizării procesorului

�maximizarea productivității

�minimizarea turnaround time

�minimizarea timpului de așteptare

�minimizarea timpului de răspuns (interactivitate)

19

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Notații

� TT – turnaround time

� TTM – turnaround time mediu

� J1, J2, ..., J# - jobul 1, 2, ..., # (batch)

� P1, P2, ..., P# - procesul 1, 2, ..., #

20

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificare pentru sisteme batch

� Criterii importante

�throughput

�turnaround time

�utilizarea procesorului

� Algoritmi de planificare

�First-Come, First-Served

�Shortest Job First

�Shortest remaining time next

�Planificarea pe trei niveluri

21

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

First-Come, First-Served

� Planificare în ordinea intrării în sistem

� Un proces care cere procesorul este trecut într-o coadă de așteptare

� Procesele care se blochează sunt trecute la sfârșitul cozii

� + ușor de înțeles și implementat

� - procesele CPU-bound încetinesc procesele I/O-bound (efectul de convoi)

� - timp mediu de așteptare destul de mare

22

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Exemplu FCFS

� J1, J2, J3

� Joburile intră simultan în sistem

� Timpii de execuție: 24, 3, 3

� FCFS: ordinea J1, J2, J3

�TT(J1) = 24; TT(J2) = 27; TT(J3) = 30

�TTM = (24 + 27 + 30) / 3 = 27

� Alt algoritm: ordinea J2, J3, J1

�TT(J1) = 30; TT(J2) = 3; TT(J3) = 6

�TTM = (30 + 3 + 6) / 3 = 13

23

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Shortest Job First

� Problemă?

�trebuie cunoscută durata de execuție a unui job

� Planificarea în ordinea duratei de execuție

24

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Exemplificare SJF

� J1, J2, J3, J4

� Job-urile intră simultan în sistem

� Timpii de execuție: 12, 20, 8, 4

� FCFS: J1, J2, J3, J4

�TT(J1) = 12; TT(J2) = 32; TT(J3) = 40; TT(J4) = 44

�TTM = (12 + 32 + 40 + 44) / 4 = 32

� SJF: J4, J3, J1, J2

�TT(J4) = 4; TT(J3) = 12; TT(J1) = 24; TT(J2) = 44

�TTM = (4 + 12 + 24 + 44) / 4 = 21

25

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Shortest remaining time first

� Trebuie cunoscut timpul de execuție a jobului

� Versiune preemptivă a algoritmului SJF

�când un nou job este submis pentru execuție

�... și timpul de execuție al acestuia este mai mic decât timpul rămas din execuția jobului curent

�=> jobul curent este suspendat și noul job este executat

26

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Exemplificare SRTF

� J1, J2, J3, J4

� Timpii de intrăre în sistem: 0, 1, 2, 3

� Timpii de execuție: 8, 4, 9, 5

� SRTF: J1(0:1), J2(1:5), J4(5:10), J1(10:17), J3(17:26)

�TT(J1) = 17; TT(J2) = 4; TT(J3) = 24; TT(J4) = 7

�TTM = (17 + 4 + 24 + 7) / 4 = 13

� SJF: J1(0:8), J2(8:12),J4(12:17),J3(17:26)

�TT(J1) = 8; TT(J2) = 11; TT(J3) = 24; TT(J4) = 14

�TTM = (8 + 11 + 24 + 14) / 4 = 14.25

27

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea pentru sisteme interactive

� Criterii importante

�timpul de răspuns

�satisfacția utilizatorului

� Algoritmi de planificare

�Round-Robin

�Clase de priorități

�Shortest process next

28

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Round-Robin

� FCFS preemptiv

� Cuantă de timp de rulare a programului

� La expirarea cuantei de timp procesul este preemptat

�se apelează planificatorul

�se alege alt proces (a cărui cuantă nu a expirat)

29

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Round-Robin (2)

� Cum trebuie să fie cuanta de timp? (mare/mică)

� Cuantă de timp mare (secunde, sute de ms)

�productivitate ridicată

�timp de așteptare mare

�interactivitate scăzută

� Cuantă de timp mică (4-10 ms)

�interactivitatea ridicată

�timp comparabil cu o schimbare de context

�utilizare ineficientă a procesorului

30

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor07.03.2011 - 13.03.2011

Planificare cu priorități

� Dezavantaj Round-Robin

�toate procesele sunt „egale”

� Abordare planificare cu priorități

�unele procese sunt „mai egale” decât altele

� Utilizatori importanți/mai puțin importanți

� Există procese mai importante/prioritare

31

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea cu priorități (2)

� Prioritățile pot fi

�statice

•se cunoaște de la început care procese vor fi prioritare

�dinamice

•procesele I/O-bound sunt, în general, prioritare celor CPU-bound

32

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea cu priorități (3)

33

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea cu priorități (4)

[3]

34

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Algoritmi cu multiple cozi

� Procesele sunt păstrate în mai multe cozi

� Fiecare coadă are asociată o prioritate

� Se rulează mai întâi procesele din coada cu prioritatea cea mai mare

� Un proces poate migra dintr-o coadă în altă coadă <--- algoritmi cu multiple cozi și feedback

35

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificare pentru sisteme real-time

� Criterii importante

�îndeplinirea operațiilor în timp limitat

�predictibilitatea

� Sisteme real-time

�hard real-time

•rezervarea resurselor

•nu se folosește swapping sau memorie virtuală

�soft real-time

•procesele critice au prioritate maximă

•pot cauza întârzieri mari celorlalte procese

36

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Shortest process next

� Adaptare a SJF pentru sisteme interactive

� Problemă

�nu se cunoaște timpul de execuție

� Soluție

�estimare pe baza comportamentului anterior

�se estimează o durată T0

�procesul durează T1

�estimarea pentru următoarea cuantă va fi a * T1 + (1-a) * T0

�a – estimarea se uită sau nu repede

�tehnică de estimare de tip aging

37

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificare pentru sisteme real-time (2)

� Planificare real-time în sistemele time-sharing

�trebuie să existe un planificator bazat pe priorități

�procesele real-time trebuie să ruleze cu prioritate maximă

�planificatorul nu trebuie să decrementeze prioritatea proceselor real-time când acestea rulează

�planificatorul nu trebuie să întrerupă procesele real-time

�schimbarea de context trebuie să dureze puțin

38

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Latența unei schimbări de context

� Sumă de timpi

� Salvarea contextului curent

� Încărcarea noului context

� Așteptarea terminării unui apel de sistem

�se pot introduce puncte de preemptare în apelurile de sistem cu durată mare

�kernel preemptiv

� Probleme de priority inversion [4]

�priority inheritance

39

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Latența unei schimbări de context (2)

40

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea execuției pe Windows

� Algoritm de planificare preemptivă bazat pe priorități

� Subsistemul de planificare se cheamă dispatcher

� O schemă de priorități pe 32 de niveluri

�0 – prioritate sistem

�1-15 – clasă variabilă de priorități

�16-30 – clasă real-time

� Nucleu preemptiv

41

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Apelarea dispatcher-ului

� Un thread se blochează și cedează controlul procesorului

� Este întrerupt de un thread cu prioritate mai mare

�un thread cu prioritate mai mare iese din starea BLOCKED

�unui thread i-a fost schimbată prioritatea

� Unui thread îi expiră cuanta de timp

42

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Algoritmul de planificare

� Este selectat procesul cu prioritatea cea mai mare

�fiecare prioritate are asociată o coadă

�procese din fiecare coadă sunt procese în starea READY

� Procesele din aceeași coadă sunt planificate asemănător cu Round-Robin

43

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Priority boosting

� Unui proces îi este crescută pentru scurt timp prioritatea

� Situații

�la încheierea unei operații de I/E

�după așteptarea la un obiect de sincronizare

�după ce un proces din foreground a așteptat o operație blocantă

�thread-urile GUI sunt trezite

�un thread nu a rulat în ultima perioadă

44

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Priority boosting (2)

� Creșterea priorității este temporară

�procesul rulează o singură cuantă de timp

�se decrementează prioritatea și se rulează încă o coadă de timp

�se continuă până când se ajunge la prioritatea de bază

� Prioritatea de bază este crescută, dar nu mai mult de 15

� La așteptarea I/E prioritatea este crescută în funcție de dispozitiv

45

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea execuției în Linux

� Planificator preemptiv, time-sharing cu suport pentru procese real-time

� Kernel preemptiv de la versiunea 2.6

� Planificatorul gestionează 4 clase de procese [5]

�real-time FCFS

�real-time RR

�interactive

�Batch

46

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea proceselor interactive

� 2.6 – 2.6.23 – O(1) scheduler

� Liste de procese pentru fiecare prioritate

� Două cozi de astfel de liste

�coada activă: procesele care nu și-au consumat cuanta

�coada expirată: procesele care și-au consumat cuanta

� Procesele sunt pedepsite (micșorarea priorității)

�dacă se folosește mai mult timp de procesor decât este disponibil

�se scade prioritatea dinamică proporțional cu cea statică

�se ține cont de istoria procesului

� Operațiile de extragere/inserare în cozi se efectuează în O(1)

47

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

CFS

� Completely Fair Scheduler [6]

� 2.6.23 – prezent

� Time-ordered red-black tree

� Virtual runtime

�fiecare proces are un timp „virtual” de execuție

�cel mai din stânga proces are timpul virtual cel mai mic – va fi următorul planificat

�planificare: t_virtual_curent – t_virtual_stanga > threshold

� Operații în O(log n)

48

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea proceselor real-time

� Conform cu POSIX.1b

� FCFS

�procesele au doar prioritate statică, mai mare decât prioritatea proceselor time-sharing

�este ales procesul cu prioritatea cea mai mare

�un proces din această clasă va fi înlocuit doar dacă efectuează o operație blocantă

� RR

�la fel ca FCFS, dar un proces va fi preemptat dacă își consumă cuanta de timp

49

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

SO – Sisteme de operare. Planificarea proceselor

Planificarea proceselor real-time (2)

� Procesele sunt planificate într-o manieră RR

� Cuanta de timp este mai mare decât pentru procesele interactive

� Procesele cu prioritate statică minimă sunt considerate procese batch