Az elmúlt években Linus Torvaldsnak nem volt ideje túl sok eredeti új kódot írni a Linux kernelhez, manapság többnyire fejlesztőket irányított, áttekinthető levelezőlisták-bejegyzéseket közölt, és áttekintette a kernelfába való beolvadáshoz szükséges kódot a kapcsolódó feladatok mellett. A Linux 6.4-re azonban sikerült felírnia néhány új kódot.

A múlt héten Linus Torvalds egyesítette saját”x86-rep-insns”ágát a kernelhez a Linux 6.4 összevonási ablakhoz. Torvalds Linux 6.4-es kódjának középpontjában az x86-os memóriamásolási kód tisztítása áll. A Git-egyesítésben kifejtette:

“Ez megtisztítja az x86-os memória másolási kódjának nagy részét, különösen a felhasználói hozzáféréseknél. Régóta szorgalmaztam a mikroarchitektúra támogatását a jó memóriamásolás és-törlés érdekében, és ez sikerült látható abban, ahogy a kernel agresszíven használta a „rep movs” és a „rep stos” kifejezéseket, amikor csak lehetséges.

És ez a mikroarchitektúra támogatása az évek során egyre javult, egészen addig a pontig, hogy a modern CPU a legjobb megoldás memóriamásoláshoz amely függvényhívássá válna (ellentétben azzal, hogy egyszerűen csak egyedi „mov” utasításokká alakítható) most a karakterlánc utasítássorozat beillesztése helyett.

Ennek azonban csak akkor van értelme, ha ennek modern jelzői: az x86 FSRM és FSRS képességek (“Fast Short REP MOVS/STOS”).

Tehát ez megtisztítja a történeti kódunk nagy részét, megszabadítja a memcpy/memset esetekből a régi markerhasználatot (“REP_GOOD”és”ERMS”), és lecseréli azzal a modern valósággal. Vegye figyelembe, hogy a REP_GOOD és az EIKR-t végül továbbra is használják az ismert nagy esetek (pl. oldalmásolás és törlés).

Az ok, ami végül a felhasználói memória-hozzáférésekre vonatkozik, az az, hogy a normál kernelen belüli eseteket a fordító (__builtin_memcpy() és __builtin_memset()) végzi el, és eljutunk odáig, hogy tudjuk használni. Az utasítások átírása, hogy szöveges utasításokká legyenek, némi fordítói támogatást igényel.

Ezzel szemben a felhasználói hozzáférési funkciókat teljes egészében a kernelkód vezérli, így ezeket tetszőlegesen módosíthatjuk.”

A Linux 6.4 egyesítési ablaka addig nyitva marad, amíg jövő hétvégén, további funkciókódokkal pedig továbbra is megjelennek.

Categories: IT Info