عذرا على التأخير فى وضع الدروس لكن ظروف اختباراتى والحمد لله لم يعد لدى الا ثلاث مواد سهلة
سنستكمل معا الحديث فى هذا الدرس عن نظريات ومبادئ عمل انظمة الملفات قبل الدخول فى
كيفية تطويرها واضافتها الى نظام التشغيل اثناء مرحلة البناء وحتى يكون الامر بالنسبة للمبتدئ سهلا
فسوف اشرح على نظام FAT12 اعلم انه قديم وقد لا نستخدمه اثناء بناء نظامنا التعليمى لكن سيكون افضل للفهم ومن ثم يمكننا دراسة انظمة ملفات اخرى
نظرية انظمة الملفات العامة
نظام الملفات هو برنامج يساعد في حفظ الملفات على القرص بحيث ينشئ لنا مفهوم الملف وخصائصه والعديد
من البيانات المتعلقة به من تاريخ الانشاء والوقت ، كذلك يحتفظ بقائمة بجميع الملفات وأماكن تواجدها
في القرص ، أيضاً أحد أهم فوائد أنظمة الملفات هي متابعة الأماكن الغير المستخدمة في القرص والأماكن
كذلك أنظمة الملفات الجيدة تقوم بعمل تجميع الملفات المبعثرة ، bad sectors التي تضررت بسبب أو لآخر
حتى تستفيد من المساحات الصغيرة التي ظهرت بسبب حذف ملف موجود Defragmentation على القرص
أو تخرين ملف ذو حجم أقل من المساحة الخالية. وبدون أنظمة الملفات فان التعامل مع القرص سيكون
مستحيلا ! حيث لن نعرف ماهي المساحات الغير مستخدمة من الاخرى ولن نستطيع ان نقوم بقراءة ملف
طلبه المستخدم لعرضه على الشاشة !
وبشكل عام فان نظام الملفات يتكون من:
برنامج للقراءة والكتابة من القرص وسنطلق عليه اسم المحرك (Driver)
وجود هيكلة بيانات مناسبة data srtructure مناسبة يستيطع نظام الملفات التعامل معها
٥٠
وحيث أن برمجة برنامج القراءة والكتابة تعتمد كلياُ على هيكلة نظام الملفات على القرص ، فاننا سنبدأ
على قرص مرن كمثال ، FAT بالحديث عنها أولا وسوف نأخذ نظام 12 نظراً لبساطة هذا النظام وخلوه من التعقيدات
.
قيود نظام FAT12 :
يعتبر هذا النظام من اقدم الانظمة الخاصة بالملفات ظهورا وقد انتشر استخدامه في الاقراص المرنة منذ أواخر السبعينات ويعيبه ما يلى :
1- عدم دعمه للمجلدات الهرمية ويدعم فقط مجلد واحد يسمى الجذر (root Dictionry)
2- طول العنقود (Cluster) هو 12 بت بمعنى أن عدد الكلسترات هي 2 مروعة الاس ب12 (.2اس 12)
3-أسماء الملفات لا تزيد عن 12 بت.
4- يستوعب كحد أقصى 4077 ملف فقط.
5- حجم القرص يحفظ في 16 بت ، ولذا فانه لا يدعم الاقراص التي حجمها يزيد عن 32 MB
6- يستخدم العلامة 0X01 لتمييز التقسيمات على القرص (partations)
وكما ذكرنا أننا سنستخدم هذا النظام في هذه المرحلة نظراً لبساطته ، وعلى الرغم من أنه قد تلاشى
استخدامه في هذا الزمن الا انه يعتبر أساس جيد للأنظمة المتقدمة لذا كان من الافضل دراسته.
هيكلة نظام FAT 12 على القرص
عند تهيئة القرص المرن (Format) بنظام FAT 12 تركيبة القرص تكون على الشكل التالى
وأول مقطع هو مقطع الاقلاع (boot sector) ويحوي شفرة محمل النظام (المرحلة الاولى) بالاضافة الى بيانات ومعلومات BPB and OEM id هذا المقطع عنوانه الفيزيائي على القرص هو المقطع 1 المسار 0 الرأس 0 وهذا العنوان هو الذي يجب تمرير الى مقاطعة البايوس int 0x13 التي تقوم بالقراءة من القرص كذلك في حالة ما أردنا التعامل المباشر مع متحكم القرص المرن. ونظرً لصعوبة هذه العنونة والتي تعرف بAbsolute Sector فان أنظمة الملفات تتعامل مع نظام عنونة مختلف للوصول الى محتويات القرص ، فبدلاً من ذكر كل من المقطع والمسار والرأس للوصول الى مقطع ما فان هذه العنونة تستخدم فقط رقم للمقطع
نظام العنونة الذي تستخدمه أنظمة الملفات يسمى بالعنونة المنطقية (Logical Sector Addressing) ويختصر ب LBA هو نظام بسيط يعتمد على ترقيم المقاطع بشكل متسلسل بدئاً من مقطع الاقلاع والذي يأخذ العنوان 0 ، والمقطع الثاني 1 وهكذا هلم جرا حتى نصل الى آخر مقطع في القرص. وبما أنه يجب استخدام العنونة الحقيقة بدلا من المنطقية لحظة القراءة من القرص
فانه يجب ايجاد طريقة للتحويل من العنونة الحقيقة الى المنطقية -سنناقش
الموضوع لاحقا-. ننتقل الى المقطع التالي لمقطع الإقلاع وهو مقطع (أو عدة مقاطع) يمكن أن يحجزها المبرمج لاداء أي وظيفة يريدها وتسمى المقاطع المحجوزة الاضافية (Extra Reserved Sectors ) والمقصود بمحجوزة أي انه لا يوجد لها وجود في دليل FAT ومقطع الإقلاع هو مقطع محجوز دائما لذلك كانت قيمة المتغير reserved sectors في معلومات BPB هى واحد وفي حالة ما أردت حجز مقاطع أخرى كل ما عليك هو زيادة هذه القيمة بعدد المقاطع المرغوبة ، وللوصول الى محتويات هذا المقطع الاضافي(ان كان له وجود) فان العنوان الحقيقي له هو المقطع 2 المسار 0 الرأس 0 ، أما العنوان المنطقي له هو المقطع 1. وبشكل عام
وهو ، FAT فانه في الغالب لا يتم استخدام مقاطع اضافية سوى مقطع الاقلاع . المقطع الثالث هو جدول
في القرص ، بيانات هذا السجل توضح ما (Cluster) جدول يحوي سجلات بطول 12 بت عن كل كلسترفان العنوان الحقيقي له هو المقطع 2 المسار 0 الرأس 0 ، أما العنوان المنطقي له هو المقطع 1. وبشكل عام
وهو ، FAT فانه في الغالب لا يتم استخدام مقاطع اضافية سوى مقطع الاقلاع . المقطع الثالث هو جدول
في القرص ، بيانات هذا السجل توضح ما (Cluster) جدول يحوي سجلات بطول 12 بت عن كل كلستر
اذا كان الكلستر قيد الاستخدام أم لا ، وهل هو آخر كلستر للملف أم لا وإذا كان ليس باخر فانه يوضح
كذلك الوظيفة الاخرى هي معرفة جميع
الكلسترات لملف ما ويتم ذلك بالنظر الى قيمة السجل (قيمة ال 12 بت) ، والقيم هي :
القيمة 0X00 تدل على ان الكلستر خالى
القيمة 0X01 تدل على ان الكلستر محجوز
القيم من 0X02 الى 0xfef دل على عنوان الكلستر التالي (بمعنى آخر أن الكلستر محجوز وتوجد كلسترات متبقية للملف )
القيم من 0xff0 الى 0xff6 : قيم محجوزة
القيم من 0xff8 الى 0xfff تدل على أن هذا الكلستر هو الاخير للملف.
الى هنا حتى لا اطيل عليكم سأنهى الدرس وفى الجزء الثانى من الدرس نفسه سوف نختم مبادئ ونظريات انظمة التشغيل ونبدأ بكيفية برمجته واضافته الى نظام التشغيل
المرجع للاستزادة
http://www.brokenthorn.com/Resources/OSDev6.html
http://en.wikipedia.org/wiki/File_system
مع تحياتى وتمنياتى بالتوفيق للجميع
محمد ابراهيم
