රස්ට් හි ලිනක්ස් කර්නලය සඳහා ආරක්ෂිත ධාවක ලිවීමේ රාමුව

Intel හි සේවය කරන සහ Crates.io සංවර්ධනය අධීක්‍ෂණය කරන කමිටුවේ සිටින Josh Triplett, විවෘත මූලාශ්‍ර තාක්ෂණ සමුළුවේදී කතා කරමින් හඳුන්වා දී ඇත පද්ධති ක්‍රමලේඛන ක්‍ෂේත්‍රයේ C භාෂාව සමඟ Rust භාෂාව සමානාත්මතාවයට ගෙන ඒම අරමුණු කරගත් ක්‍රියාකාරී කණ්ඩායමකි.

නිර්මාණය කිරීමේ ක්‍රියාවලියේ පවතින ක්‍රියාකාරී කණ්ඩායමක් තුළ, රස්ට් සංවර්ධකයින්, ඉන්ටෙල් හි ඉංජිනේරුවන් සමඟ එක්ව, පද්ධති ක්‍රමලේඛනය සඳහා රස්ට් හි ක්‍රියාත්මක කළ යුතු ක්‍රියාකාරීත්වය නිර්වචනය කරමින් පිරිවිතර සකස් කරනු ඇත. පද්ධති ක්‍රමලේඛනයට බොහෝ විට වරප්‍රසාදිත ප්‍රොසෙසර උපදෙස් ක්‍රියාත්මක කිරීම සහ ප්‍රොසෙසරයේ තත්ත්වය පිළිබඳ සවිස්තරාත්මක තොරතුරු ලබා ගැනීම වැනි පහත් මට්ටමේ හැසිරවීමක් අවශ්‍ය වේ. රස්ට් සඳහා දැනටමත් සංවර්ධනය කර ඇති සමාන විශේෂාංග අතරින්, නම් නොකළ ව්‍යුහයන්, වෘත්තීය සමිති, එකලස් කිරීමේ භාෂා ඇතුළු කිරීම් (“asm!” මැක්‍රෝ) සහ BFLOAT16 පාවෙන ලක්ෂ්‍ය අංක ආකෘතිය සඳහා සහාය සටහන් කර ඇත.

පද්ධති ක්‍රමලේඛනයේ අනාගතය රස්ට්ට අයත් බව ජොෂ් විශ්වාස කරන අතර නවීන යථාර්ථයන්හි C භාෂාව පසුගිය වසරවලදී එකලස් කිරීම විසින් අල්ලාගෙන සිටි ස්ථානයට හිමිකම් කියයි. මලකඩ
මතකය සමඟ පහත් මට්ටමේ වැඩ කිරීම හේතුවෙන් පැන නගින C භාෂාවට ආවේණික ගැටළු වලින් සංවර්ධකයින් නිදහස් කරනවා පමණක් නොව, නවීන ක්‍රමලේඛන ආදර්ශයන් සංවර්ධනය කිරීමේදී එය භාවිතා කිරීමටද අවස්ථාව ලබා දේ.

තුළ සාකච්ඡුා කාර්ය සාධනය
Josh විසින් Linux kernel හි Drivers සංවර්ධනය කිරීමේ හැකියාව Rust භාෂාවෙන් එකතු කිරීමේ අදහස ඉදිරිපත් කළ අතර, එමඟින් නිදහස් කිරීමෙන් පසු මතක ප්‍රවේශය, null වැනි ගැටළු වලින් තොරව අවම උත්සාහයකින් ආරක්ෂිත සහ වඩා හොඳ රියදුරන් නිර්මාණය කිරීමට හැකි වේ. pointer dereferences සහ buffer overruns.

