Fframwaith ar gyfer ysgrifennu gyrwyr diogel ar gyfer y cnewyllyn Linux yn Rust

Josh Triplett, sy'n gweithio yn Intel ac sydd ar y pwyllgor sy'n goruchwylio datblygiad Crates.io, yn siarad yn yr Uwchgynhadledd Technoleg Ffynhonnell Agored cyflwyno gweithgor gyda'r nod o ddod â'r iaith Rust i gydradd â'r iaith C ym maes rhaglennu systemau.

Mewn gweithgor sydd yn y broses o gael ei greu, bydd datblygwyr Rust, ynghyd â pheirianwyr o Intel, yn paratoi manylebau sy'n diffinio'r swyddogaethau y mae angen eu gweithredu yn Rust ar gyfer rhaglennu systemau. Mae rhaglennu systemau yn aml yn gofyn am driniaeth lefel isel, megis gweithredu cyfarwyddiadau prosesydd breintiedig a chael gwybodaeth fanwl am gyflwr y prosesydd. O'r nodweddion tebyg sydd eisoes yn cael eu datblygu ar gyfer Rust, nodir cefnogaeth i strwythurau dienw, undebau, mewnosodiadau iaith y cynulliad (y macro “asm!”) a fformat rhif pwynt arnawf BFLOAT16.

Mae Josh yn credu bod dyfodol rhaglennu systemau yn perthyn i Rust, ac mae'r iaith C mewn realiti modern yn hawlio'r lle a feddiannwyd gan Assembly yn y blynyddoedd diwethaf. Rhwd
nid yn unig yn rhyddhau datblygwyr rhag y problemau cynhenid ​​​​yn yr iaith C sy'n codi oherwydd gwaith lefel isel gyda'r cof, ond hefyd yn rhoi cyfle i'w ddefnyddio wrth ddatblygu patrymau rhaglennu modern.

Yn ystod trafodaethau perfformiadau
Lluniodd Josh y syniad o ychwanegu'r gallu i ddatblygu gyrwyr yn y cnewyllyn Linux yn yr iaith Rust, a fyddai'n ei gwneud hi'n bosibl creu gyrwyr mwy diogel a gwell heb fawr o ymdrech, yn rhydd o broblemau megis mynediad cof ar ôl rhyddhau, null cyfeiriadau pwyntydd a gor-redeg byffer.

Mynegodd Greg Kroah-Hartman, sy'n gyfrifol am gynnal cangen sefydlog y cnewyllyn Linux, ei barodrwydd i ychwanegu fframwaith ar gyfer datblygu gyrwyr yn yr iaith Rust i'r cnewyllyn os oes ganddo fanteision gwirioneddol dros C, er enghraifft, bydd yn darparu diogel rhwymiadau dros Kernel API. Yn ogystal, mae Greg yn ystyried y fframwaith hwn fel opsiwn yn unig, nad yw'n weithredol yn ddiofyn, er mwyn peidio â chynnwys Rust fel dibyniaeth adeiladu ar y cnewyllyn.

Mae'n troi allan bod nifer o dimau eisoes yn gweithio i'r cyfeiriad hwn. Er enghraifft, datblygwyr o'r cwmni "Fish in a Barrel" wedi'i baratoi pecyn cymorth ar gyfer ysgrifennu modiwlau llwythadwy ar gyfer y cnewyllyn Linux yn yr iaith Rust, gan ddefnyddio set o haenau haniaethol dros y rhyngwynebau a strwythurau cnewyllyn i gynyddu diogelwch. Mae haenau'n cael eu cynhyrchu'n awtomatig yn seiliedig ar y ffeiliau pennawd cnewyllyn presennol gan ddefnyddio'r cyfleustodau rhwymgen. Defnyddir clang i adeiladu haenau. Yn ogystal â rhynghaenwyr, mae'r modiwlau sydd wedi'u cydosod yn defnyddio'r pecyn staticlib.

Cyfochrog yn datblygu Canolbwyntiodd prosiect arall ar ddatblygu gyrwyr ar gyfer systemau wedi'u mewnosod a dyfeisiau IoT, sydd hefyd yn defnyddio bindgen i gynhyrchu haenau yn seiliedig ar ffeiliau pennawd cnewyllyn. Mae'r fframwaith yn caniatáu ichi wella diogelwch gyrwyr heb wneud newidiadau i'r cnewyllyn - yn lle creu lefelau ynysu ychwanegol ar gyfer gyrwyr yn y cnewyllyn, cynigir atal problemau yn y cam llunio, gan ddefnyddio'r iaith Rust fwy diogel. Tybir y gallai fod galw am ddull o'r fath gan weithgynhyrchwyr offer sy'n datblygu gyrwyr perchnogol ar frys heb gynnal archwiliad cywir.

Nid yw'r holl swyddogaethau a fwriadwyd wedi'u gweithredu eto, ond mae'r fframwaith eisoes yn eithaf addas ar gyfer gwaith ac fe'i defnyddiwyd i ysgrifennu gyrrwr gweithiol ar gyfer y rheolydd Ethernet USB LAN9512 a gyflenwir yn y bwrdd Raspberry Pi 3. Mae'r gyrrwr smsc95xx presennol, a ysgrifennwyd gan yn C iaith. Nodir bod maint y modiwl a'r gorbenion o gydrannau amser rhedeg wrth ddatblygu gyrrwr yn Rust yn ddibwys, sy'n caniatáu i'r fframwaith gael ei ddefnyddio ar gyfer dyfeisiau ag adnoddau cyfyngedig.

Ffynhonnell: opennet.ru

Ychwanegu sylw