Ang isang balangkas sa Rust ay maaaring ipatupad sa Kernel upang mapabuti ang mga driver

Kalawang Linux Kernel

Si Josh Triplett, isang kumpanya na nakabase sa Intel at miyembro ng Crates.io development oversight committee, na nagpakita ng isang nagtatrabaho grupo ilang araw na ang nakakaraan sa kanyang talumpati sa Open Source Technology Summit na naglalayong dalhin ang Rust sa par ng C sa Linux kernel program.

Sa nagtatrabaho grupo, na nasa proseso ng paglikha, Ang mga developer ng kalawang, kasama ang mga inhinyero ng Intel, ay maghahanda ng mga pagtutukoy na maaaring i-highlight ang pagpapaandar na kailangang ipatupad ng Rust para sa programa sa loob ng kernel ng Linux. Ang pagprogram sa system ay madalas na nangangailangan ng mga manipulasyong mababang antas, tulad ng pagpapatupad ng mga pribilehiyong tagubilin ng processor at pagkuha ng detalyadong impormasyon tungkol sa katayuan ng processor.

Sa mga katulad na kakayahan na nabuo na para sa Rust, suportado ang suporta para sa hindi pinangalanang mga istraktura, mga unyon (unyon), pagsingit ng assembler (ang "asm!" macro), at ang format na numero ng lumulutang point ng BFLOAT16.

Naniniwala si Josh na ang hinaharap ng system programming ay nakasalalay sa Rust, at ang wikang C sa mga modernong katotohanan ay inaangkin na lugar ni Assembler noong nakaraan. Ang kalawang ay hindi lamang nakakapagpahinga sa mga tagabuo ng mga tukoy na problema sa wika ng C na lumitaw dahil sa mababang antas ng trabaho na may memorya, ngunit nagbibigay din ng kakayahang magamit sa pagpapaunlad ng mga modernong paraday sa programa.

Sa panahon ng talakayan ng talumpati ni Josh, ang ideya ay ipinahayag sa:

idagdag ang kakayahang paunlarin ang mga driver ng Rust-wika sa kernel ng Linux, na magpapahintulot sa kaunting pagsisikap na lumikha ng mas mahusay at mas ligtas na mga driver na nagpapagaan ng mga problema tulad ng pag-access sa lugar ng memorya pagkatapos na ito ay palayain, sumangguni sa mga null pointer, at paglabas nang higit sa mga limitasyon ng buffer.

Greg Kroah-Hartman, responsable para sa pagpapanatili ng isang matatag na sangay ng kernel ng Linux, atx nagpahayag ng pagpayag na magdagdag ng isang framework ng Rust driver sa kernel kung mayroon itong anumang tunay na kalamangan sa C, halimbawa, magbibigay ito ng mga ligtas na bindings sa core API. Gayundin, isinasaalang-alang ni Greg ang balangkas na ito bilang isang pagpipilian na hindi aktibo bilang default, upang hindi maisama ang Rust sa bilang ng mga pangunahing pagtitiwala sa pagpupulong.

Ito ay naka-out na maraming mga koponan ay nagtatrabaho sa direksyon na ito. Halimbawa, ang mga developer ng Fish in a Barrel ay naghanda ng isang toolkit para sa pagsusulat ng mga naa-load na module para sa Linux kernel sa wikang Rust, gamit ang isang hanay ng mga abstract layer sa tuktok ng mga interface ng kernel at istraktura upang madagdagan ang seguridad.

Ang mga intermediate layer ay awtomatikong nabuo batay sa mga kernel header file na magagamit gamit ang bindgen utility. Ginagamit ang clang upang makabuo ng mga intermediate layer. Ang mga naka-assemble na module, bilang karagdagan sa mga layer, gamitin ang staticlib package.

Sa parehong oras, ang isa pang proyekto ay binuo, nakatuon sa pagbuo ng mga Controller para sa mga naka-embed na system at mga aparato ng Internet of Things, na gumagamit din ng bindgen upang makabuo ng mga collar batay sa mga kernel header file.

Pinapayagan ka ng balangkas na mapabuti ang seguridad ng driver nang hindi gumagawa ng mga pagbabago sa kernel; Sa halip na lumikha ng mga karagdagang antas ng paghihiwalay para sa mga driver sa kernel, iminungkahi na harangan ang mga problema sa pag-ipon ng yugto gamit ang isang mas ligtas na Rust na wika.

Ang mga tagagawa ng kagamitan ay dapat na makabuo ng pamamaraang ito sa pagmamadali nang walang tamang pag-audit.

Hindi pa lahat ng nakaplanong pagpapaandar ay naipatupad na, ngunit ang balangkas ay medyo angkop na para sa trabaho at ginagamit upang magsulat ng isang gumaganang driver para sa ibinigay na LAN9512 USB Ethernet controller sa Raspberry Pi 3 board.

Ang umiiral na driver ng smsc95xx ay isinulat bilang isang pagpapatupad ng sanggunian kapag sinusulat ang Rust driver sa wikang C.

Nabanggit na ang laki ng module at overhead ng bahagi ng runtime ay hindi makabuluhan kapag bumubuo ng isang driver para sa Rust, na nagbibigay-daan sa iyo upang magamit ang balangkas para sa mga aparatong limitado sa mapagkukunan.

Fuente: https://hub.packtpub.com


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   L1ch dijo

    Hindi ako makahanap ng impormasyon para sa isang driver ng smsc95xx sa pinagmulan o may ipapatupad sa Rust sa Linux.