Линукс цөмийн зэвсгийн дэмжлэг нь Торвалдсаас шүүмжлэлтэй тулгардаг

Линус Торвалдс Линуксийн цөмд Rust хэл дээр драйвер үүсгэх боломжийг хэрэгжүүлсэн засваруудыг хянаж үзээд зарим шүүмжлэлийг хэлсэн.

Хамгийн их гомдол нь алдааны үед, жишээлбэл, санах ой багатай үед, динамик санах ойн хуваарилалтын үйл ажиллагаа, түүний дотор цөм дотор бүтэлгүйтсэн үед сандрах () боломжоос үүдэлтэй байв. Торвалдс цөм дэх ийм хандлагыг үндсээр нь хүлээн зөвшөөрөх боломжгүй бөгөөд хэрэв энэ цэгийг ойлгохгүй бол тэрээр ийм аргыг ашиглахыг оролдсон аливаа кодыг бүрэн нүцгэн болгож чадна гэж мэдэгджээ. Нөгөөтэйгүүр, нөхөөсийг хөгжүүлэгч энэ асуудалтай санал нийлж, үүнийг шийдвэрлэх боломжтой гэж үзэж байна.

Өөр нэг асуудал бол Линукс цөм зэрэг орчинд хүлээн зөвшөөрөгдөхгүй хөвөгч цэг эсвэл 128 битийн төрлийг ашиглах оролдлого байсан. Энэ нь илүү ноцтой асуудал болж хувирсан, учир нь одоогоор үндсэн Rust номын сан нь хуваагдашгүй бөгөөд нэг том бөмбөрцгийг төлөөлдөг - нэг буюу өөр асуудалтай функцийг ашиглахаас сэргийлж, зөвхөн зарим функцийг хүсэх арга байхгүй. Асуудлыг шийдвэрлэхийн тулд зэв хөрвүүлэгч болон номын санд өөрчлөлт оруулах шаардлагатай байж болох ч одоогоор баг хэлний сангуудыг модульчлах аргачлалыг хэрэгжүүлэх стратеги хараахан гараагүй байна.

Нэмж дурдахад, Торвалдс өгсөн жолоочийн жишээ нь ашиггүй гэдгийг тэмдэглэж, бодит асуудлын аль нэгийг шийддэг зарим драйверийг жишээ болгон ашиглахыг бидэнд зөвлөв.

Шинэчлэлт: Google нь Rust-ийн дэмжлэгийг Линуксийн цөмд оруулах санаачилгад оролцож байгаагаа зарлаж, санах ойн алдаанаас үүдэлтэй асуудлуудтай тэмцэхийн тулд Rust-ийг нэвтрүүлэх техникийн шалтгааныг өгсөн. Google Rust нь Линуксийн цөмийн бүрэлдэхүүн хэсгүүдийг хөгжүүлэх хэл болгон C хэлэнд нэгдэхэд бэлэн гэж үзэж байна. Уг нийтлэлд Android платформ дээр ашиглах хүрээнд цөмийн драйверуудыг хөгжүүлэхэд Rust хэлийг ашиглах жишээг өгсөн болно (Rust нь Android хөгжүүлэлтийн албан ёсоор дэмжигдсэн хэл гэж хүлээн зөвшөөрөгдсөн).

Google нь Binder процесс хоорондын харилцааны механизмд зориулж Rust хэл дээр бичигдсэн драйверын анхны загварыг бэлтгэсэн гэж тэмдэглэсэн бөгөөд энэ нь C болон Rust дээрх Binder хэрэгжилтийн гүйцэтгэл, аюулгүй байдлыг нарийвчлан харьцуулах боломжийг олгоно. Одоогийн байдлаар уг ажил бүрэн дуусаагүй байгаа ч Биндэр ажиллахад шаардлагатай цөмийн функцүүдийн бараг бүх үндсэн хийсвэрлэлүүдийн хувьд Rust код дээр эдгээр хийсвэрлэлийг ашиглах давхаргууд бэлтгэгдсэн болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх