คำตอบสั้น ๆ ก็คือมันจะทำได้ก็ต่อเมื่อคุณมีระบบไฟล์สำรองทางกายภาพ/dev
(และถ้าคุณใช้ distro Linux ที่ทันสมัย
คำตอบยาวดังนี้:
ทั้งหมดนี้กลับไปสู่ปรัชญา UNIX ดั้งเดิมที่ทุกอย่างเป็นไฟล์ ปรัชญานี้เป็นส่วนหนึ่งของสิ่งที่ทำให้ UNIX สามารถใช้งานได้หลากหลายเพราะคุณสามารถโต้ตอบกับอุปกรณ์จากผู้ใช้โดยตรงโดยไม่จำเป็นต้องมีรหัสพิเศษในแอปพลิเคชันของคุณเพื่อพูดคุยโดยตรงกับฮาร์ดแวร์ทางกายภาพ
แต่เดิม/dev
เป็นเพียงไดเรกทอรีอื่นที่มีชื่อที่รู้จักกันดีซึ่งคุณใส่ไฟล์อุปกรณ์ไว้ ระบบ UNIX บางระบบยังคงใช้วิธีนี้ (ฉันเชื่อว่า OpenBSD ยังคงทำอยู่) และคุณสามารถบอกได้ว่าระบบเป็นเช่นนี้หรือไม่เพราะมันจะมีไฟล์อุปกรณ์จำนวนมากสำหรับอุปกรณ์ที่ระบบไม่มีจริง (เช่นไฟล์สำหรับทุกคน พาร์ติชันที่เป็นไปได้บนดิสก์ที่เป็นไปได้ทั้งหมด) สิ่งนี้ช่วยประหยัดพื้นที่ในหน่วยความจำและเวลาที่บูตด้วยค่าใช้จ่ายในการใช้พื้นที่ดิสก์เพิ่มขึ้นอีกเล็กน้อยซึ่งเป็นการแลกเปลี่ยนที่ดีสำหรับระบบยุคแรก ๆ เพราะโดยทั่วไปแล้วหน่วยความจำจะถูก จำกัด และไม่เร็วมาก /dev
นี้โดยทั่วไปจะเรียกว่ามีความคงที่
บนระบบ Linux ที่ทันสมัย (และฉันเชื่อว่า FreeBSD และ Solaris รุ่นล่าสุด) /dev
เป็นระบบแฟ้มในหน่วยความจำชั่วคราวที่มีเคอร์เนล (หรือ udev ถ้าคุณใช้ Systemd เพราะพวกเขาไม่เชื่อว่าเคอร์เนลจะทำอะไรเกือบทุกอย่าง) . สิ่งนี้จะช่วยประหยัดพื้นที่ดิสก์บางส่วนในราคาหน่วยความจำบางส่วน (โดยปกติจะน้อยกว่าไม่กี่ MB) และค่าใช้จ่ายในการประมวลผลที่น้อยมาก นอกจากนี้ยังมีข้อดีอื่น ๆ อีกมากมายโดยหนึ่งในสิ่งที่ยิ่งใหญ่ที่สุดคือการตรวจจับฮาร์ดแวร์ hot-plugged ได้ง่ายขึ้น /dev
นี้โดยทั่วไปจะเรียกว่ามีแบบไดนามิก
ในทั้งสองกรณีแม้ว่าโหนดอุปกรณ์จะถูกเข้าถึงผ่านเลเยอร์ VFS ปกติซึ่งตามคำจำกัดความหมายความว่าพวกเขาจะต้องมี inode (แม้ว่ามันจะเป็น virtual virtual ที่เพิ่งมีอยู่ดังนั้นสิ่งที่ชอบstat()
ทำงานเหมือนที่มันควรจะเป็นจากมุมมองที่เป็นประโยชน์ สิ่งนี้มีผลกระทบเป็นศูนย์ในระบบที่ใช้ไดนามิก/dev
เพราะพวกเขาเพียงเก็บ inodes ในหน่วยความจำหรือสร้างพวกเขาตามต้องการและใกล้ศูนย์ผลกระทบที่/dev
เป็นแบบคงที่เพราะ inodes ใช้พื้นที่ใกล้ศูนย์บนดิสก์และระบบไฟล์ส่วนใหญ่ไม่มีขีด จำกัด บน พวกเขาหรือวิธีการจัดหามากกว่าใครมีแนวโน้มที่จะต้องการ