Planificator de procese

Un planificator proces (planificator = program de control, de la programul pentru „ plan de timp “) este un arbitraj logica care reglementează executarea timp a mai multor procese în sistemele de operare și virtualizarea aplicatiilor . Programatorii de proces pot fi împărțiți aproximativ în întreruptori ( preventivi ) și neîntreruptori ( non preventivi , numiți și cooperativi ). Planificatorii fără întrerupere permit un proces, odată ce CPU a fost alocat, să ruleze până când îl eliberează din nou singur sau până când se blochează. Planificatorii de întrerupere alocă procesorul doar pentru o anumită perioadă de timp de la început și apoi îl retrag din proces. De asemenea, este posibil să facem diferența între strategiile de „conservare a muncii” și de „neconservare a muncii”. O strategie de planificare funcționează „conservând munca” atunci când comutarea între procese necesită doar o perioadă de timp neglijabil de mică. Se poate face o distincție între diferite sisteme, în care sunt plasate cerințe diferite asupra planificatorului:

  1. Sisteme de procesare în serie
  2. sisteme interactive
  3. Sisteme în timp real

În sistemele de procesare în lot, programatorul arată foarte simplu: joburile primite sunt plasate într-o coadă și de fiecare dată când este procesată o lucrare, următoarea iese din coadă (managerul de cozi).

Sistemele interactive au cerințe diferite: utilizatorul apreciază timpi de răspuns scurți . De exemplu, când a introdus un editor de text , textul ar trebui să apară imediat .

Un sistem în timp real trebuie să garanteze că un proces trebuie să fi finalizat o sarcină într-o perioadă de timp specificată. Cu cerințe dificile în timp real, acest lucru este garantat în 100% din toate cazurile, în timp ce cu cerințe ușoare limita de timp poate fi depășită într-un procent mic de cazuri.

PC-urile desktop tipice sunt sisteme interactive pe care procesele pot rula ocazional ca așa-numitele procese de fundal cu prioritate mai mică.

obiective

Alocarea procesorului la procese ar trebui făcută în cel mai bun mod posibil, prin care (în funcție de sistemul de executare) pot fi urmărite diferite obiective:

General

  • Corectitudine: Niciun proces nu ar trebui să aștepte un timp disproporționat, în timp ce altul este preferat.
  • Echilibru: Procesele ar trebui alocate procesorului astfel încât alte resurse, cum ar fi hard disk-ul , interfața de rețea etc. sunt ocupați.
  • Respectarea regulilor sistemului

Sisteme de procesare în serie

  • Utilizarea CPU : CPU ar trebui să fie pe deplin utilizat în permanență. Nu vrem ca CPU să funcționeze inactiv doar pentru că un proces așteaptă date de pe hard disk.
  • Debit: Numărul de sarcini finalizate pe unitate de timp trebuie maximizat. Aceasta oferă o strategie similară utilizării, dar privește mai mult rezultatul real.
  • Timp scurt de răspuns (timpul de transfer): timpul care trece de la sosirea unui proces până la finalizarea sa completă ar trebui redus la minimum.

Sisteme interactive (sisteme de dialog)

  • Timpi de răspuns rapid: Timpii de așteptare ai utilizatorului (sau ai altor sisteme) ar trebui să fie minimizați. Prin urmare, procesele care necesită interacțiune cu utilizatorul ar trebui preferate celor care pot avea loc în fundal.
  • Proporționalitate: Timpii de răspuns ai diferitelor procese ar trebui să îndeplinească așteptările utilizatorului. Dacă procesele (cum ar fi închiderea unei aplicații) sunt considerate simple de către utilizator, acestea trebuie executate rapid.

Sisteme în timp real

  • Respectă termenele limită
  • Previzibilitate: importantă pentru aplicațiile multimedia (în caz contrar, există riscul deteriorării calității sunetului, de exemplu) sau aplicații critice pentru siguranță, cum ar fi unitățile de control pentru airbag-uri, controlul vitezei de croazieră la autovehicule sau pilotii automat în aeronave.

Strategii

