الرئيسية / لينكس / أنظمة الملفات الافتراضية في Linux: لماذا نحتاجها وكيف تعمل

أنظمة الملفات الافتراضية في Linux: لماذا نحتاجها وكيف تعمل

أنظمة الملفات الافتراضية في Linux: لماذا نحتاجها وكيف تعمل

 

أساسيات نظام الملفات

يتطلب Linux kernel أن يكون الكيان نظام ملفات ، ويجب عليه أيضًا تطبيق أساليب open  و read  و write على الكائنات الثابتة التي لها أسماء مرتبطة بها.

من وجهة نظر البرمجة الموجهة للكائنات ، يعامل kernel نظام الملفات العام كواجهة مجردة ، وهذه الوظائف الثلاث الكبرى “افتراضية” بدون تعريف افتراضي.

يطلق على تطبيق نظام ملفات kernel الافتراضي نظام ملفات ظاهري (VFS).

If we can open(), close(), read() and write(), it is a file as this console session shows.

VFS هو الأساس الذي تقوم عليه الملاحظة الشهيرة في كل الأنظمة المشابهة لـ Unix “كل شيء ملف”.

النظر في مدى غرابة أن العرض التوضيحي الصغير أعلاه يضم جهاز حرف / ديف / وحدة التحكم يعمل فعلا.

تظهر الصورة جلسة Bash تفاعلية على teletype افتراضي (tty).

إرسال سلسلة إلى جهاز وحدة التحكم الافتراضية يجعلها تظهر على الشاشة الافتراضية.

VFS له خصائص أخرى ، حتى أكثر غرابة. على سبيل المثال ، من الممكن البحث عنها.

توفر أنظمة الملفات المألوفة مثل ext4 و NFS و / proc جميعها تعريفات للوظائف الثلاثة الكبرى

في بنية بيانات لغة C تدعى file_operations. بالإضافة إلى ذلك ،

تقوم أنظمة ملفات معينة بتوسيع وظائف VFS وتجاوزها بطريقة مألوفة موجهة نحو الكائن.

كما يشير Robert Love ، فإن تجريد VFS يمكّن مستخدمي Linux من نسخ الملفات بشكل غير واضح من وإلى أنظمة التشغيل الأجنبية

أو الكيانات المجردة مثل الأنابيب دون القلق بشأن تنسيق البيانات الداخلية.

نيابة عن المستخدمين ، عبر عملية استدعاء النظام ، يمكن لعملية نسخ من ملف في بنيات بيانات kernel

باستخدام طريقة read لنظام ملفات واحد ، ثم استخدام أسلوب write لنوع آخر من نظام الملفات لإخراج البيانات.

تم العثور على تعريفات الوظائف التي تنتمي إلى نوع قاعدة VFS نفسه في ملفات fs / *. c في مصدر kernel ، بينما تحتوي الدلائل الفرعية لـ fs / على أنظمة الملفات المحددة.

kernel

يحتوي kernel أيضًا على كيانات تشبه نظام الملفات مثل cgroups و / dev و tmpfs ، والتي تكون مطلوبة في وقت مبكر من عملية التمهيد وبالتالي فهي محددة في دليل البدء / الدليل الفرعي لـ kernel.

لاحظ أن cgroups و / dev و tmpfs لا تستدعي وظائف file_operations الثلاثية الكبيرة ، ولكن القراءة مباشرة من الذاكرة والكتابة عليها بدلاً من ذلك.

يوضح الرسم التوضيحي أدناه تقريبًا كيفية وصول المستخدمين إلى أنواع مختلفة من أنظمة الملفات التي يتم تركيبها عادةً على أنظمة Linux.

لا يتم عرض بنيات مثل ساعات الأنابيب و dmesg و POSIX التي تنفذ أيضًا عمليات تشغيل الملفات الهيكلية والتي يمر وصولها عبر طبقة VFS.

How userspace accesses various types of filesystems

VFS هي “طبقة shim” بين استدعاءات النظام ومنفذي عمليات تشغيل ملفات معينة مثل ext4 و procfs.

يمكن عندئذ أن تتصل وظائف file_operations إما ببرامج تشغيل خاصة بالجهاز أو بوحدات الوصول للذاكرة.

لا تستخدم ملفات tmpfs و devtmpfs و cgroups عمليات تشغيل الملفات ولكنها تصل إلى الذاكرة مباشرة.

وجود VFS يعزز إعادة استخدام الكود  حيث لا يلزم إعادة تطبيق الطرق الأساسية المرتبطة بأنظمة الملفات من قبل كل نوع من أنواع أنظمة الملفات.

إعادة استخدام الكود هي أفضل الممارسات المقبولة على نطاق واسع في هندسة البرمجيات! للأسف ،

إذا كانت الشفرة المعاد استخدامها تقدم أخطاء خطيرة ، فإن جميع التطبيقات التي ترث الأساليب الشائعة تعاني منها.

 

 

شاهد أيضاً

كيفية تثبيت برنامج device driver على لينكس

كيفية تثبيت برنامج device driver على لينكس

كيفية تثبيت برنامج device driver على لينكس 1. واجهات المستخدم إذا كنت جديدًا على نظام …

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *