Ce trebuie sa stii despre multiprocesare si multitasking

Ce trebuie sa stii despre multiprocesare si multitasking?

0 Shares
0
0
0

In calcul, multitasking-ul este executarea simultana a mai multor sarcini (cunoscute si sub denumirea de procese) intr-o anumita perioada de timp. Noile sarcini le pot intrerupe pe cele deja incepute, inainte de a se termina, in loc sa astepte sa se termine. Ca urmare, un computer executa segmente de mai multe sarcini intr-o maniera intercalata, in timp ce sarcinile partajeaza resurse de procesare comune, cum ar fi unitatile centrale de procesare (CPU) si memoria principala.

Multitaskingul intrerupe automat programul rulat, salvandu-si starea (rezultatele partiale, continutul memoriei si continutul registrului computerului) si incarcand starea salvata a altui program, transferand controlul la acesta. Acest „switch context” poate fi initiat la intervale de timp fixe (multitasking preventiv) sau programul rulat poate fi codat pentru a semnaliza software-ului de supraveghere, momentul cand poate fi intrerupt (multitasking cooperant).

Multitasking-ul nu necesita executarea paralela a mai multor sarcini in acelasi timp; in schimb, permite ca mai mult de o sarcina sa avanseze intr-o anumita perioada de timp. Chiar si pe computere cu multiprocesor, multitasking permite rularea mai multor sarcini decat numarul procesoarelor existente.

Multitasking-ul este o caracteristica comuna a sistemelor de operare de calculator. Permite utilizarea mai eficienta a hardware-ului computerului; in cazul in care un program asteapta un eveniment extern, cum ar fi o intrare de utilizator sau un transfer de intrare / iesire cu un periferic pentru a fi completat, procesorul central poate fi utilizat in continuare cu un alt program.

Intr-un sistem de partajare a timpului, mai multi operatori umani utilizeaza acelasi procesor ca si cum ar fi dedicat utilizarii lor, in timp ce in spatele scenei, computerul serveste mai multi utilizatori prin multit-threading-ul programelor individuale. In sistemele de multiprogramare, o sarcina se executa pana cand trebuie sa astepte un eveniment extern sau pana cand programatorul sistemului de operare schimba fortat sarcina de executie din procesor.

Sistemele in timp real, precum cele concepute pentru a controla robotii industriali, necesita prelucrare in timp util; un singur procesor ar putea fi impartit intre calculele miscarii masinii, comunicatii si interfata utilizatorului.

Adesea sistemele de operare multitasking includ masuri pentru modificarea prioritatii sarcinilor individuale, astfel incat lucrarile importante primesc mai mult timp de procesare decat cele considerate mai putin semnificative. In functie de sistemul de operare, o sarcina poate fi la fel de mare ca un intreg program de aplicatie sau poate fi formata din fire de executie mai mici, care realizeaza portiuni din programul general.

Un procesor destinat utilizarii cu sisteme de operare multitasking poate include hardware special pentru a sustine in siguranta mai multe sarcini, cum ar fi protectia memoriei si inele de protectie care asigura faptul ca software-ul de supraveghere nu poate fi deteriorat sau afectat de erori de program, in modul utilizator.

Termenul „multitasking” a devenit un termen international, intrucat acelasi cuvant este folosit in multe alte limbi, precum germana, italiana, olandeza, daneza si norvegiana.

Multiprogramming

In primele zile ale computing-ului, procesoarele erau foarte scumpe, iar perifericele erau foarte lente. Cand computerul rula un program care avea nevoie de acces la un periferic, unitatea centrala de procesare (CPU) trebuia sa inceteze executarea instructiunilor programului, in timp ce perifericul prelucra datele. Acest lucru era de obicei foarte ineficient.

Primul computer care a folosit un sistem multiprogramare a fost britanicul Leo III, detinut de J. Lyons and Co. In timpul procesarii lotului, mai multe programe diferite au fost incarcate in memoria computerului, iar acesta a inceput sa ruleze. Cand primul program a ajuns la o instructiune care astepta un periferic, contextul acestui program a fost stocat deoparte, iar al doilea program din memorie a primit permisiunea de a rula. Procesul a continuat pana cand toate programele au si-au terminat rutinele si au incetat sa functioneze.

Utilizarea multiprogramarii a fost imbunatatita prin aparitia memoriei virtuale si a tehnologiei masinilor virtuale, ceea ce a permis programelor individuale sa utilizeze resursele de memorie si sisteme de operare, ca si cum alte programe care ruleaza concomitent ar fi, in toate scopurile practice, inexistente si invizibile pentru acestea .

Multiprogramarea nu ofera nicio garantie ca un program va rula in timp util. Intr-adevar, primul program poate foarte bine sa functioneze ore intregi, fara a avea nevoie de acces la un periferic. Multiprogramarea a redus foarte mult timpul de asteptare la procesarea mai multor loturi.

Multitasking cooperativ

Sistemele multitasking timpurii au folosit aplicatii care si-au cedat in mod voluntar timpul unul altuia. Aceasta abordare, care a fost in cele din urma sustinuta de multe sisteme de operare pe computer, este cunoscuta astazi sub denumirea de multitasking cooperativ. Desi acum este rar utilizat in sisteme mai mari, cu exceptia aplicatiilor specifice, cum ar fi CICS sau subsistemul JES2, multitasking-ul cooperativ a fost candva singura schema de planificare folosita de Microsoft Windows si Classic Mac OS pentru a permite rularea mai multor aplicatii simultan. Multitasking-ul cooperativ este inca utilizat astazi pe sistemele RISC OS.

