تبليغاتX
کدنویس - روشهاي نوشتن اطلاعات بر روي فلاپي و هارد قسمت دوم:
هارد و كنترلر آن:
براي كنترل اطلاعات در هاردديسك و نحوة ذخيره آن بر روي صفحات مغناطيسي و خواندن محتويات آن به حافظة رم از يك مدار كنترلر استفاده مي‌شود كه معمولاً در كامپيوترهاي XT بر روي يك بورد موسوم به كنترلر هارد بوده و در يك اسلات قرار مي‌گيرد در هاردهاي جديد بر روي خود هاردديسك تعبيه مي‌شود و از يك كارت به عنوان واسط بين كنترلر و هارد و مادربورد استفاده مي‌شود اگر سيستم on board باشد اين واسط يا كارت بر روي مادربورد قرار مي‌گيرد ولي اگر on board نباشد بر روي يك كارت موسوم به مالتي I/ O وجود دارد در بسياري از سيستمهاي on board اين قابليت كه بتوانيم قسمت مربوطه روي مادربورد را غيرفعال نماييم و يك كارت واسط در اسلات‌ها قرار دهيم را فراهم مي‌سازد براي اين كار بايد جامپر مربوط به هارد (مثلاً IPE) را بر روي مادربورد غيرفعال (pisable) و بر روي كارت فعال (Enable) نماييم و آنگاه كارت را در يك اسلات قرار دهيم در اين نوع سيستمها براي اين كار يك سوئيچ يا جامپر وجود دارد با غير فعال كردن اين جامپر با جامپرها مي‌توانيم يك كارت مالتي I/O را در اسلاتها قرار دهيم.
دسترسي به هارد با باياس:
در اين قسمت توابع مربوط به باياس براي دستيابي به اطلاعات هارد را خواهيم آورد ولي هميشه توصيه مي‌شود كه قبل از استفاده از اين توابع از اطلاعاتتان يك پشتوانه تهيه كرده باشيد براي دسترسي به اطلاعات فلاپي‌ و هارد از وقفة 13 H استفاده مي‌شود اين وقفه با توابع مختلف خود قابليت پشتيباني از حداكثر چهار عدد هارد را دارا مي‌باشد.
هنگام اجراي اين وقفه، مقدار رجيستر DL نوع ابزار ذخيره كننده (هارد يا فلاپي)
را مشخص مي‌نمايد. اگر رجيستر DL داراي مقدار 80H باشد منظور هارد شماره يك و اگر
DL = 81H باشد هارد شماره دو مورد نظر مي‌باشد بعضي از توابع فوق فقط مخصوص كامپيوترهاي XI مي‌باشد. با آمدن كامپيوترهاي PS/2 و AT در سال 1981 به بازار، توابع جديدي نيز با خود آوردند كه فقط بر روي اينگونه كامپيوترها قابل اجرا مي‌باشد.
يكي از پارامترهاي مهم در هاردديسك‌ها، اينترليو (Interleave) مي‌باشد چون سرعت چرخش موتور زياد بوده و هميشه نيز روشن مي‌باشد و حركت هد از يك نقطه به نقطة ديگر (از سكتور يا ترك به يك سكتور يا ترك ديگر) كند مي‌باشد بنابراين اگر بخواهيم سكتورهاي پشت سر هم را بخوانيم يا بنويسيم امكان‌پذير نخواهد بود زيرا زمانيكه مثلاً سكتور يك خوانده مي‌شود و هد آماده خواندن سكتور 2 شود منطقه سكتور 2 از زير هد عبور كرده است (سرعت چرخش موتور ثابت و زياد مي‌باشد) بنابراين بايد صبر نمائيم تا يك دور كامل بزند تا به سكتور 2 برسد و اين براي تمامي سكتورها وجود دارد بنابراين براي خواندن يك ترك كامل به صورت فوق بايد ديسك چند بار بچرخد كه به اين حالت گوئيم پارامتر اينترليو n مي‌باشد در هاردهاي جديد اين پارامتر با توجه به تكنولوژي جديد به يك رسيده است و هيچ‌گونه چرخش اضافي نياز نيست.
پارامترها در هارد:
هر الماني در سيستم داراي پارامترهايي مي‌باشد كه بر اساس مقدار آن مي‌توان نسبت به كيفيت آن تصميم‌گيري نمود در اين قسمت سعي خواهيم نمود پارامترهاي مختلف يك هارد را به طور خلاصه شرح دهيم كه شامل اصلاح خطاها، زمان دستيابي مي‌باشد.
اصلاح‌سازي خطا :
هنگام ذخيره شدن اطلاعات در هارد اگر سكتورهاي خراب وجود داشته باشد آنگاه اطلاعات در منطقه‌هاي خراب نيز ذخيره خواهند شد اما اكثر كارخانه‌هاي سازنده هارد، خرابيهاي هارد را در يك جدول قرار مي‌دهند كه توسط سيستم عامل در جدول FAT علامت زده مي‌شود تا چيزي در آن نوشته نشود بعضي از هاردها معمولاً مي‌توانند در حين نوشتن و خواندن، سكتورهاي خراب را تشخيص دهند اين عمل توسط يك كد به نام ECC انجام مي‌گيرد اين كد به صورت خودكار ايجاد شده و در هر سكتور ذخيره مي‌شود اگر يك خطا اتفاق بيافتد اطلاعات مجدداً در جاي ديگري نوشته مي‌شود تا از ذخيرة اطلاعات در مكانهاي خراب ديسك جلوگيري شود اين عمل در اكثر كنترلرهاي IDE قابل انجام مي‌باشد.
يك هارد شامل محتوياتي به غير از اطلاعات استفاده كننده مي‌باشد وقتي يك سكتور فرمت مي‌شود يك جدول شامل اطلاعات كنترلي و اضافي در آن نوشته مي‌شود كه در زمان خواندن و نوشتن اطلاعات در آن سكتور مورد استفاده قرار مي‌گيرد. همچنين فرمت اين اطلاعات نيز متفاوت بوده و به نوع كنترلر بستگي دارد اين اطلاعات شامل شماره سيلندر سكتور و كد ECC مي‌باشد هر سكتور با يك فيلد 13 بايتي با مقدار OOH (ميدان سينكر و نيزاسيون) شروع مي‌شود فيلد بعدي مربوط به ID (كد مشخصه) آن سكتور ميباشد كه در آن، سكتور را معرفي مي‌نمايد. شماره سكتورهاي سيلندر و هد در اين فيلد ذخيره مي‌شوند. اين اطلاعات در سكتور با يك بايت مربوط به ID شروع و با دو بايت مربوط به خطاي ECC تمام مي‌شود. قسمت بعد يك فاصله (gap) مي‌باشد كه براي شروع خواندن و يا نوشتن اطلاعات توسط كنترلر يك فرصت ايجاد مي‌نمايد كنترلر براي خواندن اطلاعات نياز به فرصتي براي خواندن فيلد ID دارد كه اين فرصت توسط اين فاصله به وجود مي‌آيد تا كنترلر به سكتور مناسب دسترسي پيدا كند. همچنين اين فاصله به كنترلر فرصت مي‌دهد تا خود را با قسمتهاي ديگر هماهنگ مجدد نمايد فيلد بعد مربوط به اطلاعات مي‌باشد اين فيلد با يك بايت ID براي معرفي آن شروع مي‌شود و بعد از يك بايت فوق، 512 بايت اطلاعات (فيلد اطلاعات) قرار مي‌گيرد. فيلد اطلاعات با دو بايت مربوط به كد ECC (فيلد اطلاعات با كد ECC) كه كنترلر از آن جهت تعيين منطقه موجود اطلاعات استفاده مي‌نمايد، پايان مي‌پذيرد سكتور با يك فاصله كه كنترلر از آن جهت چك كردن بايتهاي كد ECC استفاده مي‌نمايد به پايان مي‌رسد اين فاصله شامل بايتهايي با مقادير 4EH مي‌باشد. بنابراين هر سكتور (شامل 570 بايت مي‌باشد و با مقدار گفته شده در ظاهر (512 بايت) بسيار متفاوت مي‌باشد). (شكل 14 ـ 11)


