Multithreading - viață-prog

Ce este multi-threading

Executarea instrucțiunilor mașinii
Fig. 4.1. Curente și procese [ANDE97]

Într-un mediu multithreaded, procesul este definit ca o unitate structurală de alocare a resurselor, precum și unitate structurală de protecție. Cu procesele de următoarele elemente sunt conectate.







Ca parte a procesului poate fi una sau mai multe fluxuri, fiecare dintre care are următoarele caracteristici.

  • Statele subiect (alergare, executabilă, etc.).
  • Contextul salvat nu se execută fir; O modalitate de a privi fluxul - considerat un contor de program independent, care lucrează prin acest proces.
  • stivă de execuție.
  • Memoria statică alocată pentru variabilele de flux locale.
  • Accesul la memorie și procesa resursele care aparțin acestui flux; acest acces este partajat de toate firele în acest proces.

Ce este multi-threading

Fig. 4.2. Modelul Single-let și multi-filetat proces

  1. Crearea unui fir nou într-un proces existent durează mult mai puțin timp decât crearea unui nou proces complet. Cercetările efectuate de către Mach dezvoltatorii sistemului de operare, au arătat că rata de creare a procesului, în comparație cu aceeași viteză pe aplicațiile UNIX compatibile care nu utilizează fluxuri, în creștere de 10 ori mai [TEVA87].
  2. Fluxul poate fi finalizat mult mai rapid decât procesul.
  3. comutare fir este mult mai rapid în cadrul aceluiași proces.
  4. Când se utilizează flux crește eficiența schimbului de informații între două programe executabile. Cele mai multe de comunicare între sistemul de procese de operare independent vine cu nucleul, a cărui funcție este de a asigura protecția și procedurile pentru punerea în aplicare a schimbului. Cu toate acestea, datorită faptului că diferitele fire ale unuia și aceluiași proces împart aceeași zonă de memorie și aceleași fișiere, acestea pot face schimb de informații fără un miez.






Deci, în cazul în care cererea sau funcția trebuie să fie pus în aplicare ca un set de module interconectate, este mult mai eficient să-l pună în aplicare ca un set de fluxuri, decât un set de procese separate.

Un exemplu de aplicație care poate fi aplicat cu succes de flux este un server de fișiere. La primirea fiecărei cereri de fișier nou program de management al fișierului poate genera un nou fir. Datorită faptului că serverul trebuie să se ocupe de un număr foarte mare de cereri într-o perioadă scurtă de timp pentru a fi create și șterse mai multe fluxuri. În cazul în care un astfel de program server care rulează pe o mașină de multiprocesor, pe diferite procesoare din mai multe fire poate rula simultan într-un singur proces. În plus, datorită faptului că procesele de server de fișiere sau firele trebuie pentru a partaja date din fișiere și, prin urmare, să-și coordoneze activitățile lor, o mai bună utilizare a firelor și a zonei de memorie partajată, mai degrabă decât procese și mesagerie.

Design proces de streaming și util pe mașinile uniprocesor. Aceasta ajută la simplificarea structurii unui program pentru a efectua mai multe funcții diferite, în mod logic.

În [LETW88] oferă patru exemple de utilizare a următoarelor fluxuri într-un sistem multi-tasking un singur utilizator.