صفحه: 1/2
مقدمه به هر وسيله اي كه توانايي حفظ و نگهداري اطلاعات را داشته باشد به گونه اي كه كاربر بتواند در هر زمان به داده ها ي آن دستيابي ( access ) داشته باشد را حافظه مي گويند .
حافظه ها به دو دسته كلي تقسيم مي شوند : 1- حافظه اوليه (اصلي – درون ماشيني) كه پردازنده جهت اجراي برنامه ها مستقيما با آن سر و كار دارد .2- حافظه ثانويه ( جانبي- برون ماشين ) كه جهت ضبط اطلاعات فايل ها به كار مي روند .ما در اين مقاله تنها با حافظه هاي جانبي سر و كار داريم و از يك نظر مي توان گفت سيستم هاي كامپيوتري از دو بخش محيط درون ماشيني و محيط برون ماشيني تشكيل يافته اند . منظور از محيط درون ماشيني پردازنده . حافظه اصلي و عناصر داخلي كامپيوتر است و منظور از محيط درون ماشيني تجهيزات جانبي آن مثل هارد ديسك پرينتر و غيره مي باشد .
ما در اين مقاله با ذخيره سازي اطلاعات بر روي تجهيزات برون ماشيني سر و كار داريم .
ويژگي هاي كلي حافظه
فرار و غير فرار : حافظه هايي كه با رفتن برق اطلاعات آنها از بين مي رود حافظه هاي فرار
( Volatile ) و آنهايي كه با رفتن برق داده هاي خود را حفظ مي كنند غير فرار ( non volatile ) مي باشند و حافظه هاي اصلي اغلب فرار و حافظه هاي جانبي غير فرار مي باشند.
خواندني يا نوشتني : بعضي حافظه ها مثل RAM يا هارد ديسك خواندني نوشتني هستند . ولي بعضي ديگر مثل CD_ROM فقط خواندني هستند . به خواندن اطلاعات از حافظه اصطلاحا واكشي يا fetch گفته مي شود .
آدرس دهي : هر حافظه اي داراي يك شيوه آدرس دهي مي باشد كه به كمك آن خانه هايش دستيابي مي گردد . مثلا حافظه RAM آرايه اي از بايتهاست كه هر كدام يك آدرس ( عدد يكتا ) دارند . يا هارد ديسك به صورت سه جفت عدد ( شماره هد- شماره سيلندر – شماره سكتور ) آدرس دهي مي شوند .
ظرفيت : ظرفيت حافظه بر حسب بيت يا بايت بيان مي گردد .
زمان دستيابي ( Access time ) : از لحظه اي كه دستور خواندن و نوشتن داده مي شود تا هنگامي كه حافظه مورد نظر مورد دستيابي قرار مي گيرد را زمان دستيابي گويند . مثلا زمان دستيابي حافظه RAM حدود 120 نانو ثانيه و زمان دستيابي ديسك حدود 30 ميلي ثانيه است . يعني از اين نظر RAM در حدود 250 برابر سريعتر از ديسك مي باشد . نرخ يا سرعت انتقال ( Transfer rate ): مقدار اطلاعاتي است كه در واحد زمان از حافظه قابل انتقال است و يكي از واحد هاي آن بايت در ثانيه است .
سلسله مراتب حافظه ها :
در كامپيوتر هاي امروزي عموما سلسله مراتبي از حافظه ( مثل cache ,RAM و ديسك ) استفاده مي شود . چند علت براي اين امر عبارت است از :
1- حافظه اصلي RAM در حال حاضر همچنان محدوديت ظرفيتي دارند ( مثلا حدود 256MB يا 1GB )
2- فقط بخشي از اطلاعات برنامه هاي در حال اجرا لازم است در حافظه اصلي قرار گيرد و لازم نيست تمام بخشهاي همه برنامه ها به حافظه RAM آورده شود .
3- حافظه هاي سريع گران هستند .
4- اندازه اطلاعاتي كه انسان امروزي زخيره مي كند خيلي زياد است و به صورت تصاعدي نيز زيادتر مي شود . اين حجم عظيم داده ها را نمي توان در حافظه اصلي نگهداري كرد .
5- حافظه هاي درون ماشيني اغلب فرار هستند و داده هاي آنها با رفتن برق از بين مي رود .
6- بسياري از برنامه ها به حافظه اي بيشتر از RAM نياز دارند . در اين حال مثلا از بخشي از ديسك به عنوان حافظه مجازي استفاده مي كنند .
7- هنگامي كه چندين پردازنده مي خواهند به صورت موازي به اطلاعاتي دسترسي داشته باشند مي توان آن اطلاعات را مثلا بر روي ديسك به اشتراك گذاشت.
پس در عمل جهت به كارگيري مزاياي حافظه هاي درون ماشيني ( سرعت زياد ) و برون ماشيني ( ظرفيت بالا و هزينه كم و ماندگار بودن ) تركيبي از آن دو در كامپيوتر ها استفاده كرد .
در ليستي از حافظه كه در زير آمده به ترتيب ظرفيت ها افزايش يافته و سرعت و هزينه ها كاهش مي يابد :
1-ثبات 2-حافظه هاي cache يا نهان 3- حافظه اصلي 4- حافظه فلاش (Flash ) 5- ديسك مغناطيسي 6- ديسك نوري 7- نوار مغناطيسي
منظور از ذخيره و بازيابي اطلاعات(ساختار فايل)
منظور از ساختار فايل سازماندهي داده ها روي دستگاههاي ذخيره سازي ثانويه است . به عبارت ديگر نحوه ذخيره داده ها در فايل ها و عمليات لازم براي دستيابي به داده ها بر روي حافظه هاي جانبي . بهينه كردن طراحي ساختار فايل ها ممكن است باعث گردد تا برنامه ها صدها بار سريعتر اجرا گردند . امروزه اغلب براي ذخيره و بازيابي از حافظه ديسك استفاده مي گردد و مشكل اصلي در طراحي ساختار فايل زمان نسبتا زيادي است كه براي بازيابي اطلاعات از ديسك لازم است . مهمترين فاكتور در طراحي ساختار فايلها به حداقل رساندن تعداد دستيابي به ديسك و به حداكثر رساندن احتمال وجود اطلاعات مورد نياز در حافظه اصلي است .
در اين طراحي سعي بر آن است كه اطلاعات مورد نياز را در صورت امكان تنها با يك بار مراجعه به ديسك بدست آوريم . زماني كه محتويات فايلها تغيير نمي كند رسيدن به اين هدف چندان سخت نيست ولي هنگامي كه فايلها بر اثر حذف و اضافه كوچك و بزرگ مي شوند حفظ اين ويژگي مشكل مي گردد .
بديهي است كه قبل از بررسي انواع ساختار فايلها لازم است كه شناخت كافي از حافظه هاي مورد نياز براي فايلها را داشته باشيم .
اگر فايلها فقط در حافظه اصلي نگهداري مي شدند نيازي به علم ساختار فايلها نبود . اين نياز از آنجا ناشي مي شود كه زمان دستيابي در حافظه جانبي بسيار بيشتر از زمان دستيابي به حافظه اصلي است و از طرف ديگر زمان دستيابي براي همه داده ها در حافظه جانبي يكسان نمي باشد .
تاريخچه طراحي ساختار فايل
در ابتدا فايلها بر روي رسانه نوار ذخيره مي شدند و بدين دليل دستيابي به صورت ترتيبي بود و زمان دستيابي متناسب با اندازه فايل زياد مي شد . امروزه با گسترش ديسكها از نوارها تنها جهت بايگاني استفاده مي گردد .
يكي از روشهاي بهبود زمان دستيابي استفاده از انديسهايي بود كه به فايلها اضافه مي شدند . بدين ترتيب ليستي از كليدها و يا اشاره گر ها در يك فايل كوچك ذخيره مي شوند كه جستجو در آن با سرعت بيشتري انجام مي پذيرد . اين انديسها ساده مشابه فايل هاي داده اي طبيعي ترتيبي داشته و با رشد فايله انديسها نيز رشد كرده و مديريت آنها مشكل مي گردد .
در دهه 1960 ساختار درختي مطرح و استفاده گرديد . ولي درخت ها با حذف و اضافه شدن ركوردها ممكن است به صورت نا مناسبي رشد كرده و در نتيجه باعث گردد كه جستجوي يك ركورد به دستيابي هاي متعددي به ديسك نياز داشته باشد .
در سال 1963 درخت دودويي خود تنظيم ( AVL ) براي اطلاعات موجود در حافظه ابداع شد . بعد ازآن سعي شد اين ساختار به نحوي براي فايلها نيز استفاده گردد . مشكل اصلي آن بود كه حتي با يك درخت AVL دها دستيابي براي جست و جوي يك ركورد حتي در يك فايل با اندازه متوسط مورد نياز است . ده سال بعد اين مشكل با ابداع درخت B (B-tree ) بر طرف گرديد . هر چند كه سرعت دستيابي درخت B خيلي خوب است ولي دستيابي ترتيبي در آن كارآمد نمي باشد . اين مشكل با اضافه كردن يك ليست پيوندي به سطح پاييني درخت B بر طرف گرديد . تركيب درخت B و ليست پيوندي را درخت B مي گويند . سيستم هاي تجاري زيادي بر مبناي درختهاي B و B+ پديد آمدند .
استفاده از درخت B تضمين مي كند كه جستجوي يك ركورد از ميان ميليون ها ركورد تنها با سه يا چهار بار مراجعه به ديسك امكان پذير است . همچنين با استفاده از درخت B با حذف و اضافه ركوردها كارآيي تغيير نمي كند .
با آنكه توانايي جستجوي اطلاعات با 3 يا 4 بار دستيابي خيلي خوب است ولي اگر بخواهيم داده ها را با يك دستيابي بدست آوريم از روش در هم سازي ( hashing ) استفاده مي كنيم . روش درهم سازي براي فايلهايي كه چندان تغيير نمي كنند مناسب است . البته با در هم سازي پويا مي توان اطلاعات را با يك يا حداكثر دو بار دستيابي به ديسك بدست آورد و اين ربطي به اندازه فايل ندارد .
انواع حافظه هاي جانبي
انواع حافظه هاي جانبي را از نظر تكنولوژي ساخت مي توان به چهار دسته زير تقسيم كرد :
1- تكنولوژي الكترو مكانيكي: كارت و نوار منگنه شدني
2- تكنولوژي الكترومغناطيسي : نوار مغناطيسي و ديسك و طبله
3- تكنولوژي الكترو ابتيك : ديسك نوري
4- تكنولوژي مغناطيسي نوري : ديسكهاي MD
در ادامه ويژگي هاي كلي حافظه نوار كاغذي و ديسك نوري و CD و DVD و حافظه هاي مغناطيسي را برسي مي كنيم .
نوار مغناطيسي
نوار مغاطيسي اصولا براي پردازش ترتيبي يا پي در پي اطلاعات استفاده مي گردد . از نظر تكنولوژي ساخت نوارها را مي توان به 4 دسته زير تقسيم كرد
1- ريل به ريل 2- نوار كارتريج 3- نوار كاست 4- نوار صوتي ( منطبق شده با كامپيوتر)
فرق نوار كارتريج با نوار ريل به ريل آن است كه كارتريج ها در يك محفظه پلاستيكي قرار داده شده اند تا در مقابل گرد و خاك محافظت گردند .
نحوه ذخيره داده ها بر روي نوار به صورت رشته هاي بيتي بر روي شيارهايي است كه در سطح نوار وجود دارد . بيتهاي يك كاراكتر در عرض نوار ذخيره مي گردند . از نظر تعداد شيارها دو نوع نوار 7 شياره و 9 شياره وجود دارند . يكي از شيارهاي نوار جهت كنترل خطا ( بيت پريتي ) استفاده مي شود البته درنوار دو نوع پريتي وجود دارد يكي بيت پريتي عرضي و ديگري بيت پريتي طولي . شكل زير اين موضوع را نشان مي دهد .
بيت پريتي عرضي به ازاء هر كاراكتر و بيت پريتي طولي به ازاء هر بلوك ذخيره مي شوند
چگالي : به تعداد بيتهاي قابل ضبط در هر اينج نوار چگالي گفته مي شود . چگالي در نوار با واحد بيت در اينچ بيان مي گردد كه با توجه به نحوه ي ذخيره عرضي كاراكترها در شيارها معادل همان بايت در اينچ يا كاراكتر در اينچ مي باشد
گپ: به فضاي بلا استفاده بين دو گروه ( بلاك ) از كاراكترها گپ گفته مي شود .به گپ حافظه هرز نيز گفته مي شود در شكل زير بين دو بلوك B1,B2 حافظه هرز IBG وجود دارد :
براي آنكه هد بتواند داده هاي موجود بر روي نوار را بخواند لازم است به سرعت مناسب و يكنواختي به نام سرعت حس برسد از طرف ديگر همان توقف فضايي جهت رسيدن سرعت حس به سرعت صفر مورد نياز است . در واقع حافظه ي Gap جهت توقف هد يا حركت دوباره آن استفاده مي شود .
با در نظر گرفتن شكلهاي زير:
فايل به صورت بلاكهايي به صورت پشت سر هم روي نوار ذخيره مي شوند . هر بلوك مجموعه اي از ركوردها مي باشد . بر روي يك نوار مي توان چندين فايل را ذخيره كرد كه در اين حالت هر فايل يك علامت ابتداي فايل و يك علامت پايان فايل دارد . پارامترهاي اساسي يك نوار عبارتند از :سرعت نوار – چگالي و نرخ انتقال
از يك نظر پارامترهاي يك نوار را مي توان به دو دسته كلي زير تقسيم كرد :
الف) پارامترهاي ظرفيتي كه عبارتند از 1- چگالي 2- طول نوار ( غالبا با واحد فوت )3- اندازه ها كه معمولا بين 3/ تا75/ اينچ هستند
ب) پارامترهاي زماني كه عبارتند از :
1- سرعت لغزش نوار( اينچ در ثانيه )
2- نرخ انتقال ( بايت در ثانيه )
3- اندازه حركت – توقف بر حسب ميلي ثانيه
نرخ انتقال به دو صورت اسمي و واقعي بيان مي شود نرخ اسمي توسط كارخانه سازنده بيان شده و نرخ انتقال واقعي يا مؤثر قابل محاسبه مي باشد .
دستيابي ترتيبي در نوارها سريع است . نوارها فشرده بوده و شرايط محيطي مختلف را به خوبي تحمل مي كنند . حمل و انتقال و نگهداري آنها ساده است و ارزانتر از ديسكها هستند .
همانطور كه قبلا گفتيم امروزه از نوارها تنها براي ارشيو و بايگاني استفاده مي شود . به عبارت ديگر نوارها يكي از انواع حافظه ها ي نوع سوم به شمار مي آيند .
ديسك مغناطيسي
از آنجا كه نحوه دستيابي به صورت تصادفي مي باشد اصطلاحا به آن DASD يا Direct Access
Device گفته مي شود . از جنبه هاي مختلفي مي توان ديسك را به صورت هاي زير تقسيم بندي كرد :
الف: از نظر توانايي جا بهجا شدن ديسكها به دو دسته ثابت (fixed) و قابل جابه جايي تقسيم مي شوند.
ب: از نظر نوع هد به دو دسته هد ثابت (Fixed head) و هد متحرك تقسيم مي شوند . در اغلب ديسكهاي امروزي بازوي هد مي تواند در راستاي شعاع حركت كند و از شياري به شيار ديگر برود . در ديسكهائي با هد ثابت هر شيار براي خود هدي دارد و بدين ترتيب بازوي هد حركت نمي كند . ديسكهاي با هد ثابت سريعتر و گرانتر مي باشند.
ج: از نظر جنس صفحه به دو دسته ديسك سخت و فلاپي تقسيم مي شوند . در ديسك سخت صفحات از جنس المنيوم بوده و در فلاپي از نوع پلاستيك مي باشند .
د: از نظر تعداد صفحات به دو دسته تك صفحه اي و چند صفحه اي تقسيم مي شوند .ديسكهاي چند صفحه اي را گاهي اوقات پك مي نامند . ديسكي با n صفحه تعداد 2n رويه دارد كه گاهي رويه هاي بالايي و پاييني جهت حفاظت استفاده شده و 2n-2 رويه ديگر جهت ذخيره سازي به كار مي روند . در بعضي از ديسكها تما 2n رويه براي ضبط اطلاعات استفاده مي شود .
تقسيمات ديسك
ديسكها از تقسيمات زير استفاده مي كنند :
شيار : به دواير هم مركز بر روي رويه ها شيار گفته مي شود .
استوانه:به شيارهاي هم شعاع بر روي رويه هاي مختلف استوانه گويند .
قطاع يا سكتور :هر شيار از تعدادي سكتور تشكيل مي شود .
شيارها معمولا از بيرون به سمت داخل و از صفر شماره گذاري مي شوند . در شيارهاي داخلي بيتها به همديگر نزديكتراند . در هر سكتور اغلب نيم كيلو يا 512 بايت اطلاعات ذخيره مي شود .
فرمت بندي ديسك
شيارها را مي توان به دو صورت سخت افزاري و نرم افزاري تقسيم بندي كرد . در نوع سخت افزاري تقسيم شيار به سكتور ها از قبل توسط كارخانه سازنده انجام شده و ثابت باقي مي ماند :
ولي در قالب بندي نرم افزاري تقسيم بندي سكتور ها به صورت نرم افزاري (اغلب توسط سيستم عامل ) انجام مي پذيرد و در اين حال لازم است كه در ابتدا ي هر سكتور مشخصاتي كنترلي نظير طول هر سكتور ذخيره گردد :