واجهة برمجة تطبيقات نظام الملفات

واجهة برمجة تطبيقات نظام الملفات هي واجهة برمجة تطبيقات تسمح لبرنامج مساعد أو برنامج مستخدم بطلب خدمات نظام الملفات . وقد يوفر نظام التشغيل طبقات تجريدية للوصول إلى أنظمة الملفات المختلفة بشفافية.

قد تتضمن بعض واجهات برمجة تطبيقات نظام الملفات أيضًا واجهات لعمليات الصيانة، مثل إنشاء أو تهيئة نظام الملفات، والتحقق من سلامة نظام الملفات، وإلغاء التجزئة .

يتضمن كل نظام تشغيل واجهات برمجة التطبيقات (APIs) اللازمة لأنظمة الملفات التي يدعمها. يحتوي نظام التشغيل مايكروسوفت ويندوز على واجهات برمجة تطبيقات لأنظمة الملفات NTFS والعديد من أنظمة الملفات FAT . أما أنظمة لينكس ، فيمكن أن تتضمن واجهات برمجة تطبيقات لأنظمة الملفات ext2 و ext3 و ReiserFS و Btrfs ، على سبيل المثال لا الحصر.

تاريخ

كانت بعض أنظمة التشغيل المبكرة قادرة على التعامل مع أنظمة الملفات الشريطية والقرصية فقط. وقد وفرت هذه الأنظمة أبسط واجهات التعامل مع:

  • اكتب، اقرأ، وحدد موقعك

تطلبت المزيد من التنسيقات، مثل تخصيص الأجهزة وإلغاء تخصيصها، إضافة ما يلي:

  • افتح وأغلق

مع ازدياد الخدمات التي توفرها أنظمة الملفات، تم تحديد المزيد من الواجهات:

مع ازدياد أنواع أنظمة الملفات الإضافية، وبنية التسلسل الهرمي، والوسائط المدعومة، أصبحت الميزات الإضافية بحاجة إلى بعض الوظائف المتخصصة:

تتطلب أنظمة المستخدمين المتعددين واجهات برمجة تطبيقات (APIs) من أجل:

  • مشاركة
  • تقييد الوصول
  • التشفير

نظرة عامة على واجهة برمجة التطبيقات

اكتب، اقرأ، وحدد موقعك

تُتيح بعض أنظمة الملفات إمكانية كتابة بيانات المستخدم إلى نظام الملفات لاستخدامها مباشرةً من قِبل برنامج المستخدم أو مكتبة وقت التشغيل. قد توفر مكتبة وقت التشغيل لبعض لغات البرمجة تحويل الأنواع والتنسيق والحظر. كما توفر بعض أنظمة الملفات إمكانية تحديد السجلات باستخدام المفتاح، وقد تشمل إعادة كتابة سجل موجود. تُسمى هذه العملية أحيانًا "إعادة كتابة" PUTأو PUTX"إعادة كتابة" (إذا كان السجل موجودًا).

قد تتضمن قراءة بيانات المستخدم، والتي تُسمى أحيانًا GET ، اتجاهًا (للأمام أو للخلف) أو مفتاحًا محددًا في حالة نظام الملفات المُفهرس. وكما هو الحال مع الكتابة، قد تتدخل مكتبات وقت التشغيل لصالح برنامج المستخدم.

يشمل تحديد الموضع تعديل موقع التسجيل التالي. وقد يشمل ذلك التقديم أو الترجيع، بالإضافة إلى تحديد الموضع في بداية الملف أو نهايته.

افتح وأغلق

يمكن طلب واجهة برمجة التطبيقات المفتوحة صراحةً أو استدعاؤها ضمنيًا عند تنفيذ أول عملية على كائن. وقد يؤدي ذلك إلى تركيب وسائط تخزين قابلة للإزالة، وإنشاء اتصال بمضيف آخر، والتحقق من موقع الكائن وإمكانية الوصول إليه. كما يقوم بتحديث هياكل النظام للإشارة إلى أن الكائن قيد الاستخدام.

تتضمن المتطلبات المعتادة لطلب الوصول إلى عنصر في نظام الملفات ما يلي:

  • الكائن المراد الوصول إليه (ملف، دليل، وسائط، وموقع)
  • نوع العمليات المقصودة التي سيتم تنفيذها بعد الفتح (القراءة، والتحديث، والحذف)

