Hlavní navigace

Bude příští kernel napsaný v Go?

ivoszz

Skupina výzkumníků z MIT, mezi nimiž je i známý Robert Tappan Morris, autor pravděpodobně prvního červa šířícího se přes Internet (1988) a první člověk, který byl za takovou činnost odsouzen, prezentovala tento týden výzkumnou zprávu zabývající se dopady využití jazyka vyšší úrovně s garbage collectorem při jeho použití pro naprogramování systémového jádra. Vedle jiných věcí zkoumali především dopad na výkonnost a proti kolika chybám by bylo nové jádro imunní.

Vytvořili experimentální monolitické jádro nazvané „Biscuit“ napsané v jazyce Go, které implementuje 58 systémových POSIX volání dostatečných k tomu, aby bylo nad ním možné spustit některé C aplikace bez potřeby modifikace kódu. Při implementaci jádra ve velké míře reimplementovali postupy použité v linuxovém jádře. Celé jádro má zhruba 28 tisíc řádků v Go a 500 řádků v Assembleru. Vedle toho výsledný celek dále obsahuje asi 50 tisíc řádků Go runtimu (modifikováno 3000 řádků Go a 1000 řádků Assembleru) a 30 tisíc řádků standardní knihovny. Zároveň v linuxovém jádře některé moduly zakázali nebo nahradili, aby linuxové jádro odpovídalo takto zjednodušenému systému Biscuit a nebylo znevýhodněno.

V první části testování výzkumníci provedli low level testy a zkoumali zpomalení dané použitým jazykem a chování alokace paměti. V druhé části testování spustili nad oběma jádry standardní aplikace (CMailBench, NGINX a Redis) a zkoumali chování pod zátěží. V prvním případě bylo Go pomalejší než C o 5 a 15 %. V případě aplikačních testů bylo zpomalení u všech testů menší než 10 %.

Tato práce do určité míry vyvrací zažité stereotypy o nezbytnosti použití low level jazyka (například C) pro tvorbu systémového jádra. Sami výzkumníci v závěru připouštějí, že v oblastech, kde je požadavek na bezpečnost, je použití vyššího jazyka velmi přínosné. Použití jazyka Go by zabránilo zneužití 40 z celkově 65 CVE linuxového jádra z roku 2017, pro které existuje patch. Samotné Go, na kterém Biscuit závisí, mělo v letech 2016–2018 celkem 14 CVE.

Můžete si stáhnout celou studii [PDF], k dispozici jsou i slidy z přednášky [PDF]. Zdrojový kód je dostupný na GitHubu.

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Našli jste v článku chybu?