Velké procento funkcí Win32 API je řešeno tak, že zavoláte knihovnu kernel32.dll, která poté provede syscall. Není mi jasné, proč by to mělo být pomalejší při zvýšení počtu procesorů. Pro SMP škálování Windows NT je naopak zásadní fakt, že je kernel preemptivní a reentrantní (na rozdíl od Linuxu).
V NT4 došlo k přesunu GDI a window manageru do kernelu. V NT4 bylo oboje součástí CSRSS.EXE, tedy v user mode. Jenže takový design v principu vede k velkému množství syscallů. Pokud přesunete GDI do kernelu, tak provedete jeden syscall, a dál už vše běží na straně kernelu. Poměrně pěkně to popisuje linkovaný článek. A když jsme u toho, tak ke změně API u celé akce NEDOŠLO. Aplikace totiž linkují proti user mode knihovnám. Jestli je ta či ona věc interně implementovaná v user mode nebo kernel mode, to aplikace nepozná.
http://technet.microsoft.com/…c750820.aspx
Názor k článku
Programujeme OS: jak na GDT a IDT
Lael Ophir (neregistrovaný)
---.39-65-87.adsl-static.isp.belgacom.be
18. 8. 2009 20:19

