Pre-lansare

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Pre-lansarea sau preempțiunea (în engleză preemption) este în informatică , operațiunea în care un proces este întrerupt temporar și adus în afara procesorului , fără nicio cooperare din procesul în sine, pentru a permite executarea unui alt proces. Procesul întrerupt este de obicei reluat odată ce cel cu prioritate superioară și-a terminat activitatea (cu excepția cazului în care există încă alte procese cu prioritate superioară, caz în care mecanismul se repetă). Acest schimb este cunoscut ca un schimb de context . Pre-lansarea poate avea loc printr-un programator , care are sarcina de a întrerupe și / sau restaura procesele prezente în sistemul de operare în funcție de starea lor; în acest caz vorbim de planificare preventivă (sau planificare cu pre-lansare).

Mod utilizator și mod kernel

În majoritatea arhitecturilor unui sistem de operare, este posibil ca unele operații să nu fie efectuate prin pre-lansare: acest lucru se aplică de obicei funcțiilor kernelului și rutinei de întrerupere a serviciului , care, dacă nu este finalizată, ar putea genera o situație de condiție de cursă , care implică un impas ; acest lucru simplifică arhitectura nucleului, în detrimentul reacției sistemului. Distincția dintre modul utilizator și modul kernel, care determină nivelurile de prioritate între procese, poate fi folosită și pentru a înțelege dacă un proces este pre-eliberabil sau nu.

Unele sisteme de operare moderne au un kernel preventiv , conceput pentru a permite proceselor să pre-elibereze chiar și în modul kernel. Exemple de astfel de sisteme sunt nucleul 2.6 Linux și unele sisteme BSD .

Alte sisteme cresc sensibilitatea cu o arhitectură de microkernel , care, în unele cazuri, poate reduce substanțial nevoia de procese de pre-lansare.

Multitasking preventiv

Termenul multitasking preemptiv ( multitasking cu preempțiune ) este utilizat pentru a distinge un sistem de operare multitasking, care poate preveni procesele (de exemplu, poate întrerupe un proces împotriva voinței sale în favoarea unui alt proces mai prioritar), de un sistem de operare multitasking cooperativ ( multitasking cooperativ sau nepreentiv ) în care procesele sau sarcinile nu pot fi întrerupte în mod arbitrar de sistemul de operare, ci trebuie să pună ele însele resurse la dispoziție atunci când nu au nevoie de ele.

Practic, multitaskingul preventiv implică utilizarea unor mecanisme de întrerupere care suspendă procesele utilizate în prezent și invocă un planificator pentru a determina ce proces trebuie executat în continuare. Prin urmare, tuturor proceselor li se va acorda o parte din timpul procesorului.

În multitasking cu pre-lansare, nucleul sistemului de operare poate da naștere unei comutări de context (comutator de context) pentru a îndeplini constrângerile legate de politica de planificare, pre-lansare și apoi procesul activ. În general, pre-lansare înseamnă încheierea execuției unui proces înainte de sfârșitul său natural. Când un proces cu prioritate ridicată îl înlocuiește pe unul activ, vorbim de planificare de preempțiune sau pre-lansare.

Termenul „multitasking preventiv” este uneori folosit în mod eronat atunci când doriți, în loc de o clasă de politică de planificare mai specifică cunoscută sub numele de programare partajată în timp (programare partajată în timp ) sau partajare în timp .

Multitaskingul pre-lansare permite sistemului de operare să garanteze mai fiabil proceselor o „porțiune” de timp de rulare. De asemenea, permite sistemului să răspundă rapid la evenimente externe, cum ar fi datele primite, care pot necesita atenția imediată a unui proces.

Procesele pot fi grupate în două categorii: cele care așteaptă intrarea sau ieșirea (numite „ I / O bound ”) și cele care utilizează CPU complet („ CPU-bound ”). În primele sisteme, procesele deseori „ interogă ” resurse sau „ busywait ” care așteaptă intrarea solicitată (de exemplu, de pe disc, tastatură sau rețea). În acest timp procesul nu a efectuat o muncă utilă, dar a menținut controlul complet al procesorului. Odată cu apariția întreruperilor și pre-lansarea multitasking-ului, aceste procese legate de I / O pot fi „înghețate” sau puse în așteptare, așteptând sosirea datelor necesare, permițând altor procese să utilizeze CPU. De fapt, sosirea datelor solicitate generează o întrerupere care poate trezi un proces blocat anterior.

Deși tehnicile de multitasking au fost inițial dezvoltate pentru a permite mai multor utilizatori să partajeze o singură mașină, a devenit curând clar că multitaskingul era util indiferent de numărul de utilizatori. Multe sisteme de operare, de la cele din mainframes la cele din computerele personale și cele din dispozitivele necontrolate de utilizator (cum ar fi cele din aeronave spațiale robotizate), au recunoscut utilitatea multitasking-ului din mai multe motive.

