Banner 468

استمع للقرآن الكريم بصوت المقرئ مشاري بن راشد العفاسي.











04‏/09‏/2009

القطاع (sector) و عنونة القطاعات و ترجمة القطاعات

0 التعليقات
 
عندما يود الحاسب تخزين بعض البيانات فإنه طبعاً يخزنها على شكل ملفات ، وعليه عند تخزين أي ملف أن يسجل موقع كل ملف حتى يمكنه عند الحاجة إلى استرجاع الملف الرجوع إلى نفس المكان مرة أخرى ، وتخزن مواقع جميع الملفات المخزنة في القرص في منطقة مخصصة لهذا الغرض تسمى جدول مواقع الملفات FAT ، وحتى يفعل ذلك يجب أن يقوم بإعطاء كل بايت في القرص رقماً ( مثل عناوين البيوت ) ، وإذا استعملنا هذه الطريقة فإن جدول مواقع الملفات ( ومع كثرة عدد الملفات ) سيستهلك الكثير من مساحة القرص في تخزين مواقع الملفات (أنظر أيضاً قسم تخزين الملفات في القطاعات xxxx).
لذلك عندما يتعامل الحاسب مع الملفات في القرص الصلب فإنه لا يتعامل معها على حجم بايتات ، لذلك يقسم القرص كل مسار من المسارات إلى أقسام صغيرة متساوية تسمى " قطاعات " ومفردها " قطاع " ، وفي القرص الصلب يكون طول القطاع 512 بايت ( وليس 512 كيلوبايت ) ، وهذا الطول ( 512 بايت ) دائماً ثابت بغض النظر عن نوع أو الحجم الكلي للقرص الصلب ، لذلك يعتبر القطاع أصغر وحدة قياسية للتعامل مع القرص الصلب .
وإذا تكلمنا عن أنظمة الملفات المختلفة نجد أن بعض أنظمة الملفات تتعامل مع القطاع كوحدة القرص القياسية ( مثل نظام HPFS الخاص بنظام التشغيل OS/2 ) بينما بعض الأنظمة الأخرى مثل FAT يعتبر القطاع وحدة صغيرة ويستخدم وحدة تسمى " الكلستر" كوحدة القرص القياسية .
ولكن هل يمكن أن يكون حجم القطاع أكبر أو أصغر من 512 ؟ الجواب هو ممكن ولكن ليس في الأقراص الصلبة ، وهذا راجع لتصميم كل نوع من وحدات التخزين . فما الذي يجعل حجم القطاع 512 بايت ، لماذا لا يكون أقل أو أكثر ؟ في الحقيقة إن تحديد حجم القطاع بـ 512 بايت لهو ما يشبه اتفاق أهل الصناعة على ذلك لتصبح الأقراص متوافقة مع أنظمة التشغيل المختلفة .
وإذا نظرنا لتوزيع القطاعات على المسارات المختلفة على القرص الواحد نجد أن المسار يمكن أن يكون أطول ما يمكن ( في الطرف الخارجي للقرص ) أو أقصر ما يمكن ( في الطرف الداخلي للقرص ) فهل يكون عدد القطاعات في المسارات الصغيرة مساوي لعددها في المسارات الكبيرة ؟ في الحقيقة تختلف إجابة هذا السؤال بالنسبة للأقراص الجديدة عنها في القديمة ، ففي الأقراص القديمة نجد أن عدد القطاعات في كل المسارات متماثلة بينما في الأقراص الجديدة عددها يعتمد على حجم المسار حيث يتم بذلك استغلال مساحة القرص بشكل أفضل ، وتسمى هذه العملية "Multible Zone Recording" واختصاراً MZR كما يمكن أن يسمى بأسامي أخرى مثل Zoned Constant Angular Velocity واختصاراً ZCAV واسم آخر هو zone bit recording وكلها أسماء لنفس التقنية .
إن القطاعات في أي مسار مرقمة بأرقام ليمكن التفريق بينها ، وبما أن المسار عبارة عن دائرة ليس فيها بداية ونهاية فلا بد من تحديد أحد القطاعات ليكون بداية المسار وبالتالي يكون رقمه 1 ويتم ترقيم المسارات بعد ذلك ، فيطرح السؤال التالي نفسه : متى يتم ترقيم القطاعات في القرص ؟ هل يتم ذلك في المصنع أم بواسطة المستخدم ؟ وهل يمكن إعادة ترقيمها بعد ترقيمها للمرة الأولى ؟ كل هذه التساؤلات نجيب عليها في قسم تهيئة القرص الصلب .

