Curge în ferestre

Conceptul de prioritate a firului.

Firele accesează procesorul timp de 20 ms, după care planificatorul comută procesorul pentru a executa un alt fir. Acest lucru se întâmplă numai dacă toate firele au o prioritate, dar de fapt există fire cu diferite priorități în sistem, ceea ce modifică ordinea alocării timpului CPU.







Fiecărui fir îi este alocat un nivel de prioritate - de la 0 (cel mai mic) la 31 (cel mai înalt). Determinând ce thread să aloce timpul procesorului, sistemul consideră mai întâi doar fire cu prioritate 31 și le conectează la procesor pe principiul caruselului. Deși există thread-uri programate cu prioritate 31 în sistem, nu sunt primite subiecte cu prioritate mai mică a CPU. Această situație se numește "foamete" (înfometare). Se observă că atunci când firele cu o prioritate mai mare folosesc timpul CPU atât de intens încât celelalte practic nu funcționează. Probabilitatea acestei situații este mult mai scăzută în sistemele multiprocesoare, unde firele cu priorități 31 și 30 pot fi executate simultan. Sistemul întotdeauna încearcă să se asigure că procesoarele sunt încărcate cu lucru și că acestea sunt inactive numai în absența fluxurilor planificate.







Firele cu o prioritate mai mare înlocuiesc întotdeauna fluxurile cu o prioritate mai mică, indiferent dacă firele execută ultima sau nu. Să presupunem că procesorul execută un fir cu prioritate 5, iar aici sistemul detectează că un fir cu o prioritate mai mare este gata pentru execuție. Sistemul va opri firul cu o prioritate mai mică - chiar dacă nu a expirat fragmentul de timp CPU - și va conecta firul cu o prioritate mai mare la procesor.

Când sistemul de cizme este creat un fir special - un fir de pagină zero, căruia i se atribuie un nivel de prioritate zero. Nici un alt fir decât acesta nu poate avea un nivel de prioritate zero. Elimină paginile libere din memoria RAM în absența altor fire care necesită atenție din sistem.







Articole similare

Trimiteți-le prietenilor: