Turul bsd, partea 4

Dragonfly este un nume neobișnuit pentru sistemul de operare al familiei BSD. Și nu este un accident: sistemul este într-adevăr ciudat, ambiguu și plin de soluții tehnice contradictorii. În nucleu DragonFly hibrid pe care-l aduce mai aproape de sisteme de operare Microkernel, folosește inovatoare pentru timpul său, abordarea de a lucra la SMP-sisteme, structura sa a inclus designul neobișnuit, dar sistem foarte eficient de fișiere CIOCAN are capacitatea de a ZFS / Btrfs și capabil să lucreze la cluster.







Boom multi-nuclear

Desigur, această abordare este ineficientă, iar în FreeBSD 5 a fost programată să înceapă treptat, pentru a scapa de carja pentru a ajuta la încuietori de puncte (mutex), care vor fi instalate la toate orice structuri de date semnificative. Deci, codul kernelului ar putea fi executat de mai mulți operatori și a fost necesar să se aștepte numai în cazul accesului simultan la aceleași structuri de date și subsisteme.

Dar această abordare avea, de asemenea, mai multe deficiențe. Mai întâi, kernel-ul sa transformat într-o grămadă de coduri cu multe blocări, multe dintre ele depinzându-se unul de celălalt. În al doilea rând, codul este ineficient: blocare a aplicat în mod universal și fără a ține cont de faptul că anumite tipuri de date la momente diferite pot sau nu pot avea o problemă cu acces simultan ca fiind relevante pentru un singur nucleu procesor. De exemplu, procesele pot funcționa pe același nucleu (și apoi nu sunt necesare blocări) sau pot fi împrăștiate în diferite (blocare necesară).







Unul dintre cei mai activi dezvoltatori de kernel FreeBSD și Linux Matt Dillon (Matei Dillon) a propus pentru a rezolva aceste și alte probleme potențiale, renunțarea la blocarea și înlocuirea acestora cu trei tehnologii-cheie: mecanism de comunicare, datele de bază de legare la procesoare / nuclee și subsisteme nucleu paralelism între procesoare și nuclee.

Pentru a implementa aceste idei, a fost planificat să se ruleze un proces separat / programator de fire pentru fiecare procesor. Pentru a accesa mesajele de date de kernel să fie utilizat un mecanism care ar evita Interblocările asigură succesiunea corectă a operațiunilor de acces și ar impune nici o deasupra capului atunci când mai multe fluxuri concurente pentru a avea acces la aceleași date sunt executate pe un singur procesor. Codul kernel-ului, dacă este posibil, a fost planificat să fie paralealizat pe diferite procesoare / nuclee.

Ca urmare, a fost posibil să omori un pluton întreg de iepuri cu o singură lovitură:

  • Nu au fost necesare blocări pentru accesarea datelor de proces în interiorul kernelului, deoarece aceste structuri au fost deservite independent pentru fiecare procesor.
  • În majoritatea cazurilor nu sunt necesare blocări pentru accesul la datele kernelului, în loc de acestea ar fi folosit un mecanism de mesagerie (fluxul trimite pur și simplu o cerere și este în așteptare pentru prelucrare).
  • Acesta a obținut o performanță mult mai mare, prin subsisteme de nucleu paralelizarea: mult mai eficient pentru a rula o stiva TCP / IP pe fiecare nucleu de procesor, și pentru a asigura activitatea lor armonioasă, cu ajutorul mesajelor decât să plaseze întreaga blocare stiva de rețea sau de a bloca în întregime întreaga stivă de rețea.

Continuarea articolului este disponibilă numai pentru abonați

Oracle a lansat un patch de urgență pentru vulnerabilități critice în produsele PeopleSoft

Specialiștii Cisco și Inchip vor vorbi despre protecția mașinilor inteligente

O eroare în cheia Amazon permite atacatorilor să se infiltreze în mod critic în casele utilizatorilor

"Kaspersky Lab" număra peste 120 de programe rău intenționate pe computer, din care "scurgeri" de date NSA







Trimiteți-le prietenilor: