تقوم الأقراص بتخزين ملايين ومليارات وتريليونات من بتات البيانات لفترات طويلة ومن غير طاقة
وكل مجموعة من البيانات ذات الصلة ببعضها يطلق عليها ملفات الكمبيوتر (computer files).
ولا شك من أننا واجهنا العديد من أنواع الملفات على الحاسب (النصية وملفات الموسيقى والصور ومقاطع الفيديو).
لكن السؤال هو كيف تعمل هذه الملفات وكيف تحافظ أجهزة الحاسب على تنظيمها جميعاً باستخدام أنظمة الملفات (File Systems)؟
قد يحتوي الملف على بيانات عشوائية وغير منسقة لكن الأكثر فائدة وعملي أكثر هو أن تكون البيانات داخل الملف منظمة بطريقة ما، وهذا ما يسمى تنسيق الملف (File Format).
يمكن أن نقوم نحن وضع معيارنا الخاص، كما يقوم المبرمجون بذلك من وقت لآخر لكن الأفضل هو استخدام معيار ثابت موجود مثل ( MP3 , JPEG ……).
الآن لنرى بعض التنسيقات البسيطة كيف تبدو:
ولنبدأ بأكثر الملفات وضوحاً وهي الملفات النصية TXT:
هذه مثل جميع ملفات الحاسب مجرد قائمة ضخمة من الأرقام المخزنة في شكل ثنائي،
فإذا نظرنا إلى القيم الأولية لملف TXT في التخزين فسيبدو هكذا:
يمكننا عرض هذا كأرقام عشرية بدلاً من ثنائي، لكن هذا لا يساعدنا في قراءة النص.
المفتاح لتفسير هذه البيانات هو معرفة أن ملفات T-X-T تستخدم ASCII ، وهو معيار ترميز الأحرف.
فنجد القيمة الأولى 72 ترسم شكل الحرف الكبير H وبهذه الطريقة نقوم بفك تشفير الملف بأكمله.
تخزين الصوت WAVE:
- الآن لنأخذ مثال أكثر تعقيداً: ملف WAVE ويسمى أيضاُ WAV والذي يخزن الصوت:
فهنا حتى نتمكن من قراءة البيانات بالشكل الصحيح نحتاج إلى معرفة بعض المعلومات، مثل معدل البت (bit rate) وما إذا كان مساراً واحداً أو صوتاُ ستيريو (a single track or stereo).
Metadata البيانات الوصفية:
وهي البيانات التي تخزن في مقدمة الملف ويكون فيها وصف وتعريف عن الملف بشكل كامل وتعرف بـ header.
وهذا ما نراه أول 44 بايت من ملف wav ثم تأتي البيانات الصوتية خلفها مباشرةً ويتم تخزينها كقائمة طويلة من الأرقام، تحتوي على أجزاء تكون نفسها دائما مثل مكان توضيح W-A-V-E وتحتوي الأجزاء الأخرى على أرقام تتغير بناءً على البيانات الموجودة بداخلها.
تمثل هذه القيم سعة الصوت الملتقط عدة مرات في الثانية الواحدة.
مثال: لنرى شكل الموجة عندما نقول: "مرحباً" ونأخذ هذا المقتطف الصغير ونكبره حيث يقوم الميكروفون الموجود في الحاسب أو بالهاتف بأخذ عينات من ضغط الصوت ألاف المرات، يمكن تمثيل كل عينة كرقم.
تعني الأرقام الأكبر ضغط صوت أعلى وهذا ما نسميه السعة (Amplitude).
وهذه الأرقام هي ما يتم تخزينه في ملف WAVE وتكون آلاف السعات لكل ثانية من الصوت.
وعندما يحين وقت تشغيل هذا الملف، يحتاج البرنامج الصوتي إلى مكبرات صوت الكمبيوتر بحيث يتم إصدار شكل الموجة الأصلي.
تخزين الصور النقطية BAMs:
بعد أن تعلمنا تنسيق الملفات لنتحدث عن الصور النقطية أو BAMs التي تخزن الصور.
تتكون الصورة على جهاز الحاسب من عناصر صغيرة مربعة تسمى البيكسل (pixels) وكل بيكسل عبارة عن مزيج من ثلاثة ألوان: الأحمر والأخضر والأزرق
تسمى الألوان الأساسية المضافة (additive primary colors) ويمكن مزجها معاً لإنشاء أي لون آخر على شاشتنا الإلكترونية.
الآن، تمامًا مثل ملفات WAV، تبدأ BMPs بالبيانات الوصفية(metadata)، بالإضافة إلى القيم الأساسية مثل عرض الصورة وارتفاع الصورة وعمق اللون.
على سبيل المثال ، لنفترض أن البيانات الوصفية حددت صورة بعرض 4 بكسل ، وطول 4 بكسل ، مع عمق ألوان 24 بت - 8 بت للأحمر ، و 8 بت للأخضر ، و 8 بت للأزرق
ونعلم أن 8 بت هو نفس البايت الواحد، وأصغر عدد يمكن للبايت تخزينه هو 0، وأكبر عدد هو 255.
وعندها ستبدو بيانات الصورة هكذا تقريباً:
نلاحظ أن أول بكسل لدينا يحتوي على 255 لقيمته الحمراء، و255 للأخضر و255 للأزرق،
هذا يعادل اللون الأحمر بكثافة كاملة، والأخضر بكثافة كاملة، والأزرق بكثافة كاملة، وعندما تمتزج هذه الألوان معًا على شاشة الكمبيوتر تصبح بيضاء، لذا فإن البيكسل الأول لدينا أبيض، ويحتوي البيكسل التالي على قيمة أحمر-أخضر-أزرق أو RGB بقيمة 255 ، 255 ، 0 هذا هو اللون الأصفر والبيكسل بعد ذلك له قيمة RGB تبلغ 0،0،0 هذا هو صفر كثافة لكل شيء ، وهو أسود، والتالي أصفر، ونظرًا لأن البيانات الوصفية(metadata) المحددة كانت صورة 4 × 4 ، فإننا نعلم أننا وصلنا إلى نهاية صفنا الأول من وحدات البيكسل، لذا ، علينا أن ننزل صفًا، القيمة التالية هي 255،255،0 – أي الأصفر وهكذا نقرأ جميع وحدات البيكسل في الصورة 4X4
هذا مثال بسيط لصورة صغيرة لكن يمكننا تخزين هذه الصورة بسهولة في BMP.
ملاحظة: لا يهم إذا كان ملفاً نصياً أو wav أو BMP أو أي تنسيق آخر مثل ملفات ZIP وPPT فبشكل عام هم متشابهون: قوائم طويلة من الأرقام مخزنة كثنائي على جهاز التخزين، وتنسيقات الملفات (file formats) هي المفتاح لقراءة وفهم البيانات الموجودة في داخل الملف.
كيف تقوم أجهزة الحاسب بتخزين الملفات؟
بالرغم من تعدد وسائط التخزين (شريط، أسطوانة أو أقراص أو الدوائر المتكاملة....)
إلا أنه تجريد الأجهزة والبرامج تتيح لنا التفكير في التخزين على أنه صف طويل من الخانات الصغيرة التي تخزن القيم.
في البداية عندما كانت أجهزة الحاسب تقوم بعملية حسابية
فقط مثل حساب جداول نطاق المدفعية
(calculating artillery range tables) كان التخزين بأكمله
يعمل كملف واحد كبير، تبدأ البيانات في بداية التخزين ثم تملأها
بالترتيب مع إنتاج المخرجات حتى سعة التخزين.
ومع ذلك مع تحسن القدرة الحسابية وسعة التخزين أصبح من الممكن والمفيد تخزين أكثر من ملف في وقت واحد.
وأبسط خيار هو تخزين الملفات بشكل متتالية back-to-back لكن نجد انه عندنا مشكلة هو انه يمكن أن يعمل هذا لكن كيف يعرف الكمبيوتر مكان بدء الملفات ونهايتها؟ فأجهزة التخزين ليس لديها أي فكرة عن الملفات فهي مجرد آلة لتخزين الكثير من البتات.
لذلك حتى يعمل هذا نحتاج إلى ملف خاص يسجل مكان وجود ملفات أخرى، ويكون مرتبط بالعديد من الأسماء ولكن المصطلح العام الجيد هو ملف الدليل( Directory File) وغالباً يتم الاحتفاظ به في مقدمة وحدة التخزين. وهكذا يكون مكان الوصول إليه دائماً هو الموقع صفر Location zero.
ملف الدليل( Directory File):
يوجد داخل ملف الدليل أسماء جميع الملفات الأخرى المخزنة, فكل ملف له اسم ، متبوعًا بنقطة ، وينتهي بما يسمى امتداد الملف ، مثل "BMP" أو "WAV"، تلك البرامج تساعد كذلك في تحديد أنواع الملفات.
يخزن ملف الدليل أيضًا البيانات الوصفية(metadata) حول هذه الملفات، مثل وقت إنشائها وإجراء آخر تعديل عليها، ومن هو المالك، وما إذا كان يمكن قراءتها أو الكتابة عليها أو كليهما، ولكن الأهم من ذلك، أن ملف الدليل يحتوي على مكان بدء تخزين هذه الملفات وطولها.
إذا أردنا إضافة ملف أو إزالة ملف أو تغيير اسم ملف أو ما شابه، فعلينا تحديث المعلومات في ملف الدليل.
حيث إنه مثل "فهرس الكتاب" إذا جعلت أحد الفصول أقصر، أو نقلته إلى مكان آخر، يجب عليك تحديث فهرس الكتاب ، وإلا فلن تتطابق أرقام الصفحات.
يعد ملف الدليل وصيانته مثالاً على نظام ملفات "File System" أساسي جدًا، وهو جزء من نظام التشغيل الذي يدير الملفات المخزنة ويتتبعها، ويُطلق على هذا المثال تحديدًا اسم نظام الملفات الثابت (Flat File System)، لأنه يتم تخزينها جميعًا في مستوى واحد، ملف ثم الملف الآخر back-to-back.
وهنا تواجهنا مشكلة لأنه إذا أردنا فرضاً إضافة بعض البيانات لملف "todo.txt" لا نجد هناك مجال للقيام بذلك دون الكتابة فوق جزء من "carrie.bmp".
لذا فإن أنظمة الملفات الحديثة تقوم بأمرين:
أولاً:
يقومون بتخزين الملفات في كتل وهذا يترك مساحة إضافية صغيرة للتغييرات، تسمى slack space أي مساحة مهملة أو فارغة.
وهذا يعني أيضًا أن جميع بيانات الملف تتماشى مع حجم مشترك، مما يبسط الإدارة.
لكن في هذا المخطط يصبح Directory File يحتاج إلى حفظ المسار الذي يخزن فيه كل كتلة block
الثانياً:
تقوم أنظمة الملفات بالسماح بتقسيم الملفات إلى أجزاء وتخزينها عبر العديد من الكتل.
فلنفترض أننا فتحنا "todo.txt”، وقمنا بإضافة بعض العناصر الأخرى ، ثم يصبح الملف أكبر من أن يتم حفظه في كتلة واحدة، ولا نريد استبدال الكتلة المجاورة ، لذلك بدلاً من ذلك ، يخصص نظام الملفات كتلة غير مستخدمة ، والتي يمكن أن تستوعب بيانات إضافية.
وهنا نجد انه باستخدام مخطط نظام ملفات مثل هذا لا يحتاج ملف الدليل إلى تخزين كتلة واحدة فقط لكل ملف، بل قائمة بالكتل لكل ملف.
بهذه الطريقة، يمكننا الحصول على ملفات ذات أحجام متغيرة يمكن توسيعها وتقليصها بسهولة، وذلك ببساطة عن طريق تخصيص الكتل وإلغاء تخصيصها.
حذف ملف:
لنفترض الآن أننا نريد حذف "carrie.bmp". للقيام بذلك، يمكننا ببساطة إزالة الإدخال من ملف الدليل وهذا بدوره يؤدي إلى تحرير كتلة واحدة.
نلاحظ أننا لم نحذف بالفعل بيانات الملف الموجودة في التخزين، بل قمنا فقط بحذف السجل الخاص به، في مرحلة ما، سيتم استبدال هذه الكتلة ببيانات جديدة، ولكن حتى ذلك الحين، تظل موجودة هناك.
وهذه إحدى الطرق التي يمكن من خلالها لفرق مختصي الحاسوب "استرداد" البيانات من أجهزة الكمبيوتر على الرغم من اعتقاد الناس أنها قد تم حذفها.
والآن لنفترض أننا أضفنا المزيد من العناصر إلى (todo.txt)، مما يتسبب في قيام نظام الملفات بتخصيص كتلة أخرى للملف، في هذه الحالة، يتم إعادة تدوير الكتلة المحررة من carrie.bmp، والآن يتم تخزين ملف “todo.txt” الخاص بنا في 3 كتل متباعدة، وأيضًا خارج الترتيب.
يُطلق على الملفات التي يتم تقسيمها عبر وحدات التخزين كما في الصورة اسم: التجزئة(fragmentation).
نجد أن هذه النتيجة لابد منها للملفات التي يتم انشاؤها وحذفها وتعديلها بالنسبة للعديد من تقنيات التخزين، أم بالنسبة للشريط المغناطيسي فهذا غير جيد حيث تتطلب قراءة ملف todo.txtفي الذاكرة للكتلة 1 ثم إعادة التوجيه إلى الكتلة 5 ثم العودة للكتلة 2، وهذا يأخذ وقت كثيراُ ذهاباُ وإياباُ.
أما في أنظمة الملفات الواقعية، قد نقوم بتخزين ملفات كبيرة عبر مئات الكتل ولا نضطر إلى الانتظار لمدة خمس دقائق حتى نفتح ملفاتنا، هنا نجد الحل هو إلغاء التجزئة(defragmentation).
إلغاء التجزئة(defragmentation):
حيث يقوم الكمبيوتر بنسخ بيانات الملفات الموجودة في الكتل ووضعها بجانب بعضها البعض وبالترتيب الصحيح.
الآن بعد أن قمنا بإلغاء التجزئة، يمكننا قراءة ملف todo.txt، الموجود في الكتل من 1 إلى 3، في مسار قراءة واحد وسريع.
ملاحظة:
هذا كله بالنسبة لأنظمة الملفات المسطحة (Flat File Systems)، حيث يتم تخزينها جميعًا في دليل واحد (one directory).
نظام الملفات الهرمي (Hierarchical File System):
إن مع ازدياد سعة التخزين وعدد الملفات الموجودة على أجهزة الكمبيوتر بسرعة كبيرة أصبح من غير العملي تخزين جميع الملفات معاً على مستوى واحد تماماً كما في المستندات في العالم الحقيقي.
فهنا نجد أن من السهل تخزين الملفات ذات الصلة ببعضها في مجلدات ثم يمكننا وضع هذه المجلدات في مجلدات، وهذا ما نسميه نظام الملفات الهرمي (Hierarchical File System)، وهذا ما تقوم به أجهزة الحاسب.
هناك عدة طرق لعمل ذلك لكن سنعود إلى مثالنا السابق لننقل الفكرة الرئيسية.
فنجد أن التغيير الأكبر هو أن ملف الدليل الخاص بنا يجب أن يكون قادرًا على الإشارة ليس فقط إلى الملفات، ولكن أيضًا إلى الدلائل الأخرى.
الآن حتى نتتبع مسار، ما هو دليل وما هو ملف أصبحنا بحاجة إلى المزيد من البيانات الوصفية metadata ليصبح ملف الدليل هذا هو الأعلى والمعروف باسم دليل الجذر Root Directory.
تقع جميع الملفات والمجلدات الأخرى أسفل هذا الدليل على طول مسارات الملفات المختلفة.
حيث يمكننا أن نرى داخل ملف الدليل "الجذر") ( DIR rootلدينا 3 ملفات ودليلين فرعيين: الموسيقى والصور.
فإذا أردنا معرفة ما تم تخزينه في دليل الموسيقى الخاص بنا، فعلينا الانتقال إلى تلك الكتلة وقراءة ملف الدليل الموجود هناك.
نجد أن التنسيق هو نفس دليل الجذر لدينا.
وبالإضافة إلى القدرة على إنشاء تسلسلات هرمية ذات عمق غير محدود، تتيح لنا هذه الطريقة أيضًا التنقل بسهولة بين الملفات، لذا، إذا أردنا نقل "theme.wav" من دليل الجذر إلى دليل الموسيقى، فلا يتعين علينا إعادة ترتيب أي كتل من البيانات، فيمكننا ببساطة تعديل ملفي الدليل، وإزالة إدخال من أحدهما وإضافته إلى آخر.
الأهم من ذلك، أن يبقى ملف theme.wav في الخانة 5.
هذه نظرة عامة وسريعة على المبادئ الأساسية لأنظمة الملفات.