ปล่อย , ระบบปฏิบัติการที่มีเคอร์เนลไฮบริด ในปี 2003 โดยมีเป้าหมายเพื่อมอบทางเลือกในการพัฒนาให้กับ FreeBSD 4.x หนึ่งในคุณสมบัติของ DragonFly BSD คือระบบไฟล์เวอร์ชันแบบกระจาย รองรับการโหลดเคอร์เนลระบบ "เสมือน" เป็นกระบวนการของผู้ใช้ ความสามารถในการแคชข้อมูลระบบไฟล์และข้อมูลเมตาบนไดรฟ์ SSD ลิงก์สัญลักษณ์ตัวแปรที่คำนึงถึงบริบท ความสามารถในการหยุดกระบวนการในขณะที่รักษาสถานะบนดิสก์ เคอร์เนลไฮบริดที่ใช้เธรดน้ำหนักเบา (LWKT)
หลัก เพิ่มใน DragonFlyBSD 5.6:
- ระบบการจัดการหน่วยความจำเสมือนได้รับการปรับปรุงให้ทันสมัย ระบบย่อยหลายระบบที่เกี่ยวข้องกับหน่วยความจำเสมือนและ PMAP ได้รับการเขียนขึ้นใหม่
โค้ดได้รับการปลดล็อกในหลายจุด รวมถึงฟังก์ชัน m_page_wakeup, vm_hold และ vm_unhold ประสิทธิภาพแคชของ CPU ได้รับการปรับปรุงโดยการลดการย้ายวัตถุ VM ระหว่างคอร์ CPU และลดค่าใช้จ่ายในการจัดการข้อผิดพลาดของเพจสำหรับพื้นที่หน่วยความจำที่ใช้ร่วมกัน อัลกอริทึมการจัดสรรเพจหน่วยความจำได้รับการปรับปรุง ความล่าช้าในฟังก์ชัน vm_page_alloc() ได้ถูกกำจัดออกไป เพิ่ม vm_page_hash*() API ซึ่งช่วยให้สามารถเลือกได้โดยไม่ล็อกเป็นผลให้สามารถสังเกตได้ชัดเจน . ตัวอย่างเช่น
ในการทดสอบ buildkernel เวลาในการประมวลผลฝั่งเคอร์เนลลดลง 40% แบนด์วิดท์เพิ่มขึ้น 7% เมื่อใช้ CPU Haswell และ 14% สำหรับ Xeon ในการทดสอบ SELF-EXEC S/DI เมื่อเทียบกับรุ่นก่อนหน้า ประสิทธิภาพเพิ่มขึ้น 23% สำหรับ Haswell และ 18% สำหรับ Xeon ในการทดสอบ
SELF-EXEC S/SH 28% และ 71% ตามลำดับ ใน SELF-EXEC D/DI - 23% และ 242% (เนื่องจากมัลติเธรดที่ได้รับการปรับปรุง) ใน SELF-EXEC D/SH โดย 24% และ 234% ใน FAULTZF โดย 17% และ 14% ใน DOCOMP โดย 22% และ 42%
ใน NATIVEKERNEL เพิ่มขึ้น 5.1% และ 8.1% - ไดรเวอร์ DRM และตัวจัดการหน่วยความจำวิดีโอ TTM สำหรับการ์ดจอ AMD ได้รับการอัปเดตอย่างมีนัยสำคัญ เพิ่มการรองรับ Ryzen APU รุ่นใหม่ ปรับปรุงการรองรับ UEFI framebuffer แก้ไขปัญหาเดดล็อกที่ส่งผลเสียต่อประสิทธิภาพใน Radeon/TTM เรียบร้อยแล้ว การตั้งค่าหน่วงเวลาการบูตได้รับการปรับปรุงใหม่เพื่อหลีกเลี่ยงความขัดแย้งระหว่างไดรเวอร์ i915 และเซิร์ฟเวอร์ X เพิ่มการเรียกใช้ DRM_IOCTL_GET_PCIINFO เพื่อปรับปรุงการรองรับ mesa/libdrm แก้ไขข้อผิดพลาดและข้อบกพร่องมากมาย
- โค้ดการซิงโครไนซ์ในระบบไฟล์ HAMMER2 ได้รับการเขียนขึ้นใหม่ ซึ่งช่วยปรับปรุงประสิทธิภาพของระบบไฟล์นี้อย่างมีนัยสำคัญ นอกจากนี้ ประสิทธิภาพการเขียนแบบต่อเนื่องก็ได้รับการปรับปรุงเช่นกัน
เพื่อปรับปรุงความทนทานต่อความผิดพลาด ได้มีการเพิ่มการติดตามการอ้างอิงเพื่อป้องกันการแยกไดเรกทอรี/ไฟล์ระหว่างการสร้าง เปลี่ยนชื่อ หรือลบ การจัดการ Snapshot ได้รับการปรับปรุงใหม่เพื่อลดความหน่วงและรับประกันความสอดคล้องของ Snapshot ปรับปรุงการจัดการการเขียนและการล้างแคชพร้อมกัน ปรับปรุงการดำเนินการ umount ข้อความแสดงข้อผิดพลาดการละเมิดความสมบูรณ์ (CRC) ได้รับการปรับปรุงให้เข้าใจง่ายขึ้นแนะนำให้ใช้ HAMMER2 เป็นระบบไฟล์รูทเริ่มต้น ขณะนี้ยังไม่รองรับการทำคลัสเตอร์ คุณสมบัติของระบบไฟล์ HAMMER2 ประกอบด้วยการติดตั้งสแนปช็อตแบบแยกกัน, สแนปช็อตแบบเขียนได้, โควต้าระดับไดเรกทอรี, การมิเรอร์แบบเพิ่มหน่วย, การรองรับอัลกอริทึมการบีบอัดข้อมูลที่หลากหลาย และการมิเรอร์แบบหลายมาสเตอร์พร้อมการกระจายข้อมูลไปยังหลายโฮสต์
- เพิ่มการสนับสนุนเบื้องต้นให้กับระบบย่อย FUSE เพื่อสร้างระบบไฟล์ในพื้นที่ผู้ใช้
- ปรับปรุงประสิทธิภาพของตัวกรองแพ็กเก็ต PF บนระบบมัลติคอร์
- การสนับสนุนกลไกการป้องกัน SMAP (Supervisor Mode Access Prevention) และ SMEP (Supervisor Mode Execution Prevention) จะดำเนินการเมื่อได้รับการสนับสนุนจาก CPU SMAP จะบล็อกการเข้าถึงข้อมูลในพื้นที่ผู้ใช้จากโค้ดที่มีสิทธิ์ใช้งานซึ่งทำงานในระดับเคอร์เนล SMEP ป้องกันการเปลี่ยนจากโหมดเคอร์เนลไปเป็นการรันโค้ดในระดับผู้ใช้ ซึ่งช่วยป้องกันการใช้ประโยชน์จากช่องโหว่ต่างๆ ของเคอร์เนล (โค้ดเชลล์จะไม่ถูกรันเนื่องจากอยู่ในพื้นที่ผู้ใช้)
- เพิ่มรหัสการบล็อก คลาส MDS (Microarchitectural Data Sampling) ในโปรเซสเซอร์ Intel ฟีเจอร์นี้จำเป็นต้องมีไมโครโค้ดที่อัปเดตแล้ว โดยค่าเริ่มต้น การป้องกันจะถูกปิดใช้งานและสามารถเปิดใช้งานได้โดยใช้ 'sysctl machdep.mds_mitigation=MD_CLEAR' การเปิดใช้งานฟีเจอร์นี้จะทำให้เกิดความล่าช้าเพิ่มขึ้น 250 นาโนวินาทีเมื่อสลับบริบทระหว่างพื้นที่ผู้ใช้และพื้นที่เคอร์เนล
- เคอร์เนลได้รับการคอมไพล์ตามค่าเริ่มต้นโดยมีการป้องกัน retpoline ต่อการโจมตี Spectre
- ยูทิลิตี้จำนวนมากจากระบบฐานได้รับการแปลงให้ใช้ LibreSSL
- เวอร์ชันอัปเดตของส่วนประกอบของบุคคลที่สาม รวมถึง xz 5.2.4
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0,
libedit 2019-03-24. evdev, makefs, ministat, libfetch ถูกพอร์ตมาจาก FreeBSD
dd การเรียกใช้ reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc() และ explicit_bzero() ได้ถูกพอร์ตจาก OpenBSD ไปยัง libc แล้ว โดยค่าเริ่มต้น คอมไพเลอร์ gcc-8 จะถูกใช้สำหรับการสร้างแทน gcc-5
ที่มา: opennet.ru
