ReactOS pokračuje v zavádění podpory SMP
Je to již více než dva roky, co jsem zde psal o zahájení prací na podpoře SMP, tedy více procesorových jader či vláken. U valné většiny operačních systémů, byť i velmi okrajových, jsou dva roky velmi dlouhá doba, během níž se mnoho stane, ne však v projektu ReactOS, který se už více než čtvrt století pokouší reimplementovat NT kernel a Windows API tak, aby pod ním bylo možné spouštět aplikace pro Windows bez jakékoliv úpravy.
ReactOS se totiž vyvíjí tak pomalu, že za ony dva roky vyšly pouze tři poměrně stručné newslettery, v nichž je shrnuto, co vše bylo přijmuto do kódu za novinky a co tak lze najít ve složce nightly builds - nová oficiální verze za tu dobu nevyšla ani jedna. A právě poslední newsletter ukazuje, že v oblasti SMP již bylo dosaženo alespoň nějakého pokroku.
V ReactOS je z neznámého důvodu zvykem, že vývoj často probíhá odděleně pro 32bitovou a 64bitovou verzi, ba že významově podobné celky mají na starosti různí vývojáři. SMP není výjimkou, je tedy na každé architektuře v trochu jiném stádiu vývoje. Ve verzi x86_64/amd64 Timo Kreuzer implementoval přepínání a uspávání procesorových jader (processor freezing and switching) a také zavedl úvodní podporu pro přerušení mezi procesory (inter-processor interrupt), byť omezenou pouze na některé typy volání procedur. Verze pro 32bitové x86 procesory zase od vývojáře Justina Millera dostala kód pro inicializaci více procesorů při bootu a pracovalo se i na integraci nového SMP HAL do systému.
Nejsou to však jediné novinky ve výčtu, i u ostatních je ale cítit zejména snaha dohnat pomalu odplouvající parník:
- Systém se poprvé podařilo přeložit kompilátorem GCC 13, je tak tedy již jen jednu velkou verzi pozadu.
- Došlo k částečné synchronizaci kódu sdíleného s projektem WINE. Zde dle vlastních slov projekt zaspal dlouhé roky vývoje a bez úplného srovnání DLL vycházejících z WINE bude jen těžko moct dojít ke zvýšení kompatibility jádra nad současnou úroveň NT 5.2 (Windows XP x64 / Server 2003).
Minimálně co se SMP týká, je prozatím vše označeno jako čistě experimentální, což lze minimálně v emulátoru QEMU jednoznačně potvrdit - ani 32bitová ani 64bitová verze do desktopu s více jádry ve většině případů a konfigurací úspěšně nenabootuje.