Ce este multi-threading 1
Multithreading - platforma de proprietate (de exemplu, sistemul de operare, mașină virtuală, etc ...), sau o aplicație, care constă în faptul că procesul generat de sistemul de operare poate consta din mai multe fluxuri care rulează „în paralel“, adică fără ordinea prescrisă în timp. Unele sarcini astfel de separare se poate realiza o utilizare mai eficientă a resurselor informatice.
Astfel de fluxuri sunt numite și fire de execuție (de la firul de execuție limba engleză.); denumite uneori „fire“ (traducerea literală a. firului în engleză) sau informal „fire de greutate.“
Multithreading nu trebuie confundat cu multitasking sau multiprocesor, în ciuda faptului că sistemele de operare care implementeaza multitasking au tendința de a pune în aplicare și multithreading.
Avantajele multithreading includ următoarele:
relativ mai mic de la timpul procesului necesar pentru a crea flux.
Creșterea productivității procesului de paralelizare calcule și de prelucrare a operațiunilor de intrare / ieșire.
Multithreading (multithreading) se numește capacitatea sistemului de operare de a menține același proces de executare mai multe fire.
Fig. 4.1. Curente și procese
Î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.
acces securizat la procesoare, alte procese (pentru schimbul de informații între ele), iar fișierul de resurse intrări-ieșiri (dispozitive și canale).
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;
stivă runtime (stiva - aceasta este o astfel de structură de date în memorie utilizată pentru stocarea temporară).
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.
Enumerăm principalele avantaje ale utilizării fire în termeni de performanță:
Crearea unui fir nou într-un proces existent durează mult mai puțin timp decât crearea unui nou proces complet. Studiile efectuate de către dezvoltatorii sistemului de operare Mach, a arătat că rata de creare a procesului, în comparație cu aceeași viteză pe aplicațiile UNIX compatibile care nu utilizează fluxuri, a crescut de 10 ori.
Fluxul poate fi finalizat mult mai rapid decât procesul.
comutare fir este mult mai rapid în cadrul aceluiași proces.
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.
Dacă o aplicație sau o funcție 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 sau fluxurile de server de fișiere trebuie să partajeze datele din dosar, și, prin urmare, să-și coordoneze activitățile lor, o mai bună utilizare a firelor și a regiunii 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.
Spre deosebire de procesele fluxuri: procese - fluxurile de o resursă container - sunt obiecte, la rândul lor, care rulează pe CPU. Fiecare fir are propriul său contor de program, registre, stivă.
Multithreading - sistem de operare este abilitatea de a menține același proces de executare mai multe fire.