กรอบงานใน Rust สามารถนำไปใช้ใน Kernel เพื่อปรับปรุงไดรเวอร์

สนิมเคอร์เนลลินุกซ์

Josh Triplett บริษัท ที่ใช้ Intel และสมาชิกของคณะกรรมการกำกับดูแลการพัฒนา Crates.io ได้นำเสนอคณะทำงานเมื่อไม่กี่วันที่ผ่านมา ในสุนทรพจน์ของเขาในงาน Open Source Technology Summit ซึ่งมีจุดมุ่งหมายเพื่อให้ Rust เทียบเท่ากับ C ในการเขียนโปรแกรมเคอร์เนลของ Linux

ในคณะทำงานซึ่งอยู่ระหว่างการจัดทำ นักพัฒนา Rust ร่วมกับวิศวกรของ Intel จะเตรียมข้อมูลจำเพาะ ที่สามารถเน้นฟังก์ชันการทำงานที่ Rust จำเป็นต้องใช้สำหรับการเขียนโปรแกรมภายในเคอร์เนลลินุกซ์ การเขียนโปรแกรมระบบมักต้องการการปรับแต่งระดับต่ำเช่นการดำเนินการตามคำสั่งของโปรเซสเซอร์ที่มีสิทธิพิเศษและการรับข้อมูลโดยละเอียดเกี่ยวกับสถานะของโปรเซสเซอร์

จากความสามารถที่คล้ายคลึงกันได้รับการพัฒนาสำหรับ Rust แล้ว รองรับโครงสร้างที่ไม่มีชื่อ, ยูเนี่ยน (ยูเนี่ยน), แอสเซมเบลอร์แทรก (มาโคร "asm!") และรูปแบบตัวเลขจุดลอยตัว BFLOAT16

Josh เชื่อว่าอนาคตของการเขียนโปรแกรมระบบอยู่กับ Rust และภาษา C ในความเป็นจริงสมัยใหม่อ้างว่าเป็นสถานที่ของ Assembler ในอดีต Rust ไม่เพียง แต่บรรเทาปัญหาของภาษาซีที่เกิดขึ้นเนื่องจากการทำงานในระดับต่ำกับหน่วยความจำเท่านั้น แต่ยังช่วยให้สามารถประยุกต์ใช้ในการพัฒนากระบวนทัศน์การเขียนโปรแกรมสมัยใหม่ได้อีกด้วย

ในระหว่างการอภิปรายสุนทรพจน์ของ Josh มีการแสดงความคิดต่อ:

เพิ่มความสามารถในการพัฒนาไดรเวอร์ภาษา Rust ให้กับเคอร์เนล Linux ซึ่งจะช่วยให้สามารถสร้างไดรเวอร์ที่ดีขึ้นและปลอดภัยขึ้นได้โดยใช้ความพยายามเพียงเล็กน้อยเพื่อบรรเทาปัญหาต่างๆเช่นการเข้าถึงพื้นที่หน่วยความจำหลังจากปล่อยให้เป็นอิสระการอ้างถึงตัวชี้ค่าว่างและการออกให้มากขึ้นเกินขอบเขต บัฟเฟอร์

เกร็กโครอาห์ - ฮาร์ทแมน รับผิดชอบในการดูแลสาขาที่เสถียรของเคอร์เนลลินุกซ์และx แสดงความเต็มใจที่จะเพิ่มกรอบไดรเวอร์ Rust ให้กับเคอร์เนลหากมีข้อได้เปรียบที่แท้จริงเหนือ C, ตัวอย่างเช่นจะให้การเชื่อมโยงที่ปลอดภัยบน API หลักนอกจากนี้ Greg ถือว่าเฟรมเวิร์กนี้เป็นเพียงตัวเลือกที่ไม่ได้ใช้งานตามค่าเริ่มต้นเท่านั้นโดยไม่รวม Rust ในจำนวนของการอ้างอิงการประกอบหลัก

ปรากฎว่าหลายทีมกำลังดำเนินการในทิศทางนี้อยู่แล้ว ตัวอย่างเช่นผู้พัฒนา Fish in a Barrel ได้เตรียมชุดเครื่องมือสำหรับการเขียนโมดูลที่โหลดได้สำหรับเคอร์เนล Linux ในภาษา Rust โดยใช้ชุดของเลเยอร์นามธรรมที่ด้านบนของอินเทอร์เฟซและโครงสร้างเคอร์เนลเพื่อเพิ่มความปลอดภัย

เลเยอร์ระดับกลางถูกสร้างขึ้นโดยอัตโนมัติตามไฟล์ส่วนหัวของเคอร์เนลที่พร้อมใช้งานโดยใช้ยูทิลิตี้ bindgen เสียงดังใช้เพื่อสร้างชั้นกลาง โมดูลที่ประกอบนอกเหนือจากเลเยอร์แล้วให้ใช้แพ็คเกจ staticlib

ในขณะเดียวกันก็มีการพัฒนาอีกโครงการหนึ่งโดยมุ่งเน้นไปที่การพัฒนาคอนโทรลเลอร์สำหรับระบบสมองกลฝังตัว และอุปกรณ์ Internet of Things ซึ่งใช้ bindgen เพื่อสร้างปลอกคอตามไฟล์ส่วนหัวของเคอร์เนล

เฟรมเวิร์กช่วยให้คุณปรับปรุงความปลอดภัยของไดรเวอร์โดยไม่ต้องทำการเปลี่ยนแปลงเคอร์เนล แทนที่จะสร้างระดับการแยกเพิ่มเติมสำหรับไดรเวอร์ในเคอร์เนลขอเสนอให้บล็อกปัญหาในขั้นตอนการคอมไพล์โดยใช้ภาษา Rust ที่ปลอดภัยยิ่งขึ้น

ผู้ผลิตอุปกรณ์ควรจะสามารถพัฒนาแนวทางนี้ได้โดยไม่ต้องมีการตรวจสอบที่เหมาะสม

ยังไม่ได้ใช้ฟังก์ชันตามแผนที่วางไว้ทั้งหมด แต่เฟรมเวิร์กนั้นค่อนข้างเหมาะสมกับงานอยู่แล้วและใช้ในการเขียนไดรเวอร์ที่ใช้งานได้สำหรับคอนโทรลเลอร์ LAN9512 USB Ethernet ที่ให้มาบนบอร์ด Raspberry Pi 3

มีการเขียนไดรเวอร์ smsc95xx ที่มีอยู่ เป็นการใช้งานอ้างอิง เมื่อเขียนไดรเวอร์ Rust ในภาษา C

มีข้อสังเกตว่าขนาดโมดูลและค่าโสหุ้ยส่วนประกอบรันไทม์ไม่สำคัญเมื่อพัฒนาไดรเวอร์สำหรับ Rust ซึ่งช่วยให้คุณสามารถใช้เฟรมเวิร์กสำหรับอุปกรณ์ที่มีทรัพยากร จำกัด

Fuente: https://hub.packtpub.com


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   L1ch dijo

    ฉันไม่พบข้อมูลสำหรับไดรเวอร์ smsc95xx ในซอร์สหรือบางสิ่งบางอย่างกำลังจะถูกนำไปใช้ใน Rust บน Linux