قد تكون هناك حاجة إلى معلومات إضافية، على سبيل المثال:

  • كلمة مرور
  • إعلان يسمح لعمليات أخرى بالوصول إلى نفس الكائن أثناء استخدام العملية التي فتحت الملف له (مشاركة). قد يعتمد ذلك على نية العملية الأخرى. في المقابل، إعلان يمنع أي عملية أخرى من الوصول إلى الكائن بغض النظر عن نية العملية الأخرى (استخدام حصري). تُطلب هذه الإعلانات عبر مكتبة لغة برمجة، والتي قد توفر التنسيق بين الوحدات النمطية في العملية، بالإضافة إلى توجيه الطلب إلى نظام الملفات.

من المتوقع حدوث خطأ ما أثناء معالجة عملية الفتح:

  • قد يتم تحديد الكائن أو القصد بشكل غير صحيح (قد يتضمن الاسم حرفًا غير مقبول أو قد يكون القصد غير معترف به).
  • قد يُمنع هذا الإجراء من الوصول إلى الكائن (قد يكون الوصول إليه متاحًا فقط لمجموعة أو مستخدم محدد).
  • قد يتعذر على نظام الملفات إنشاء أو تحديث الهياكل المطلوبة لتنسيق الأنشطة بين المستخدمين.
  • في حالة وجود جهاز جديد (أو بديل)، قد لا تكون هناك سعة كافية على الوسائط.

بحسب لغة البرمجة، قد تُحدد مواصفات إضافية مفتوحة المصدر الوحدات النمطية اللازمة للتعامل مع هذه الحالات. تُحدد بعض المكتبات وحدة نمطية لنظام الملفات تسمح بإجراء تحليل في حال عجز البرنامج المُشغِّل عن تنفيذ أي إجراء ذي معنى نتيجةً لعطل ما.

قد يؤدي إغلاق وحدة التخزين إلى فصلها أو إخراجها، وتحديث بنية المكتبة ونظام الملفات للإشارة إلى أن العنصر لم يعد قيد الاستخدام. يشير الحد الأدنى من متطلبات الإغلاق إلى العنصر. بالإضافة إلى ذلك، توفر بعض أنظمة الملفات إمكانية تحديد مصير العنصر، مما قد يشير إلى أنه سيتم التخلص منه وإخراجه من نظام الملفات.

على غرار البطولة المفتوحة، يجب توقع حدوث بعض الأخطاء:

  • قد تكون مواصفات الكائن غير صحيحة.
  • قد لا تكون هناك سعة كافية على الوسائط لحفظ أي بيانات يتم تخزينها مؤقتًا أو لإخراج بنية تشير إلى أنه تم تحديث الكائن بنجاح.
  • قد يحدث خطأ في الجهاز على الوسائط التي يتم تخزين الكائن فيها أثناء كتابة البيانات المخزنة مؤقتًا، أو بنية الإكمال، أو تحديث البيانات الوصفية المتعلقة بالكائن (على سبيل المثال، وقت الوصول الأخير).
  • قد يكون تحديد مواصفات تحرير الكائن غير متسق مع العمليات الأخرى التي لا تزال تستخدم الكائن.

إن الاعتبارات المتعلقة بالتعامل مع الفشل مماثلة لتلك الخاصة بالفتح.

إدارة البيانات الوصفية

تُسمى المعلومات المتعلقة بالبيانات الموجودة في ملف ما بالبيانات الوصفية.

يحتفظ نظام الملفات ببعض البيانات الوصفية، مثل تاريخ آخر تعديل (وتواريخ أخرى مختلفة حسب نظام الملفات)، وموقع بداية الملف، وحجمه، وما إذا كانت أداة النسخ الاحتياطي لنظام الملفات قد حفظت النسخة الحالية من الملفات. ولا يمكن عادةً تعديل هذه البيانات بواسطة برنامج المستخدم.

قد تتضمن البيانات الوصفية الإضافية التي تدعمها بعض أنظمة الملفات مالك الملف، والمجموعة التي ينتمي إليها، بالإضافة إلى الأذونات والتحكم في الوصول (أي ما هي صلاحيات الوصول والتحديثات التي يمكن للمستخدمين أو المجموعات المختلفة إجراؤها)، وما إذا كان الملف مرئيًا عادةً عند عرض محتويات المجلد. ويمكن تعديل هذه العناصر عادةً بواسطة أدوات نظام الملفات التي قد يُشغّلها المالك.