عنونة القطاعات

لذلك فإن القرص الصلب يتعامل مع البيانات ( بالكتابة للقرص أو القراءة منه ) على شكل قطاعات كل منها 512 بايت لأن القطاع هي أصغر وحدة قياسية في القرص الصلب ، فلا بد إذاً من وجود طريقة للقرص الصلب لتمييز كل قطاع من القطاعات التي يحتويها عن غيرها ليستطيع نظام التشغيل طلب البيانات التي يريدها ، وبالفعل يوجد لكل قطاع عنوان يتكون من ثلاثة أشياء :
  • رقم السلندر Cylinder
  • رقم الرأس Head
  • رقم القطاع Sector في المسار
فإذا أراد نظام التشغيل (مثل وندوز ) طلب بيانات معينة فإنه يطلبها بتحديد عناوين القطاعات التي يحتويها بطريقة رقم السلندر والرأس والقطاع التي يحتوي البيانات المطلوبة ، مثلاً ( 520 - 5 - 6 ) تعني السلندر رقم 520 والرأس رقم 5 والقطاع السادس ، وبهذه الطريقة يتمكن نظام التشغيل من تحديد أي موضع للبيانات يريدها ، وتسمى هذه الطريقة " عنونة CHS " وبالانجليزية (CHS addressing) .

عندما قام مهندسو شركة IBM بتصميم هذا النظام كان لابد - لأمور خاصة بالتقنية - أن يحددوا طول أقصى لكل واحد من الأعداد فمثلاً جعلوا الحد الأقصى لعدد السلندرات هو 1024 سلندر والرؤوس 255 والقطاعات 63 قطاعاً ، لذلك لا يمكن استخدام أي قرص يحوي أكثر من 1024 سلندر أو أكثر من 255 رأس أو أكثر من 63 قطاع في كل مسار ، لذلك فإن هناك حد أعلى لحجم القرص الصلب وهو يساوي :
عدد السلندرات الأفصى( 1024 سلندر) × عدد الرؤوس الأقصى(255 رأس ) × عدد القطاعات الأقصى (63 قطاع لكل مسار) ×عدد البايتات في كل كلستر (512 بايت ) = 1024 × 255 × 63 × 512 = 8422686720 بايت = 8225280 كيلوبايت = 8032.5 ميجابايت
فتبرز هنا المشكلة : إذا كان للقرص الصلب أكثر من 1024 سلندر فكيف سيتمكن نظام التشغيل من الوصول إلى السلندرات الأعلى من 1024؟ ليس هذا فقط ، إنما كان اختيار الحد الأقصى لعدد الرؤوس كبيراً حيث أن أحدث الأقراص الصلبة لا تستخدم في العادة أكثر من 16 رأس ، فذلك يجعل الحد الأقصى لسعة قرص بـ 16 رأس = 1024 × 16 × 63 × 512528482304 بايت =516096 كيلوبايت = 504 ميجابايت ، وهذه السعة قليلة بكل ما في الكلمة من معنى فما هو الحل ؟
دعني هنا أورد مثالاً لتوضيح كيف تعمل عنونة CHS في قرص صلب ، لنفرض أن برنامجاً ما يود قراءة الملف c:\autoexec.bat من القرص الصلب فالخطوات التي ستحدث بين الأجزاء المختلفة هي ( مع الكثير من التبسيط ) :
  • البرنامج يقول لنظام التشغيل ( وندوز مثلاً ) : أود الحصول على الملف c:\autoexec.bat
  • نظام التشغيل يقول للبيوس : أود الحصول على الملف ذو العنوان C 687 H 2 S 44 ( أي عنوان CHS )
  • البيوس يقول لبينية IDE : أود الحصول على C 687 H2 S 44
