Bsd körútja, 4. rész
A "Dragonfly" szokatlan név a BSD család operációs rendszerének. És nem véletlen: a rendszer valóban furcsa, kétértelmű és tele van ellentmondásos technikai megoldásokkal. Dragonfly hibrid kernel, hogy közelebb hozza a mikrokernel operációs rendszer, akkor az újszerű az idő, a megközelítés dolgozni SMP-rendszerek felépítését tartalmazza a szokatlan design, de nagyon hatékony fájl Hammer rendszer képes ZFS / btrfs és képes dolgozni klaszter.
Több nukleáris fellendülés
Természetesen ez a megközelítés nem hatékony, és a FreeBSD 5-ben a tervek szerint indul fokozatosan megszabadulni, hogy a mankó segítségével pont zár (mutex), amely telepítve lesz egyáltalán bármilyen jelentős adatszerkezeteket. Így a rendszermag kódját több processzor is végrehajthatja, és csak az adatok és alrendszerek ugyanazon struktúráihoz való egyidejű hozzáférésre volt szükség.
De ez a megközelítésnek számos hiányossága is volt. Először is, a rendszermag egy sor kóddal vált számtalan zárakkal, amelyek közül sok függött egymástól. Másodszor, a kód nem hatékony: zár univerzálisan alkalmazható és tekintet nélkül arra, hogy bizonyos típusú adatokat különböző időpontokban lehet, hogy nem lesz probléma egyidejű hozzáférést relevánsnak csak egy processzor magot. Például a folyamatok mind ugyanazon a magon működhetnek (és ezután nincs szükség zárolásra), vagy különbözőek lesznek (zárolás szükséges).
Az egyik legaktívabb fejlesztő a FreeBSD kernel és a Linux Matt Dillon (Matthew Dillon) azt javasolta, hogy megoldja ezeket és más potenciális problémákat, feladom blokkoló és helyettük három kulcsfontosságú technológiák: kommunikációs mechanizmust, a mag adatkötéseket feldolgozók / magok és a párhuzamosság kernel alrendszerek között a feldolgozók és a magok.
Ezeknek az ötleteknek a megvalósításához minden egyes processzorhoz külön folyamat / menet ütemezőt futtattak. Ahhoz, hogy a kernel adatokat használt üzenetek olyan mechanizmust, amely elkerülné reteszeléseket biztosítják a megfelelő sorrendben való hozzáférés műveletek és róna nem jelent hátrányt, ha több folyam verseng hozzáférést ugyanazokat az adatokat kell végrehajtani egy processzoron. A rendszermag kódját, ha lehetséges, tervezték párhuzamosan a különböző processzorok / magok között.
Ennek eredményeképpen egyetlen nyúl egy egész szakasza megölhető volt:
- A rendszermagon belüli folyamatadatokhoz való hozzáférésre nincs szükség, mivel ezeket a struktúrákat minden processzoron függetlenül szervizelték.
- A rendszermaghoz való hozzáféréshez szükséges zárak nem a legtöbb esetben szükségesek, helyettük egy üzenetkezelő mechanizmust használnak (a stream egyszerűen elküldi a kérést, és feldolgozásra kerül sor).
- Ez megvalósítható egy sokkal magasabb teljesítményt párhuzamosítás kernel alrendszerek: sokkal hatékonyabb futtatni egy TCP / IP stack minden processzor mag, és biztosítsák harmonikus munka segítségével üzeneteket, mint elhelyezni az egész hálózati verem zár, vagy blokkolja a teljes hálózati verem teljesen.