Multitasking face posibilă utilizarea mai multor aplicații în același timp pentru un singur utilizator sau rularea proceselor în „fundal”, menținând în același timp controlul computerului.

Cuantificarea timpului

Intervalul de timp în care un proces este permis să ruleze într-un sistem multitasking pre-lansare se numește „cuantumul timpului”. Planificatorul este rulat la începutul fiecărei cuantumuri de timp pentru a decide procesul de rulat. Dacă intervalul este prea scurt, programatorul va consuma prea mult timp de calcul.

Pentru a permite nucleului sistemului de operare să schimbe un proces care și-a epuizat felia de timp, este programată o întrerupere care vă permite să împărțiți timpul de calcul între diferite procese, oferind iluzia că acestea din urmă sunt executate simultan sau într-un mod diferit. concurent. Un sistem de operare care implementează acest design se numește sistem multi-tasking.

Sisteme care acceptă multitasking pre-lansare

Câteva exemple de sisteme de operare pre-lansate sunt: AmigaOS , familia Windows NT (inclusiv XP și Vista ), Linux , * BSD , macOS și Windows 95/98 / ME (numai aplicații pe 32 de biți) [1] . Unix , toate sistemele bazate pe acesta, VMS și alte sisteme utilizate în mediul academic și în companiile mijlocii sau mari, au acceptat întotdeauna multitaskingul înainte de lansare, dar de mult timp au depășit capacitățile majorității utilizatorilor. costul licenței și costul ridicat al hardware-ului necesar.

Câteva exemple de sisteme de operare mai vechi fără pre-lansare (cooperativă) sunt Windows 1.x, 2.x, 3.x, Windows pentru grupuri de lucru , Windows 95/98 (când rulează aplicații pe 16 biți), versiunile NetWare și Classic din Mac OS (sistem 5.0 și o versiune ulterioară). Unele sisteme de operare non-multitasking sunt versiuni mai vechi de Mac OS, MS DOS și OS Commodore 64 care nu pot rula decât un singur program odată.

Primul sistem bazat pe multitasking TRIPOS disponibil pentru un public larg a fost Amiga OS (1985). Necesita un sistem Amiga bazat pe Motorola 68000 și nu avea gestionarea memoriei. Sistemul a încărcat dinamic blocuri de cod relocabil („ bucăți ” în jargonul Amiga) pentru a elibera în prealabil toate procesele în același spațiu de adrese.

Primele sisteme de operare pentru PC , cum ar fi MS-DOS și DR-DOS, nu au acceptat în niciun fel multitasking-ul. Sistemele Novell NetWare , Microsoft Windows și OS / 2 au introdus multitaskingul cooperativ pe PC-uri, dar nu au acceptat multitaskingul de pre-lansare. În cazul computerelor, pornirea lentă s-a datorat parțial necesității de a suporta o cantitate mare de cod DOS moștenit scris pentru a rula în modul utilizator unic pe un PC bazat pe 8086, în timp ce sistemul Amiga a fost proiectat cu suport multitasking de la Start.

Prima versiune de Windows care a avut suport multitasking limitat înainte de lansare a fost Windows 2.1x , care a folosit modul Virtual 8086 al procesorului Intel 80386 pentru a rula aplicații DOS în mașini virtuale 8086 - cunoscute în mod obișnuit ca „cutii DOS” („cutii DOS”) ) - care erau pre-eliberabile. În Windows 95 și succesorii săi, Windows 98 și Windows Me , aplicațiile pe 32 de biți au fost făcute pre-eliberabile rulând fiecare într-un spațiu de adrese separat, dar aplicațiile pe 16 biți au rămas cooperante. Windows NT , care a rulat procesele într-un spațiu de adrese paginat pe 32 de biți, a acceptat întotdeauna multitaskingul pre-lansare, care a fost moștenit din linia NT a sistemelor Windows, inclusiv Windows 2000 , Windows XP și Windows Vista .

În timp ce au existat planuri de a actualiza modelul multitasking cooperativ Mac OS la unul cu pre-lansare, acestea au fost abandonate în favoarea macOS , un sistem reproiectat din kernel-ul Darwin derivat din BSD, care suporta multitasking-ul cu pre-lansare.

OS / 2 Warp, rescrierea IBM a produsului unei colaborări anterioare IBM / Microsoft, OS / 2, proiectată pentru 386 de sisteme, a acceptat multitasking pre-lansare pentru aplicații native și, de asemenea, i-a permis să ruleze pe diferite sesiuni Windows.

Notă

Elemente conexe

linkuri externe

Leonardo Mutti , OPTIMIZAREA CRITERIILOR DE PLANIFICARE A LOCULUI MULTIPROCES ÎN MEDIUL GRIL ( PDF ), 2008. Accesat la 6 februarie 2011 .