تقوم بينية IDE ببساطة باستخلاص البيانات من القطاع المذكور وتسليمها لنظام التشغيل الذي يسلمها للبرنامج .


ترجمة القطاعات sector translation

ذكرت أن الأقراص الصلبة حتى الحديثة منها لا تحتوي على أكثر ن 16 رأس ، لذلك فإن الحد الأقصى البالغ 255 رأس لا يستغل بكامله مما يخفض حجم القرص المسموح به ، و للتغلب على هكذا مشكلة يمكننا بطريقة تحايلية استعمال العدد الأقصى للرؤوس وذلك بخداع الحاسب وإيهامه أن هناك عدد من الرؤوس أكبر من الموجود فعلياً فمثلاً إذا كان لدينا قرص صلب ذو 2048 سلندر و 16 رأس و 63 قطاع لكل مسار فإننا نخبر الحاسب أن هذا القرص له 1024 سلندر و 32 رأس و 63 قطاع وبالتالي يتعامل معه على أنه ذو سعة أكبر ، وإذا أراد الحاسب مثلاً قراءة البيانات من قطاع غير موجود ( مثلاً قطاع على الرأس 32 ) فإنه يتم ترجمة هذا الموقع إلى الموقع الصحيح على القرص وبالتالي يتم عمل طبقة ترجمة بين الحاسب وبين القرص الصلب دعنا نورد مثال على ذلك بنفس الطريقة السابقة :
  • البرنامج يقول لنظام التشغيل ( وندوز مثلاً ) : أود الحصول على الملف c:\windows\media\mysound.wav
  • نظام التشغيل يقول للبيوس : أود الحصول على الملف ذو العنوان C 896 H30 S 54
  • البيوس لبينية IDE : أود الحصول على البيانات في C 896 H30 S 54
  • بينية IDE : بما أن قرصي الصلب هذا يستخدم ترجمة القطاعات فإنني سأحول هذا العنوان إلى العنوان الفعلي على القرص ، والعنوان الفعلي هو C 1563 H3 S40 ، يستخلص البيانات ويسلمها للبيوس لتسلم للبرنامج .
وفي هذه الحالة تسمى ( 2048 سلندر و 16 رأس 63 قطاع ) " التركيبة الفيزيائية" للقرص لأن هذا هو التركيب الحقيقي له بينما تسمى التركيبة ( 1024 سلندر و 32 رأس و 63 قطاع ) " التركيبة المنطقية" لأن الحاسب يتعامل مع القرص على هذا الأساس ، وتسمى عملية التحويل من التركيبة المنطقية إلى التركيبة الفيزيائية " ترجمة القطاعات " .


LBA

بما أن القرص الصلب يمكنه التحويل من التركيبة المنطقية إلى الفيزيائية فهذا يعني أنها بإمكانه أيضاً التحويل من أي تركيبة إلى التركيبة الفيزيائية ، و يعتبر LBA ( اختصار لـ Logical Block Adressing ) من الأنظمة المستخدمة على نطاق واسع وفيها يتم ترقيم القطاعات على القرص الصلب بأعداد تبدأ بـ 1 ، ويحول القرص الصلب العدد إلى تركيبة CHS المكافئة لها ، وفي ذلك تبسيط لعملية تركيب القرص الصلب حيث يستعاض عن ادخال CHS والبيانات الأخرى برقم LBA واحد .
يمكن أيضاً استخدام نظام LBA في أشرطة التخزين الاحتياطية ، وأقراص سكزي دائماً تستخدم LBA ، بل أي جهاز تخزين بيانات يقسم إلى أجزاء متساوية الطول يمكنه استعمال LBA .

Leave a Reply