Schimbarea contextului

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 31 ianuarie 2019; verificările necesită 7 modificări .

Schimbarea contextului ( în engleză  context switch ) - în sistemele de operare și medii multitasking - procesul de terminare a execuției unei sarcini (proces, fir, fir) de către procesor, salvând în același timp toate informațiile și starea necesare pentru continuarea ulterioară din locul întrerupt , și restabilirea și încărcarea stării sarcinii care urmează să fie executată de procesor.

Procedura de schimbare a contextului include așa-numita programare a sarcinilor  - procesul de decizie la care sarcină să transfere controlul.

Descriere

O comutare de context salvează și restaurează următoarele informații:

În nucleul sistemului de operare , următoarele structuri sunt asociate fiecărui fir de execuție:

Schimbarea contextului și performanța

În plus, și foarte important, următoarele acțiuni hardware invizibile de software care afectează performanța au loc în timpul comutării de context:

În plus, trebuie luate în considerare următoarele fapte care afectează starea sistemului:

Schimbarea contextului și sistemul de operare

Din punctul de vedere al stratului de aplicație, schimbarea contextului poate fi împărțită în voluntară (voluntară) și forțată (nevoluntară): un proces/fir în rulare poate transfera el însuși controlul unui alt fir sau nucleul poate lua forțat controlul de la aceasta.

  1. Nucleul sistemului de operare poate prelua controlul de la un proces/un fir de execuție atunci când expiră timpul. Din punctul de vedere al programatorului, asta înseamnă că controlul ar putea scăpa de fir în cel mai „prost” moment, când structurile de date ar putea fi într-o stare inconsistentă, deoarece modificarea lor nu a fost finalizată.
  2. Executați un apel de sistem de blocare . Când o aplicație efectuează I/O, nucleul poate decide că poate ceda controlul unui alt fir/proces în timp ce așteaptă finalizarea I/O-ului pe disc sau rețea solicitat de acel fir. Această opțiune este cea mai productivă.
  3. Primitive de sincronizare a nucleului. Mutexuri , semafore , etc. Aceasta este principala sursă de probleme de performanță. Lucrul insuficient gândit cu primitivele de sincronizare poate duce la zeci de mii și, în cazuri mai ales neglijate, la sute de mii de comutări de context pe secundă.
  4. Un apel de sistem care așteaptă în mod explicit să apară un eveniment (select, sondaj, epoll, pauză, așteptare, ...) sau un moment în timp (sleep, nanosleep, ...). Această opțiune este relativ productivă, deoarece nucleul sistemului de operare are informații despre procesele de așteptare.

Caracteristicile procedurii de planificare

Diferența dintre sistemele de operare în timp real și de partajare a timpului este văzută cel mai clar în diferența de logica de programare pentru comutarile de context: planificatorul sistemului de partajare a timpului încearcă să maximizeze performanța întregului sistem, posibil în detrimentul performanței procese individuale. Sarcina programatorului de sistem în timp real este de a se asigura că procesele critice individuale rulează cu prioritate, indiferent cât de grea este suprasarcina pentru restul sistemului în ansamblu.

Implementări de schimbare a contextului în sistemele de operare moderne

După cum se poate observa din cele de mai sus, o comutare de context este o operațiune foarte intensivă în resurse și cu cât procesorul este mai „fantezist”, cu atât această operațiune devine mai intensivă în resurse. Pe baza acestui lucru, nucleul folosește o serie de strategii pentru, în primul rând, pentru a reduce numărul de comutări de context și, în al doilea rând, pentru a face ca schimbarea de context să consume mai puțin resurse.

Metode de reducere a numărului de comutări de context:

Metode pentru reducerea intensității resurselor de comutare de context:

Exemplele de mai sus se referă la kernel-ul Linux , totuși și alte sisteme de operare folosesc metode similare, deși în cazul sistemelor de operare proprietare este problematic să se dovedească/infirma utilizarea acestuia.

Note terminologice

Link -uri