تخزن بعض التطبيقات بيانات وصفية أكثر. بالنسبة للصور، قد تتضمن البيانات الوصفية طراز الكاميرا والإعدادات المستخدمة لالتقاط الصورة. أما بالنسبة للملفات الصوتية، فقد تتضمن البيانات الوصفية اسم الألبوم، والفنان الذي سجل التسجيل، والتعليقات المتعلقة بالتسجيل والتي قد تكون خاصة بنسخة معينة من الملف (أي أن نسخًا مختلفة من التسجيل نفسه قد تحتوي على تعليقات مختلفة نتيجة تحديث مالك الملف). وقد تتضمن المستندات عناصر مثل "تمت المراجعة بواسطة" و"تمت الموافقة بواسطة"، وما إلى ذلك.

إدارة الدليل

إعادة تسمية ملف، ونقل ملف (أو مجلد فرعي) من مجلد إلى آخر، وحذف ملف هي أمثلة على العمليات التي يوفرها نظام الملفات لإدارة المجلدات.

عادة ما يتم تضمين عمليات البيانات الوصفية مثل السماح أو تقييد الوصول إلى دليل من قبل مستخدمين أو مجموعات مستخدمين مختلفة.

صيانة نظام الملفات

عند استخدام نظام الملفات، قد تتم إضافة أو حذف أو تعديل الدلائل والملفات والسجلات. عادةً ما يؤدي ذلك إلى عدم كفاءة في هياكل البيانات الأساسية. على سبيل المثال، قد تتوزع الكتل المتسلسلة منطقيًا عبر الوسائط بطريقة تُسبب إعادة تموضع مفرطة، أو قد تُضمّن كتل فارغة أو مستخدمة جزئيًا في هياكل مرتبطة. قد تنتج الهياكل غير المكتملة أو غيرها من التناقضات عن أخطاء في الجهاز أو الوسائط، أو عدم كفاية الوقت بين اكتشاف انقطاع وشيك للتيار الكهربائي وانقطاعه الفعلي، أو إيقاف تشغيل النظام أو إزالة الوسائط بشكل غير صحيح، وفي حالات نادرة جدًا، أخطاء في برمجة نظام الملفات.

تتضمن أنظمة الملفات إجراءات متخصصة لتحسين أو إصلاح هذه البنى. لا يستدعيها المستخدم عادةً بشكل مباشر، بل يتم تشغيلها داخل نظام الملفات نفسه. قد تتم مقارنة عدادات داخلية لعدد مستويات البنى وعدد العناصر المُدرجة بعتبات محددة. قد يؤدي ذلك إلى تعليق وصول المستخدم إلى بنية معينة (عادةً ما يُسبب ذلك استياءً للمستخدم أو المستخدمين المتأثرين)، أو قد يتم تشغيلها كمهام غير متزامنة ذات أولوية منخفضة، أو قد يتم تأجيلها إلى وقت يكون فيه نشاط المستخدم منخفضًا. في بعض الأحيان، يتم استدعاء هذه الإجراءات أو جدولتها بواسطة مدير النظام، أو كما هو الحال في عملية إلغاء التجزئة.

واجهة برمجة التطبيقات على مستوى النواة

تكون واجهة برمجة التطبيقات على مستوى النواة عندما لا توفر النواة فقط الواجهات لمطوري نظام الملفات ولكنها أيضًا المساحة التي يوجد فيها رمز نظام الملفات.

يختلف هذا عن المخطط القديم في أن النواة نفسها تستخدم مرافقها الخاصة للتواصل مع برنامج تشغيل نظام الملفات والعكس صحيح، على عكس النواة التي تتولى تخطيط نظام الملفات ونظام الملفات الذي يصل مباشرة إلى الأجهزة.

إنها ليست الخطة الأكثر وضوحًا، لكنها تحل صعوبات إعادة الكتابة الرئيسية التي كانت موجودة في الخطة القديمة.

تتيح النواة المعيارية إضافة أنظمة الملفات كأي وحدة نواة، حتى تلك التابعة لجهات خارجية. أما النواة غير المعيارية، فتتطلب إعادة تجميع النواة مع رمز نظام الملفات الجديد (وهذا يجعل استخدام أنظمة الملفات التابعة لجهات خارجية مستحيلاً في النواة مغلقة المصدر).

