د لینکس کرنل ته د زنګ پراختیا وسیلو اضافه کولو مسلې په اړه بحث کولو وړاندیز

نیک ډیزاینر (نیک ډیسولینرز)، څوک چې په ګوګل کې کار کوي ترڅو چمتو کړي ملاتړ د کلینګ کمپیلر په کارولو سره د لینکس کرنل جوړول او همدارنګه مرسته کول په زنګ کمپیلر کې بګونه حل کړئ ، وړاندیز شوی په یوه کنفرانس کې ونیسئ د لینکس پلمبر کنفرانس 2020 غونډه د دې لپاره چې په Rust کې د کرنل اجزاو رامینځته کولو امکان رامینځته کړي بحث وکړي. نیک LLVM ته وقف شوی مایکرو کنفرانس تنظیموي، او باور لري چې دا به ښه وي چې د کرنل کې د زنګ مالتړ احتمالي ادغام تخنیکي اړخونو په اړه بحث وکړئ (هغه دمخه د KBuild لپاره کاري پروټوټایپ چمتو کړی دی) او پوه شي چې ایا دا ډول ملاتړ باید په بشپړ ډول اضافه شي او د زنګ په کارولو کوم محدودیتونه باید ومنل شي.

راځئ چې یادونه وکړو چې د خلاصې سرچینې غونډې او ایمبیډ شوي لینکس کنفرانس کې په وروستي بحث کې ، لینس توروالډز دا رد نه کړه په ژبو لکه Rust کې د غیر اصلي کرنل فرعي سیسټمونو (د مثال په توګه چلوونکي) د پراختیا لپاره د پابندۍ رامینځته کول. په Rust کې د ډرایورانو رامینځته کولو وړتیا به موږ ته اجازه راکړي چې د لږترلږه هڅې سره خوندي او غوره ډرایورونه رامینځته کړو ، له ستونزو څخه پاک لکه د خلاصیدو وروسته حافظې ته لاسرسی ، د نول پوائنټر ډیریفرنسونه ، او بفر اوورون. د دې خصوصیت پلي کولو لپاره دمخه ډیری دریمې ډلې پروژې شتون لري:

  • د شرکت جوړونکي "په یوه بیرل کې کب" چمتو شوی په Rust ژبه کې د لینکس کرنل لپاره د بار وړ وړ ماډلونو لیکلو لپاره یوه وسیله کټ، د امنیت زیاتولو لپاره د انٹرفیسونو او کرنل جوړښتونو باندې د خلاصو پرتونو سیټ کاروي. پرتونه په اوتومات ډول د افادیت په کارولو سره د موجوده کرنل سرلیک فایلونو پراساس رامینځته کیږي bindgen. کلینګ د پرتونو جوړولو لپاره کارول کیږي. د انټر لیرونو سربیره ، راټول شوي ماډلونه د سټیکلیب کڅوړه کاروي.
  • د چین د هانګ کانګ پوهنتون څیړونکي پراختیا په Rust کې د ایمبیډ شوي سیسټمونو او د شیانو انټرنیټ وسیلو لپاره د ډرایورونو رامینځته کولو پروژه ، کوم چې د کرنل سرلیک فایلونو پراساس پرتونو رامینځته کولو لپاره بانډجن هم کاروي. چوکاټ تاسو ته اجازه درکوي د ډرایور امنیت ته وده ورکړي پرته لدې چې په کرنل کې بدلونونه رامینځته کړي - د دې پرځای چې په کرنل کې د ډرایورانو لپاره اضافي انزوا کچه رامینځته کړي ، دا وړاندیز کیږي چې د تالیف په مرحله کې ستونزې بندې کړي ، د ډیر خوندي زنګ ژبې په کارولو سره. داسې انګیرل کیږي چې دا ډول چلند ممکن د تجهیزاتو تولید کونکو لخوا غوښتنه وي چې د سمې پلټنې ترسره کولو پرته په ګړندي ډول د ملکیت چلونکي رامینځته کوي.
  • د چوکاټ پراختیا کونکي C2Rust زنګ ته د C کوډ خپرولو لپاره، ځغلول د لږترلږه لاسي ترمیمونو سره د کرنل ماډلونو بدلولو تجربې. یو له ستونزو څخه یادونه شوې چې د کوډ د کرنل په ډیری برخو کې کارول دي چې د GCC توسیعونه کاروي چې لاهم په C2Rust کې ندي ملاتړ شوي. د دې ستونزې د حل لپاره، C2Rust پالن لري چې د انلاین، کولډ، عرف، کارول شوي او برخې لپاره د GCC ځانګړتیاوو لپاره مالتړ اضافه کړي، په بیله بیا د انلاین راټولونکي وړتیاوې پراخې کړي او د جوړښتونو سره ستونزې حل کړي چې دواړه یوځای شوي او بسته شوي دي (د مثال په توګه، xregs_state) . د پام وړ ستونزې چې لاسي کار ته اړتیا لري په Rust macros کې د غیر معمولي C میکرو ژباړلو نشتوالی او د ډولونو بیا تعریف کولو اړتیا شامله ده، ځکه چې C2Rust د C ډولونه په libc بسته کې تعریفونو ته ژباړي، مګر دا کڅوړه د کرنل ماډلونو کې نشي کارول کیدی.

سرچینه: opennet.ru

Add a comment