Оквир за писање сигурних драјвера за Линук кернел у Русту

Џош Триплет, који ради у Интелу и члан је комитета који надгледа развој Цратес.ио, говорећи на Самиту о технологији отвореног кода уведен радна група која је имала за циљ да доведе Руст језик у паритет са језиком Ц у области системског програмирања.

У радној групи која је у процесу стварања, Руст програмери, заједно са инжењерима из Интела, припремиће спецификације које дефинишу функционалност коју је потребно имплементирати у Руст за системско програмирање. Системско програмирање често захтева манипулацију ниског нивоа, као што је извршавање привилегованих инструкција процесора и добијање детаљних информација о стању процесора. Од сличних карактеристика које су већ развијене за Руст, примећује се подршка за неименоване структуре, синдикате, уметке асемблерског језика (макро „асм!“) и формат бројева са помичним зарезом БФЛОАТ16.

Џош верује да будућност системског програмирања припада Русту, а језик Ц у модерној стварности заузима место које је претходних година заузимао Ассембли. Руст
не само да ослобађа програмере од проблема својствених језику Ц који настају услед рада на ниском нивоу са меморијом, већ такође пружа могућност да је користе у развоју модерних програмских парадигми.

У току дискусије представе
Јосх је дошао на идеју да дода могућност развоја драјвера у Линук кернелу на Руст језику, што би омогућило стварање сигурнијих и бољих драјвера уз минималан напор, без проблема као што је приступ меморији након ослобађања, нулл дереференцирања показивача и прекорачења бафера.

Грег Кроах-Хартман, који је одговоран за одржавање стабилне гране Линук кернела, изразио је спремност да кернелу дода оквир за развој драјвера на Руст језику ако има стварне предности у односу на Ц, на пример, обезбедиће безбедан везивања преко Кернел АПИ-ја. Поред тога, Грег сматра овај оквир само као опцију, који није подразумевано активан, како не би укључио Руст као зависност за изградњу од кернела.

Испоставило се да неколико тимова већ ради у овом правцу. На пример, програмери из компаније „Риба у бачви“ припремљен комплет алата за писање учитавих модула за Линук кернел у Руст језику, користећи скуп апстрактних слојева преко интерфејса и структура језгра ради повећања безбедности. Слојеви се аутоматски генеришу на основу постојећих датотека заглавља кернела помоћу услужног програма биндген. Цланг се користи за изградњу слојева. Поред међуслојева, склопљени модули користе пакет статицлиб.

Паралелно се развија Други пројекат се фокусирао на развој драјвера за уграђене системе и ИоТ уређаје, који такође користи биндген за генерисање слојева на основу датотека заглавља кернела. Оквир вам омогућава да побољшате безбедност драјвера без прављења промена у кернелу – уместо стварања додатних нивоа изолације за драјвере у кернелу, предлаже се блокирање проблема у фази компилације, користећи безбеднији Руст језик. Претпоставља се да би такав приступ могао бити тражен од стране произвођача опреме који у журби развијају власничке драјвере без спровођења одговарајуће ревизије.

Још увек нису имплементиране све предвиђене функционалности, али оквир је већ прилично погодан за рад и коришћен је за писање радног драјвера за ЛАН9512 УСБ Етхернет контролер који се налази на плочи Распберри Пи 3. Постојећи драјвер смсц95кк, који је написао у Ц језик. Примећено је да су величина модула и додатни трошкови из рунтиме компоненти при развоју драјвера у Русту безначајни, што омогућава да се оквир користи за уређаје са ограниченим ресурсима.

Извор: опеннет.ру

Додај коментар