ไลนัสชี้ shared library สร้างปัญหามากกว่าประโยชน์ หลายแพ็กเกจแชร์กับใครไม่ได้

ไลนัสแสดงความเห็นว่า shared library นั้นสร้างปัญหามากกว่าประโยชน์ระหว่างการพูดคุยแก้ปัญหา clang ในเคอร์เนลทำงานได้ช้า ขณะที่ดิสโทรสำคัญอย่าง Fedora นั้นมีนโยบายบังคับให้แพ็กเกจต่างๆ ที่ใช้ไลบรารีจากแพ็กเกจอื่นต้องลิงก์แบบ dynamic เท่านั้น

ไลบรารี dynamic หรือไฟล์ .dll บนวินโดวส์และ .so บนลินุกซ์ เป็นไลบรารีที่คอมไฟล์ไว้ล่วงหน้าแต่ไม่ใช่ไฟล์พร้อมรัน (executable) ด้วยตัวเอง แต่ต้องให้โปรแกรมอื่นๆ มารวมเอาไลบรารีเข้าไปเมื่อโหลดโปรแกรม การทำงานเช่นนี้ทำให้ระบบปฎิบัติการสามารถใส่ไลบรารีไว้เพียงชุดเดียว หลังจากนั้นทุกโปรแกรมก็สามารถใช้ไลบรารีร่วมกันได้ ทำให้ประหยัดพื้นที่ดิสก์และหน่วยความจำ

ไลนัสแย้งว่าหากไม่ใช่ไลบรารีแกนกลางจริงๆ เช่นไลบรารี GUI อย่าง Gnome หรือ Qt แล้วอัตราการใช้ไลบรารีซ้ำกันนั้นน้อยมาก จนทำให้ดิสก์ที่ประหยัดได้มีเพียงเล็กน้อยเท่านั้น ส่วนการประหยัดหน่วยความจำก็น้อยมากและหลายครั้งก็เปลืองหน่วยความจำกว่าเดิม

พร้อมกันนั้นไลนัสชี้ปัญหาของไลบรารี dynamic ว่ามีโครงการจำนวนมากสร้างไลบรารีที่ไม่มีคนอื่นใช้งานยกเว้นแต่โปรแกรมบางตัวเท่านั้ แต่โครงการก็ต้องคอมไพล์ไลบรารี dynamic ออกมา แม้การใช้งานจริงจะต้องใช้งานกับตัวโปรแกรมที่เวอร์ชั่นตรงกันเท่านั้น

ที่มา – kernel.org

No Description

ภาพการทำงานของ linker โดย Qef

Topics: 

from:https://www.blognone.com/node/122516