GAP4EH ECCDAT4 DATA AM GAP CRCTD S ZK ID SYNC
SYNC : 13 بايت جهت هماهنگ سازي با مقدار OOH.
ID: 2 بايت جهت معرفي سكتور كه معمولاً مقدار آن AIFEH مي‌باشد.
ZD: 2 بايت جهت تعيين تعداد سيلندرها و هدها
S: شماره سكتور كه يك بايت مي‌باشد.
CRCTD: 2 بايت جهت چك كردن خطاي CRC در اطلاعات
GAP : يك فاصله براي كنترلر جهت خواندن اطلاعات از فيلد ID
AM: 2 بايت جهت ID اطلاعات سكتور كه معمولاً مقدار آن A1F8H مي‌باشد.
DATA: 512 بايت مربوط به ذخيره اطلاعات استفاده كننده كه بعداً توسط يك استفاده كننده با يك فايل
ECC – DATA : 2 بايت مربوط به بايتهاي اصلاح سازي (ECC)
GAP: فاصله براي كنترلر جهت چك كردن بايتهاي مربوط به كد ECC
به غير از محدوده‌هاي فوق، يك هارد داراي منطقه‌هاي ديگري نيز مي‌باشد، كه عبارتند از: منطقة رزرو شده، منطقه پارك هد، منطقه سرو يا تركهاي سرو براي هماهنگ سازي مدار الكترونيكي با پالس اطلاعات، اين مناطق در كنترلرهايي كه از روش RLL جهت نوشتن بر روي سطح ديسك استفاده مي‌نمايند به كار برده مي‌شود منطقة رزرو شده كه از نظر باياس نيز غيرقابل شناسايي است براي جايگزيني آن با تركها و سكتورهاي خراب به كار برده مي‌شود (در كنترلرهاي مدرن و جديد) زماني كه سكتور يا سكتورهايي از هارد خراب مي‌شود چنانچه مجدداً هارد را فرمت سطح پائين نمائيم مي‌تواند از مناطق رزرو شده جهت جايگزيني مناطق خراب استفاده نمايد.
زماني كه سيستم خاموش مي‌شود هد خواندن و نوشتن در جاي خود ثابت مي‌ماند و اگر اين منطقه مربوط به اطلاعات باشد هنگام جابه‌جايي سيستم ممكن است كه در اثر برخورد هد به صفحة مغناطيسي اطلاعات آن خراب و از بين برود بنابراين براي جلوگيري از خراب شدن اطلاعات محل هد، يك منطقه خاص را به اين امر اختصاص مي‌دهد كه به آن منطقه پارك هد گويند. اگر كنترلر قديمي باشد بايد هد را با يك نرم افزار مخصوص (مثلاً petools) به منطقة فوق ببريم ولي اگر كنترلر مدرن و جديد باشد به طور اتومات در زمان خاموش شدن سيستم به منطقة پارك خواهد رفت كه به اين نوع‌ها هاردها، اتوپارك گويند اگر هنگام خاموش شدن سيستمتان چراغ‌ هارد آن براي لحظة كوتاه مجدداً روشن شده آنگاه پي خواهيد برد كه هارد شما از نوع اتوپارك مي‌باشد و نيازي به استفاده از نرم‌افزار براي حركت دادن هد و بردن آن به منطقه پارك نخواهيد داشت لازم به توضيح است كه منطقه پارك جزء مناطق ذخيره اطلاعات نمي‌باشد در واقع بدليل روشن بودن هميشگي هارد و چرخش موتور آن، در زمان خاموش شدن سيستم موتور هارد كار يك ژنراتور را انجام داده و برق لازم براي جابجا نمودن هد به منطقه پارك را توليد مي‌نمايد. و بدين دليل چراغ هارد براي لحظه‌اي روشن مي‌شود.
زمان دستيابي :
بازدهي يك هارد با اندازه‌گيري سرعت دستيابي تعيين مي‌شود كارخانه‌هاي سازنده معمولاً زمان بين 10 تا 30 ميلي ثانيه را براي آن در نظر مي‌گيرند. اين زمان، متوسط دستيابي بين دو فايل مي‌باشد. بعضي از كارخانه‌ها از دو پارامتر زمان دستيابي ترك به ترك و زمان دستيابي ماكزيمم براي اندازه‌گيري سرعت هارد استفاده مي‌نمايند زمان دستيابي ترك به ترك عبارتست از زمان لازم براي جابجائي هد از يك سيلندر به سيلندر بعدي و زمان دستيابي حداكثر به زمان لازم براي جابجائي بازوي هد از اولين سيلندر تا آخرين سيلندر هارد اطلاق مي‌شود براي اندازه‌گيري بازدهي يك هارد مي‌توانيم از برنامه‌هايي از قبيل Sysinfo در نورتون Core test در core يا ASQ , CHECKIT , QAPLUS و يا Pcprob استفاده نماييم. اينگونه برنامه‌ها معمولاً سرعت انتقال اطلاعات را با خواندن بزرگترين بلوك ممكن اندازه‌گيري مي‌نمايند. اندازه اين بلوكها به يك سيلندر منحصر مي‌شود و بدين معني است كه هد براي خواندن / نوشتن جابجا نمي‌شود.
همانطور كه مي‌دانيم كنترلرهاي IDE , SCSI , ESDI از نوع مخفي بوده كه در آن پارامترهاي موجود در باياس به عنوان پارامترهاي منطقي تلقي شده و هنگام كار به پارامترهاي فيزيكي در كنترلر ترجمه مي‌شوند. در نتيجه ترجمه اين پارامترها باعث مي‌شود كه اندازه‌گيريهاي انجام شده توسط نرم افزارهايي همچون Sysinfo صحيح و دقيق نباشد و اين بخاطر اين است كه ترجمه يك ترك و عوض شدن آن به همراه خود تا خير ترك به ترك را دارد و اين از دقت اندازه‌گيري مي‌كاهد. موقع اندازه‌گيري زمان دستيابي ترك تا ترك نيز شما با اين مشكل مواجه مي‌شويد براي گرفتن يك جواب صحيح مي‌توانيد دو سكتور موجود در تركهاي متصل بهم را بخوانيد در نتيجه هنگام ترجمه كنترلر، به تعويض ترك نياز نخواهيد داشت و اين عمل زمان دستيابي ترك به ترك با خطاي صفر را به شما خواهد داد.
نتايج بدست آمده زماني كه از نهانگاه نرم افزاري نيز استفاده نماييم شك برانگيز و تقريباً غيرقابل قبول مي‌باشد در سطح نرم‌افزاري . برنامه‌هايي از قبيل Smartdrive يا Pchwik ايجاد نهانگاه نرم‌افزاري مي‌نمايند كه مي‌تواند تأثير بسزايي بر بازدهي و كارآيي هارد داشته باشد هنگام خواندن از هارد، نهانگاه به باياس چنگ زده و خواندن از هارد را مانع مي‌شود و خود اين كار را انجام مي‌دهد زماني كه مجدداً بخواهيد اطلاعات را از هارد بخوانيد. نهانگاه عمل خواندن را قطع كرده و در نهانگاه بدنبال آن اطلاعات مي‌گردد اگر اطلاعات در نهانگاه وجود داشته باشد بدون مراجعه به هارد آنها را در اختيار برنامه قرار مي‌دهد و اگر اطلاعات در نهانگاه نباشد آنگاه به هارد مراجعه كرده و آنها را مي‌خواند كه در هر دو صورت خطاي زيادي را در اندازه‌گيري زمانها به وجود مي‌آورد. بنابراين هنگام اندازه‌گيري بازدهي بايد تعريف نهانگاه نرم‌افزاري را در فايل Config . sys غير فعال نمائيم لازم به توضيح است كه نهانگاه نرم افزاري قسمتي از حافظه رم مي‌باشد كه به عنوان نهانگاه تعريف مي‌شود و يك واسط بين هارد و حافظه رم اصلي مي‌باشد و اين سرعت انتقال اطلاعات را بالا خواهد برد براي تعريف نهانگاه نرم‌افزاري مي‌توان از راه انداز يا درايو SMARTDRIV مربوط به DOS در فايل Config . sys استفاده نمود كه در اين راه‌انداز مقدار حافظة اختصاص يافته به عنوان نهانگاه قابل تعريف مي‌باشد.
نوع ديگر نهانگاه سخت‌افزاري مي‌باشد كه مي‌تواند بر روي كنترلر هارد و يا خود مادربورد سيستم باشد اين نهانگاه به صورت سخت‌افزاري بوده و از وقفه‌هاي باياس استفاده نمي‌نمايد در عوض نهانگاه در سطح سخت‌افزاري بوده و در اندازه‌گيري بازدهي نرم‌افزاري قابل رؤيت نمي‌باشد و تأثيري بر اندازه‌گيري زمان و سرعت‌ هارد توسط نرم‌افزارها ندارد.
نوشته شده توسط علی کرمانیان در پنجشنبه سیزدهم اردیبهشت 1386 ساعت 18:19 | لینک ثابت |
 
offshore