ไม่ชัดเจนโดยไม่มีบริบทเพิ่มเติมเพื่อพิจารณาว่า Stalling กำลังพูดถึงตาราง inode ในหน่วยความจำหรือตารางที่มีในระบบไฟล์ ฉันยืมหนังสือรุ่นก่อนหน้านี้มาให้กับใครบางคน แต่ไม่ได้รับคืน ดังนั้นฉันไม่สามารถค้นหาบริบทด้วยตนเอง
มีสามตารางไฟล์ "แต่ตารางที่กล่าวถึงที่นี่มักเรียกกันว่า" inode memory inode table "; ที่สองเรียกว่า " open file table " และมีอยู่ต่อกระบวนการ ตารางทั้งสองอยู่ในหน่วยความจำเคอร์เนลและไม่สามารถเข้าถึงโปรแกรมได้ "ตาราง" ที่สามเป็นตารางสองชุดภายในระบบแฟ้ม (บนดิสก์) ชุดแรกคือตาราง inode บนดิสก์และชุดที่สองเป็นตัวบล็อกข้อมูล (หมายเหตุ: การสนทนานี้เกี่ยวข้องกับการจัดการระบบไฟล์ UNIX แบบดั้งเดิมระบบใหม่สามารถ มีองค์กรต่าง ๆ ) รายการในตาราง inode มีลำดับของการอ้างอิงในบล็อกข้อมูลที่มีบล็อกอ้างอิงทางอ้อมหรือข้อมูลจริง กุญแจสำคัญในการไฟล์บนระบบไฟล์เป็น inode ไม่ใช่บล็อกข้อมูล เมื่อ Stalling กำลังพูดถึงตารางไฟล์ "บนดิสก์" โดยทั่วไปจะเป็นตาราง "เล็กกว่า" บนดิสก์ที่ระบุถึงไฟล์เช่นตาราง inode หรือตารางนิยาม block ในระบบ FAT
ในแง่ของตาราง inode ในหน่วยความจำ inode จะถูกโหลดจากระบบไฟล์ค่า st_nlink ของมันจะเพิ่มขึ้นและทำให้เข้าถึงส่วนที่เหลือของระบบเมื่อข้อมูล inode ถูกเขียนไปยังดิสก์ st_ctime จะถูกอัพเดต หากไม่จำเป็นต้องใช้ไอโหนดในหน่วยความจำอีกต่อไปค่า st_nlink จะลดลงและรายการในตารางจะถูกทำเครื่องหมายว่าว่าง ทุกขั้นตอนจะเริ่มต้นด้วยการอ้างอิงถึงประมาณสามหรือห้ารายการลงในหน่วยความจำในตาราง inode: inodes ของstdin
, stdout
, stderr
- เหล่านี้มักจะเป็นแฟ้มอุปกรณ์ (TTY) - แล้วการอ้างอิงไปยังไดเรกทอรีปัจจุบันและไดเรกทอรีราก ไอโหนดจะอยู่ในตารางเพียงครั้งเดียวดังนั้นอาจมีการอ้างอิงหลายไอเท็มกับไอโหนดเดี่ยวในตาราง
ตารางไฟล์เปิดถูกเก็บไว้ต่อกระบวนการและมีการอ้างอิงลงในตาราง inode ในหน่วยความจำเช่นเดียวกับตัวชี้ไปยังบัฟเฟอร์และข้อมูลสถานะ (เช่นfseek(2)
ค่าและธงจากopen(2)
ตัวบ่งชี้ไฟล์เป็นดัชนีแท้จริงลงในตารางไฟล์เปิด แต่ส่วนใหญ่ ผู้คนอ้างถึงรายการในตารางไฟล์เปิดเมื่อพูดถึง "file descriptor"
เมื่อเปิดไฟล์โดยใช้open(2)
จะพบรายการที่มีอยู่ในตารางเปิดไฟล์ inode ของการอ้างอิงไฟล์โดยชื่อพา ธ ถูกกำหนด, inode นั้นจะถูกโหลดลงในตาราง inode ของหน่วยความจำหากยังไม่ได้โหลดนับ st_nlink ถูกเพิ่มและรายการ inode ถูกอ้างอิงใน file descriptor แฟล็กถูกตั้งค่าและบัฟเฟอร์ถูกจัดสรร เมื่อปิดแล้วจะเกิดการย้อนกลับ
รูทีนภายในเคอร์เนลเรียกว่า " ระบบการจัดการไฟล์ " และ " ระบบไฟล์ " เป็นองค์กรบนดิสก์ วันนี้มีจำนวนโมดูล 'plugable' ที่สามารถโหลดได้ ( modprobe(8)
) ลงในระบบการจัดการไฟล์สำหรับองค์กรต่าง ๆ บนดิสก์ ตัวอย่างเช่นมีประเภทระบบไฟล์ ext2 / ext3 / ext4 และแต่ละชนิดมีโมดูลที่แตกต่างกันในระบบจัดการไฟล์ของเคอร์เนล เหมือนกันกับ ntfs, sbfs, nfs, vfat, jfs ฯลฯ
นี่เป็นลมที่ยืดยาวกว่าที่ฉันตั้งใจไว้เล็กน้อยดังนั้นฉันจะหยุดที่นี่