Manager de sistem de operare

Programarea sarcinilor  este unul dintre conceptele cheie în multitasking și multiprocesare atât în ​​sistemele de operare de uz general, cât și în timp real . Programarea constă în alocarea de priorități proceselor dintr- o coadă de priorități . Codul programului care realizează această sarcină se numește planificator ( commutător de sarcini , planificator ) . 

Cel mai important obiectiv al programării sarcinilor este utilizarea la maxim a procesorului. Debitul  este numărul de procese care finalizează execuția pe unitatea de timp. Timp de așteptare - Cantitatea de  timp pe care un proces așteaptă în coada de așteptare. Timpul de răspuns  este timpul care trece de la începutul unei cereri până la primul răspuns la o cerere.

În mediile de calcul în timp real , de exemplu, pe dispozitivele mobile concepute pentru control automat în industrie (de exemplu, robotică ), planificatorul de sarcini trebuie să se asigure că procesele sunt procesate în intervale de timp specificate (timp de răspuns); acest lucru este esențial pentru menținerea funcționării corecte a sistemului în timp real.

Tipuri de planificatoare în sistemele de operare

Sistemele de operare pot include până la trei tipuri diferite de programatori: planificatorul pe termen lung (sau planificatorul de rulare), planificatorul pe termen mediu și planificatorul pe termen scurt (cunoscut și ca dispecer ). Numele în sine descriu deja frecvența relativă cu care planificatorul își îndeplinește funcțiile.

Programator pe termen lung

Planificatorul pe termen lung decide ce sarcini sau procese vor fi adăugate la coada de procese gata de rulare; adică atunci când un proces este încercat să pornească, planificatorul pe termen lung fie adaugă un nou proces la coada de procese pregătite (permite să ruleze), fie amână această acțiune. Astfel, planificatorul pe termen lung decide ce procese vor rula concomitent, controlând astfel gradul de paralelism și proporția dintre procesele intensive I/O și cele intensive CPU. De obicei, computerele desktop nu folosesc un programator pe termen lung și permit noilor procese să ruleze automat. Dar acest planificator este foarte important pentru sistemele în timp real, deoarece dacă sistemul este supraîncărcat cu procese paralele, timpul de răspuns al sistemului poate deveni mai lung decât este necesar, ceea ce este inacceptabil.

Planificator pe termen mediu

În toate sistemele cu memorie virtuală, programatorul pe termen mediu mută temporar (descărcă) procesele din memoria principală în memoria secundară (de exemplu, pe un hard disk) și invers. Aceste acțiuni se numesc paginare sau schimbare . Programatorul pe termen mediu poate decide să schimbe un proces din memoria principală dacă:

Procesul va fi returnat în memoria principală atunci când este disponibilă cantitatea necesară de memorie liberă sau când procesul se activează (caz în care programatorul va schimba un alt proces din memoria principală pentru a elibera memoria principală).

În multe sisteme moderne care acceptă maparea spațiului de adrese virtuale la memoria secundară, alta decât fișierul de pagină, planificatorul pe termen mediu poate juca și rolul de planificator pe termen lung, tratând noile procese ca procese care au fost schimbate din memoria principală. În acest fel, sistemul poate încărca codul în memoria principală numai atunci când procesul are nevoie să se execute (aceasta se numește cerere-încărcare sau „ încărcare lenenă ”).

Planificator pe termen scurt

Planificatorul de la acest nivel decide care dintre procesele gata și încărcate vor fi rulate pe CPU după întrerupere (după timp, operarea I/O, apelul sistemului de operare sau alt semnal). Deciziile la acest nivel trebuie luate foarte des (cel puțin în fiecare perioadă). De asemenea, planificatorul poate sau nu să suporte multitasking preventiv (adică să poată întrerupe execuția unui proces).

Dispecer

Dispecerul este o altă componentă a sistemului de planificare. Acesta este un modul care transferă controlul procesorului către procesul care a fost selectat la nivel de programare pe termen scurt. Sarcinile sale includ comutarea contextului, trecerea la modul utilizator și săritul la locul potrivit în programul utilizatorului pentru a începe sau continua execuția acestuia. Principala cerință pentru dispecer este viteza, deoarece efectuează fiecare comutare de proces.

Vezi și