SMPng (ang. SMP next generation) – jeden z podprojektów systemu FreeBSD, mający na celu umożliwienie działania tego systemu na komputerach wieloprocesorowych.

Historia

edytuj

SMP było obecne w systemie FreeBSD już od wersji 3[1]. Jednak wsparcie dla maszyn wieloprocesorowych w tamtym okresie było bardzo ograniczone. Programy użytkownika mogły działać na różnych procesorach, natomiast jądro, pozbawione wielobieżności mogło być wykonywane tylko na jednym procesorze. Problemem był także mechanizm blokowania wątków, oparty na jednej dużej blokadzie jądra. Prace nad wersją 5. systemu miały na celu umożliwić działanie jądra na więcej niż jednym procesorze oraz zwiększenie drobnoziarnistości blokad. Dzięki temu jądro wzbogaciło się w szereg mniejszych blokad, dotyczących tylko fragmentów jego kodu (np. pojedynczych podsystemów)[2]. Projekt nadal jest w fazie rozwoju, lecz w tej chwili nie ma przeciwwskazań do stosowania go na maszynach wieloprocesorowych. Podobny proces przechodzi jądro systemu Linux.

Szerszy opis

edytuj

W ramach SMPng prowadzone są modyfikacje wielu elementów jądra systemu FreeBSD. Prace muszą obejmować m.in.:

Oprócz zmian polegających na dbaniu o odpowiednią synchronizację jądra za pomocą blokad trzeba było także wprowadzić nowego planistę. W tym celu zapoczątkowano projekt ULE.

Zobacz też

edytuj

Przypisy

edytuj
  1. Projekt SMP w systemie FreeBSD
  2. Introduction to Multithreading and Multiprocessingin the FreeBSD SMPng Network Stack - prezentacja przygotowana na EuroBSDCon 2005 przez Roberta Watsona