استخدمت أنظمة يونكس والأنظمة الشبيهة بيونكس مثل لينكس هذا المخطط المعياري.

يوجد شكل مختلف من هذه الآلية يُستخدم في نظام MS-DOS (من الإصدار 4.0 فصاعدًا) والأنظمة المتوافقة معه لدعم أنظمة ملفات الأقراص المضغوطة والشبكات. فبدلًا من إضافة تعليمات برمجية إلى نواة النظام، كما في الآلية القديمة، أو استخدام وظائف النواة كما في الآلية القائمة على النواة، تقوم هذه الآلية باعتراض جميع استدعاءات الملفات وتحديد ما إذا كان ينبغي إعادة توجيهها إلى الدالة المكافئة في النواة أو ما إذا كان يجب معالجتها بواسطة برنامج تشغيل نظام الملفات المحدد، والذي بدوره يصل مباشرةً إلى محتويات القرص باستخدام وظائف BIOS منخفضة المستوى .

واجهة برمجة التطبيقات المستندة إلى برنامج التشغيل

تعتمد واجهة برمجة التطبيقات على برنامج التشغيل عندما توفر النواة المرافق ولكن رمز نظام الملفات موجود بشكل كامل خارج النواة (وليس حتى كوحدة نمطية لنواة نمطية).

إنها طريقة أنظف لأن رمز نظام الملفات مستقل تمامًا، مما يسمح بإنشاء أنظمة ملفات لنوى مغلقة المصدر وإضافة أو إزالة أنظمة الملفات من النظام عبر الإنترنت.

ومن أمثلة هذا المخطط أنظمة الملفات القابلة للتثبيت (IFSs) الخاصة بنظامي التشغيل Windows NT و OS/2 .

واجهة برمجة تطبيقات مختلطة تعتمد على برنامج تشغيل النواة

في واجهة برمجة التطبيقات هذه، توجد جميع أنظمة الملفات في النواة، كما هو الحال في واجهات برمجة التطبيقات القائمة على النواة، ولكن يتم اعتراضها تلقائيًا بواسطة واجهة برمجة تطبيقات أخرى، وهي القائمة على برنامج التشغيل، بواسطة نظام التشغيل.

واجهة برمجة تطبيقات مساحة المستخدم

تتواجد واجهة برمجة التطبيقات (API) في مساحة المستخدم عندما لا يستخدم نظام الملفات مرافق النواة بشكل مباشر ولكنه يصل إلى الأقراص باستخدام وظائف نظام التشغيل عالية المستوى ويوفر وظائف في مكتبة تستخدمها سلسلة من الأدوات المساعدة للوصول إلى نظام الملفات.

هذا مفيد للتعامل مع صور الأقراص.

تتمثل الميزة في إمكانية جعل نظام الملفات قابلاً للنقل بين أنظمة التشغيل حيث يمكن أن تكون وظائف نظام التشغيل عالية المستوى التي يستخدمها شائعة مثل ANSI C، ولكن العيب هو أن واجهة برمجة التطبيقات (API) فريدة لكل تطبيق يقوم بتنفيذها.

ومن أمثلة هذا المخطط hfsutils و adflib .

التوافق بين واجهات برمجة تطبيقات نظام الملفات

بما أن جميع أنظمة ملفات القرص تحتاج إلى وظائف مكافئة يوفرها النواة، فمن الممكن بسهولة نقل كود نظام الملفات من واجهة برمجة تطبيقات إلى أخرى، حتى لو كانت من أنواع مختلفة.

انظر أيضاً

مراجع

مصادر

  • كاستر، هيلين (1993). داخل نظام التشغيل ويندوز إن تي . مطبعة مايكروسوفت . رقم ISBN 1-55615-481-X.
  • كاستر، هيلين (1994). داخل نظام ملفات ويندوز إن تي . مطبعة مايكروسوفت. رقم ISBN 1-55615-660-X.
  • ناجار، راجيف (1997). أساسيات نظام ملفات ويندوز إن تي: دليل للمطورين . دار نشر أورايلي ميديا . رقم ISBN 1-56592-249-2.
  • بات، ستيف د. (2003). أنظمة ملفات يونكس: التطور والتصميم والتنفيذ . وايلي . ISBN 0-471-16483-6.