Cea mai mare problemă cu programatorul este faptul că resursele necesare pentru procesele individuale nu sunt cunoscute în prealabil. În general, prin urmare, nu este posibil să se creeze o planificare optimă, dar planificatorul trebuie să reacționeze dinamic la cerințele modificate. Pot fi utilizate diferite strategii de alocare (în funcție de planificator). Printre altele:

  • First In - First Out (FIFO), First-Come First-Served (FCFS): Toate procesele sunt procesate în ordinea în care sunt primite. Procesele sunt realocate numai atunci când procesul curent începe să aștepte sau executarea sa s-a încheiat. Această strategie realizează o utilizare bună în ceea ce privește procesorul, dar nu și în ceea ce privește resursele care pot dura mult timp pentru o cerere, cum ar fi B. intrare / ieșire sau stocare în masă. În plus, strategia nu este foarte potrivită pentru sistemele cu mai mulți utilizatori, deoarece utilizatorii individuali pot fi excluși pentru o perioadă mai lungă de timp (și anume în cazul proceselor complexe de către alți utilizatori).
  • Shortest-Job-Next (SJN), Shortest Job First (SJF), Shortest Processing Time (SPT): o altă metodă care nu este potrivită pentru sistemele multi-utilizator. Poate fi utilizat în cazurile în care timpul de calcul necesar pentru sarcini individuale poate fi prezis bine din valori empirice. Un dezavantaj este că proceselor mari nu li se poate atribui niciodată procesorul dacă se împing lucrări din ce în ce mai scurte. Dacă procesele pot fi întrerupte astfel încât să se efectueze o modificare a procesului dacă un proces nou sosit are un timp de execuție mai scurt decât procesul în curs de desfășurare, acesta se numește Shortest Remaining Processing Time (SRT) sau Shortest Remaining Processing Time (SRPT).
  • Cel mai devreme termen de scadență (EDD): Cu această strategie, acele procese cu cel mai scurt termen sunt efectuate mai întâi. Termenele statice și sosirea simultană a sarcinilor independente sunt o condiție prealabilă pentru aceasta. Acest proces non-perturbator este ideal pentru a minimiza întârzierea maximă. Dacă procesele pot fi întrerupte, se vorbește despre programarea bazată pe termenul limită , planificarea în conformitate cu termenele limită sau cel mai devreme termen limită (FED). Această strategie apare în principal în sistemele în timp real, deoarece este posibil să se garanteze un timp de răspuns definit pentru anumite procese.
  • Planificare prioritară : această strategie atribuie o prioritate fiecărui proces. Prelucrarea are loc apoi în ordinea priorităților.
    • Rate Monotonic Scheduling (RMS): Prioritatea este calculată din durata perioadei (procesele cu perioade mai scurte au prioritate mai mare).
    • Termen de programare monotonă (DMS): Prioritatea este calculată de la termenul relativ (procesele cu termene relative mai scurte au prioritate mai mare).
    • De asemenea, puteți acorda mai multor procese aceeași prioritate, acestea sunt apoi executate în ordinea în care sunt primite sau alternează cu o procedură subordonată de felie de timp în aceeași prioritate (de exemplu, planificarea cozii de feedback pe mai multe niveluri sau timpul cel mai scurt scurs (SET))
    • Prioritățile pot fi, de asemenea, dinamice, prioritatea unui proces crescând în timp, astfel încât chiar și procesele cu prioritate redusă să poată fi procesate la un moment dat și să nu fie deplasate în mod constant de procese cu prioritate superioară.
  • Procedură round robin , time slice : CPU este alocat unui proces pentru o anumită perioadă de timp (scurtă). Procesul este apoi pus din nou în coadă. Dacă intervalele de timp individuale sunt de dimensiuni diferite, se vorbește despre Robin ponderat rotund (WRR)

Procedura de programare

literatură

Dovezi individuale

  1. ^ Otto Spaniol : Programare sistem: script pentru prelegerea de la RWTH Aachen. 1996, ISBN 3-860-73470-9
  2. Credit Scheduler în Xen Wiki
  3. Credit2 Scheduler în Xen Wiki