/ proc / self ถูกนำไปใช้ใน Linux อย่างไร


19

ฉันกำลังยุ่งอยู่กับ/procระบบไฟล์ใน Linux และฉันเจอ/proc/selfซึ่งเป็นสัญลักษณ์เชื่อมโยงไปยังไดเรกทอรีกระบวนการของกระบวนการปัจจุบัน ฉันต้องการทราบวิธีการใช้งาน ทางออกหนึ่งคือการเปลี่ยน symlink นั้นในทุก ๆ context switchแต่เห็นได้ชัดว่ามันแพงมากเพราะมันเกี่ยวข้องกับการเข้าถึงดิสก์

คำตอบ:


20

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482เป็นการนำไปใช้ในปัจจุบัน

procระบบแฟ้มเป็นเสมือนทั้งหมดและจะดำเนินการเพื่อให้ VFS ภายในreadlinkได้รับมอบหมายไปยังสถานที่ที่เหมาะสมสำหรับ symlinks พิเศษ ดังนั้นจึงคำนวณสิ่งที่selfชี้ไปเมื่อมีการอ่าน / สำรวจไม่สลับบริบททั้งหมด


12

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

หากคุณมีความโน้มเอียงทางโปรแกรมคุณสามารถอ่านการดำเนินการ/procในรหัสที่มาเคอร์เนล เนื้อหาของ/proc/selfลิงค์สัญลักษณ์ถูกสร้างขึ้นโดยฟังก์ชันที่เติมบัฟเฟอร์ด้วย pid ของกระบวนการเรียกใช้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.