Multitasking, osdev wiki, fandomului alimentat de Wikia

Multitasking - capacitatea sistemului de operare (sau mediu software) pentru a sprijini executarea simultană a mai comune și a interacțiunii sarcini multiple (programe, fire de execuție) între ele și mediul înconjurător.







În cazul în care sistemul poate efectua numai sarcini secvențial de următorul numai după finalizarea curentului, atunci sistemul este numit un singur-tasking. Primele sisteme au fost astfel.

link-ul de tranziție pentru sistemul de operare multitasking este un sistem de operare de procesare lot: un singur tasking ca o chestiune de fapt, un astfel de sistem nu funcționează cu o singură aplicație și fluxul de pachete care în mod secvențial în procese (funcții sau programe care rulează).

Direct de pe același multi-tasking ar trebui să spun atunci când mediul se asigură că sistemul în același timp, mai multe fire de execuție.

Cazul ideal este o paralelă multi-tasking multi-tasking în cazul în care fiecare sarcină este executat în kernel-ul său microprocesor hardware-ul de fapt, simultan cu unul pe altul. Această opțiune este chiar pusă în aplicare, de exemplu, în Elice microcontroler de la Parallax (asigură o funcționare imediat 8 probleme), dar, de obicei, utilizarea de hardware separat pentru fiecare sarcină este prea risipitor, prin urmare, se aplică o prelucrare pseudo Multitasking atunci când resursele de microprocesoare transferate alternativ între sarcinile care dau iluzia de simultaneitate, sau și o pseudo paralelă set de multitasking cu mai multe nuclee de procesare.

Există două tipuri principale de un pseudo multi-tasking:

  • non-preemptive - care necesită un transfer explicit al controlului între sarcinile la anumite puncte din proprie inițiativă;
  • deplasare - în care comutarea între sarcini are loc în mod implicit de către managerul de activități într-un interval de timp arbitrar.

Nevytyasnyayuschaya multitasking ca cel mai primitiv, a fost creat pentru prima dată, și are dostinstva și dezavantaje:

  • + foarte ușor de implementat;
  • + bine previzibil în comportament care elimină multe situații periculoase, cum ar fi cursa pentru utilizarea resurselor comune;
  • + Se impune cerințe minime de sistem și petrece un minim de resurse (eventual chiar utilizarea mai multor sarcini ale stivei);
  • - Este nevoie de un stil special de programe de scris, ceea ce face dificilă atât pentru dezvoltarea de noi și adaptarea celor existente;
  • - împiedicat de reacție rapidă la evenimente externe;
  • - practic imposibil de a proteja sarcini unele de altele, ceea ce reduce foarte mult fiabilitatea sistemului - de obicei unul nu funcționează corect problema este umple cu ușurință toate celelalte (blocuri sau perturbă activitatea lor).

În schimb există o sarcină de deplasare. În ea organizarea interacțiunii între deplin învestită în mediul software (și anume, Task Manager), care permite mai multe sarcini în același timp pentru a lucra la sistem, ca și cum fiecare a fost singurul. Cu posibila deplasarea a problemei în orice moment și în orice punct din cod (cu excepția locurilor în care este interzis în mod expres) pentru a comuta la altul. Pro și contra din următoarele caracteristici:







  • + nu are nevoie de sarcină de comutare îngrijire între ele, orice sarcină, dar din ea nu necesită interacțiunea cu alte sarcini sau resurse partajate polzovatley poate arata la fel ca și cum ar fi un singur mediu de activitate;
  • + problema se poate obține rapid de control, dacă este necesar, indiferent de starea altor sarcini care oferă performanță în timp real;
  • + fezabilitatea largă de protejare a sarcinilor de sistem de operare de la erori și atacuri;
  • - Metodele speciale sunt necesare sincronizare sarcină unele cu altele pentru a se evita situațiile incerte și conflicte;
  • - Acesta trebuie să fie susținută de hardware-ul (cel puțin pentru a salva și restabili starea atunci când comutați mikroprotsesor);
  • - Este nevoie de mai multe resurse de sistem (memorie pentru stivă și salvând starea fiecărui procesor, și în timpul de comutare context).

Avantajele multitasking sunt cele mai semnificative pentru majoritatea problemelor practice și, prin urmare, aproape toate suficient de dezvoltate sisteme de operare moderne pune în aplicare acest tip de multitasking.

Eficacitatea sistemului multi-tasking depinde în mare măsură de metoda de sarcini de planificare pentru execuție. Pentru a înțelege conceptul de programare sarcini importante ale statului. Principalele sarcini ale statului sunt:

  • se realizează;
  • gata de execuție;
  • blocat.

Provocarea este în executare, atunci când este selectat de către resursa CPU, și trece de control. Este evident că sistemul se execută mai multe sarcini decât procesoare fizice. Prin urmare, există oa doua condiție - gata de execuție. Sarcina în această stare, dacă acesta poate fi executat, adică, nu există cauze de blocaj, dar având în vedere resursele de calcul pentru alte sarcini. În al treilea starea sarcinii devine imposibilitatea executării sale, la un moment dat. Acest lucru poate fi

  • așteptările cu privire la orice eveniment (deschiderea unui semafor, mesaj de sosire, etc ...);
  • Inițializarea stub (atunci când nu este configurat o altă sarcină sau sistem, condițiile inițiale de pornire);
  • „Înghețarea“ (oprire de execuție explicită, de obicei, în scopuri de depanare);
  • finalizarea (starea de „zombie“, atunci când performanța este deja terminat, dar resursele nu au fost încă lansat);
  • sau unele cazuri mai specifice.

Multe sisteme opertsionnoy trata aceste cazuri diferite, dar ele sunt reflectate doar în detaliile de implementare.

Spre deosebire de primele două, starea de blocare, în general, vorbind nu este obligatorie. Destul de caz standard este doar de așteptare, mersul pe jos, și este posibil să se pună în aplicare un ciclu gol. Cu toate acestea, acest lucru este o pierdere de timp CPU, care poate lua o sarcină diferită, astfel încât starea de blocare există în aproape toate sistemul de operare multi-tasking.

Există mai multe strategii de planificare de bază:

Controlul circular (round-robin) între sarcinile efectuate în orice ordine fixă ​​la intervale regulate; aleatoriu (random) prin fiecare anumită perioadă de timp, controlul este trecut la o provocare aleatoare; prioritate fiecare sarcină are un nivel de prioritate și o sarcină de control care nu au primit interblocate având cel mai înalt nivel (driven prioritate); (Driven-limită) de transfer de control, procedura se va asigura îndeplinirea sarcinilor într-o anumită perioadă.
  • Aceasta a constatat utilizarea extensiei AdBlock.