ලිනක්ස් කර්නලයේ ස්ථායී ශාඛාව පවත්වාගෙන යාමේ වගකීම දරන Greg Kroah-Hartman, C ට වඩා සැබෑ වාසි තිබේ නම්, රස්ට් භාෂාවෙන් රියදුරන් සංවර්ධනය කිරීමේ රාමුවක් කර්නලයට එක් කිරීමට ඔහුගේ සූදානම ප්‍රකාශ කළේය, උදාහරණයක් ලෙස, එය ආරක්ෂිතව සපයනු ඇත. කර්නල් API හරහා බැඳීම්. මීට අමතරව, ග්‍රෙග් මෙම රාමුව පමණක් විකල්පයක් ලෙස සලකයි, පෙරනිමියෙන් සක්‍රිය නොවේ, එවිට කර්නලය මත ගොඩනැගීමේ පරායත්තතාවයක් ලෙස රස්ට් ඇතුළත් නොකිරීමට.

කණ්ඩායම් කිහිපයක් දැනටමත් මෙම දිශාවට වැඩ කරමින් සිටින බව පෙනී ගියේය. උදාහරණයක් ලෙස, "බැරලයේ මාළු" සමාගමේ සංවර්ධකයින් සකස් කර ඇත ආරක්ෂාව වැඩි කිරීම සඳහා අතුරුමුහුණත් සහ කර්නල් ව්‍යුහය මත වියුක්ත ස්ථර කට්ටලයක් භාවිතා කරමින් රස්ට් භාෂාවෙන් Linux කර්නලය සඳහා පූරණය කළ හැකි මොඩියුල ලිවීම සඳහා මෙවලම් කට්ටලයක්. උපයෝගීතාව භාවිතයෙන් පවතින කර්නල් ශීර්ෂ ගොනු මත පදනම්ව ස්ථර ස්වයංක්‍රීයව ජනනය වේ bindgen. ස්ථර තැනීම සඳහා ක්ලැන්ග් භාවිතා කරයි. අන්තර් ස්ථර වලට අමතරව, එකලස් කරන ලද මොඩියුලයන් staticlib පැකේජය භාවිතා කරයි.

සමාන්තර වර්ධනය වේ කාවැද්දූ පද්ධති සහ IoT උපාංග සඳහා ධාවක සංවර්ධනය කිරීම කෙරෙහි අවධානය යොමු කරන ලද තවත් ව්‍යාපෘතියක්, කර්නල් ශීර්ෂ ගොනු මත පදනම්ව ස්ථර ජනනය කිරීමට bindgen භාවිතා කරයි. කර්නලයේ වෙනස්කම් සිදු නොකර රියදුරු ආරක්ෂාව වැඩි දියුණු කිරීමට රාමුව ඔබට ඉඩ සලසයි - කර්නලයේ ධාවක සඳහා අමතර හුදකලා මට්ටම් නිර්මාණය කිරීම වෙනුවට, වඩාත් ආරක්ෂිත රස්ට් භාෂාව භාවිතා කරමින් සම්පාදනය කිරීමේ අදියරේදී ගැටළු අවහිර කිරීමට යෝජනා කෙරේ. නිසි විගණනයක් සිදු නොකර කඩිමුඩියේ හිමිකාර රියදුරන් සංවර්ධනය කරන උපකරණ නිෂ්පාදකයින් විසින් එවැනි ප්‍රවේශයක් ඉල්ලුමේ තිබිය හැකි යැයි උපකල්පනය කෙරේ.

අපේක්ෂිත සියලුම ක්‍රියාකාරීත්වය තවමත් ක්‍රියාත්මක කර නැත, නමුත් රාමුව දැනටමත් වැඩ සඳහා බෙහෙවින් සුදුසු වන අතර Raspberry Pi 9512 පුවරුවේ සපයන ලද LAN3 USB ඊතර්නෙට් පාලකය සඳහා ක්‍රියාකාරී ධාවකයක් ලිවීමට භාවිතා කර ඇත. පවතින smsc95xx ධාවකය, ලියා ඇත්තේ සී භාෂාව. රස්ට් හි ධාවකයක් සංවර්ධනය කිරීමේදී ධාවන කාල සංරචක වලින් මොඩියුලයේ ප්‍රමාණය සහ උඩිස් ප්‍රමාණය නොවැදගත් බව සටහන් වේ, එමඟින් සීමිත සම්පත් සහිත උපාංග සඳහා රාමුව භාවිතා කිරීමට ඉඩ සලසයි.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න