Intrucat un sistem multitasked cooperant se bazeaza pe fiecare proces, oferind in mod regulat timp celorlalte procese din sistem, un program prost proiectat poate consuma tot timpul procesorului pentru sine, fie efectuand calcule extinse, fie prin asteptare extinsa; ambele ar face ca intregul sistem sa piarda timp pretios. Intr-un mediu server, acesta este un pericol care face ca intregul mediu sa fie inacceptabil de fragil.

smart-microchip-background-motherboard-closeup-technology-remix

Multitasking preventiv

Multitasking-ul preventiv permite sistemului informatic sa garanteze un mediu de procesare mai fiabil, alocand fiecarui proces o „portie” regulata de timp de operare. De asemenea, permite sistemului sa se ocupe rapid de evenimente externe importante, cum ar fi datele primite, care ar putea necesita atentia imediata a unuia sau altui proces. Au fost dezvoltate sisteme de operare pentru a profita de aceste capacitati hardware si a rula mai multe procese preventiv.

Multitasking-ul preventiv a fost implementat in Monitorul PDP-6 si MULTICS in 1964, in OS / 360 MFT in 1967 si in Unix in 1969 si a fost disponibil in unele sisteme de operare pentru computere la fel de mici ca PDP-8 DEC. Este o caracteristica de baza a tuturor sistemelor de operare asemanatoare Unix, cum ar fi Linux, Solaris si BSD cu derivatele sale, precum si a versiunilor moderne ale Windows.

In orice moment specific, procesele pot fi grupate in doua categorii: cele care sunt in asteptare pentru intrare sau iesire (numite „I / O bound”) si cele care utilizeaza integral CPU („CPU bound”). In sistemele primitive, software-ul ar fi adesea „sondat” sau „ocupat” in asteptarea intrarii solicitate (cum ar fi intrarea pe disc, tastatura sau retea).

In acest timp, sistemul nu efectueaza lucrari utile. Odata cu aparitia intreruperilor(I/O) si multitasking-ului preemptiv, procesele legate de I / O ar putea fi „blocate” sau puse in asteptare, in asteptarea sosirii datelor necesare, permitand altor procese sa utilizeze CPU. Deoarece sosirea datelor solicitate ar genera o intrerupere, proceselor blocate le-ar putea fi garantata o revenire in timp util la executie.

Primul sistem de operare multitasking preemptiv disponibil pentru utilizatorii casnici a fost Sinclair QDOS pe Sinclair QL, lansat in 1984, dar foarte putini au cumparat acest pc. Amiga Commodore, lansat anul urmator, a fost primul computer comercial de succes care a utilizat aceasta tehnologie, iar abilitatile sale multimedia il fac un stramos clar al calculatoarelor personale multitasking contemporane.

Microsoft a facut din multitasking-ul preemptiv o caracteristica de baza a sistemului lor de operare pilot de la inceputul anilor 1990, cand a dezvoltat Windows NT 3.1 si apoi Windows 95. Ulterior, a fost adoptat pe Apple Macintosh de Mac OS X care, ca sistem de operare similar Unix, foloseste preemptive multitasking pentru toate aplicatiile native.

Un model similar este folosit in Windows 9x si in familia Windows NT, unde aplicatiile native pe 32 de biti sunt multitasked cu preemptie. Editiile Windows pe 64 de biti, atat pentru arhitecturile x86-64 cat si pentru Itanium, nu mai accepta aplicatii vechi de 16 biti si asigura astfel multitasking preemptiv pentru toate aplicatiile acceptate.

Timp real

Un alt motiv pentru multitasking a fost in proiectarea sistemelor de calcul in timp real, unde exista o serie de activitati externe, eventual, fara legatura, care trebuie controlate de un singur sistem de procesare. In astfel de sisteme, un sistem de intrerupere ierarhica este cuplat cu prioritizarea proceselor pentru a se asigura ca activitatilor cheie li s-a oferit o pondere mai mare a timpului de proces disponibil.

Multithreading

Pe masura ce multitasking-ul imbunatatea foarte mult randamentul computerelor, programatorii au inceput sa implementeze aplicatii ca seturi de procese de cooperare (de exemplu, un proces care aduna date de intrare, un proces care proceseaza date de intrare, un proces care scrie rezultatele pe disc). Acest lucru a necesitat, insa, unele instrumente care sa permita proceselor sa faca schimb eficient de date.

Firele (thread-urile procesoarelor) s-au nascut din ideea ca cel mai eficient mod de a coopera procesele de schimb de date, ar fi sa impartaseasca intregul lor spatiu de memorie. Astfel, firele sunt procese care ruleaza in mod efectiv in acelasi context de memorie si impartasesc alte resurse cu procesele parinte, cum ar fi fisierele deschise.

Firele sunt descrise drept procese usoare, deoarece comutarea intre fire nu implica schimbarea contextului memoriei.

In timp ce firele sunt programate preventiv, unele sisteme de operare ofera o varianta a firelor, numite fibre, care sunt programate in mod cooperativ. Pe sistemele de operare care nu furnizeaza fibre, o aplicatie isi poate implementa propriile fibre folosind apeluri repetate catre functiile lucratorului. Fibrele sunt chiar mai usoare decat firele si sunt mai usor de programat, desi au tendinta de a pierde unele sau toate avantajele firelor de pe masinile cu mai multe procesoare. Unele sisteme accepta direct multitreading in hardware.

0 Shares
You May Also Like