دستگاه هاي
ذخيره سازي ثانوي :
دونوع دستگاه
ذخيره سازي ثانوي وجود دارد :
-
دستگاه ذخيره سازي با
دسترسي مستقيم (DASD)
-
دستگاههاي سريال
دستگاه هاي
ذخيره سازي با دسترسي مستقيم :
اين نوع
دستگاه ها به اين دليل با اين نام خوانده مي شوند كه امكان دسترسي مستقيم به داده
ها را فراهم مي كند .شامل 2 نوع دستگاه زير مي با شند:
1)
Magnetic
Disk (ديسك مغناطيسي) : اين نوع دستگاه ها شامل هاردديسك ها و فلاپي ديسك ها مي باشد هاردديسك ها
ظرفيت بالاتر نسبت به فلاپي ديسك ها دارند و هزينه كمتري به ازاي هر بيت خواهند
داشت . فلاپي ديسك ها ظرفيت پايين ، سرعت كم و بسيار ارزان هستند .
2)
Nonmagnetic
Disk (ديسك هاي غير مغناطيسي مثلا نوري) : ديسك هاي
فشرده (CD)از
اين نوع دستگاه ها مي باشند .
دستگاه هاي
سريال:
اين نوع
دستگاه ها به اين دليل با اين نام خوانده مي شود كه امكان دسترسي به داده ها به
صورت پشت سرهم و نوبتي است . در اين نوع دستگاه ها يك داده read يا write
نمي شود مگر در صورتي كه همه داده هاي قبلي read يا write
شده باشند .نوارهاي مغناطيسي از اين نوع دستگاه ها مي باشند .
ساختار ديسك
:
اطلاعات در
سطح يك يا تعداد بيشتري پلاتر بصورت track هاي پشت سرهم ذخيره مي شوند .

سطح :
-
يك سطح از track هاي هم محور تشكيل شده است .
-
يك track
از تعدادي سكتور تشكيل شده است .
-
يك سكتور كوچكترين جزء قابل آدرس دهي در ديسك مي باشد .

* سوال :
زماني كه دستور read
صادر مي شود ، چه اتفاقاتي رخ مي دهد ؟
جواب : سيستم
عامل (OS)
سطح ، track
و سكتور صحيح را پيدا مي كند و سكتور را در يك ناحيه ي خاص در RAM
كه بافر ناميده مي شود ، مي خواند سپس بايت مورد نظر را در ميان بافر پيدا مي كند
.
سيلندر :
-
سيلندر يك مجموعه از track
ها كه بر روي هم قرار گرفته اند (هم شعاع ).
-
اطلاعات روي يك سيلندر
، بدون حركت بازوي نگهدارنده هدهاي read / write قابل دسترسي است .
-
حركت بازو ، جستجو (Seeking)
ناميده مي شود .

ظرفيت :
-
تعداد سيلندر ها =
تعداد track
ها
-
ظرفيت track = تعداد سكتور ها در هر track
× تعداد بايت ها در هر track
-
ظرفيت سيلندر= تعداد track
ها در هر سيلندر× ظرفيت track
-
ظرفيت هارد = تعداد
سيلندرها × ظرفيت سيلندر .
* اگر تعداد بايت هاي يك فايل را بدانيم مي
توان با استفاده از اين روابط فضايي از ديسك كه آن فايل به آن نياز دارد را محاسبه
كرد .
مثال :
-
خصوصيات فايل :
· ركوردهاي با اندازه ثابت .
· تعدادركوردها = 50000
· اندازه ركورد = 256 بايت
-
خصوصيات ديسك :
· تعداد بايت ها در هر سكتور = 512
· تعداد سكتور ها در
هر track = 63
· تعداد track ها در هر سيلندر = 16
· تعداد سيلندر ها = 4092
چه تعداد
سيلندر لازم است ؟
راه حل :
512 ÷ 256 = 2 تعداد ركورد ها در هر سكتور
2 × 63 = 126 trackتعداد سكتور ها در هر
16 × 126
= 2016 تعداد ركورد ها در هر سيلندر
5000 ÷
2016 ≈ 24.8 تعداد
سيلندرها
روش ديگر :
512 ÷ 256 = 2 تعداد ركوردها در هر سكتور
50000 ÷ 2 = 25000 تعداد سكتور ها
63 × 16 = 1008 تعداد سكتورها در هر سيلندر
25000 ÷ 1008
≈ 24.8 سيلندر
توجه :
-
ديسك نمي تواند تعداد
سيلندر نزديك به هم داشته باشد . دراين مورد فايل برروی تعداد زيادي سيلندر
پخش مي شود .
-
2 راه براي سازماندهي
داده ها روي ديسك وجود دارد :
*
بوسيله سكتور
* بوسيله
دسته بندي كه توسط كاربر تعريف مي شود .
سازماندهي track
ها بوسيله سكتور :
گمارش فيزيكي سكتورها :
-
ساده ترين نمايش اين
است كه سكتور ها بصورت بخش هاي مجاور و با اندازه ثابت كنارهم قرار بگيرند .
-
اين ممكن است از نظر
منطقي كفايت کند اما از نظر فيزيكي نه !

ممكن است براي خواندن يك فايل 11 گردش انجام
شود .
سوال : كنترلر ديسك ، ممكن است به زمان پردازش داده ها قبل
از اينكه آماده دريافت آنها باشد به آنها نياز داشته باشد .
در اين حالت ممكن است سكتور آغازين را از دست دهيم ؟
جواب :Interleaving
(پخش بصورت لفافي) است .
Interleaving يعني وقفه هاي بين سكتورهاي
فيزيكي را با سكتورهاي مجاور logical پر كنيم .
مثلاً براي 11 سكتور با فاكتور Interleaving = 3 همانطور كه در شكل ديده مي شود تنها 3
گردش خواهيم داشت .

معمولاً سرعت
كنترلر با اين كار 1 برابر افزايش پيدا مي كند . در اين حالت سكتور ها بصورت logical و physical
مجاور هم قرار گرفته اند .
كلاستر :
-
file
fragmentation يك بخش از سيستم عامل است كه وظيفه مديريت فايل ها
را به عهده دارد و بخش هاي logical يك فايل را در ميان موقعيت
های فيزيكي آنها قرار مي دهد .
-
كلاستر يك تعداد ثابت
سكتورهاي مجاور هم مي باشند file
manager يك تعداد كلاستر را به فايل تخصيص مي دهد .
-
ممكن است در آخرين
كلاستر فايل ، فضاي بدون استفاده اي وجود داشته باشد . اين فضا در تكه تكه سازي
داخلي بكار مي رود . به عنوان مثاب اگر اندازه سكتور 512 بايت باشد ؛ اندازه كلاستور
، 2 سكتور است و فايل حاوي 10 بايت باشد كلاستور 1024 تخصيص داده مي شود .
-
File
manager حاوي جدول تخصيص جاي فايل (FAT) مي باشد كه حاوي محل
هر كلاستر در ديسك مي باشد .
حوزه (Extent)
:
حوزه يك گروه
از كلاستور هاي مجاور است . اگر فايل در يك حوزه ذخيره شده باشد جستجوي فايل فقط
در آن حوزه انجام مي شود . اگر تعداد كافي كلاستر براي نگهداري فايل وجود نداشته
باشد ، فايل به 2 يا تعداد بيشتري حوزه تقسيم مي
شود .
تكه تكه سازي
(fragmentation):
Fragmentation به دلايل زير انجام مي شود :
1) ركوردها دقيقاً با 1 سكتور fit
نمي شود :
-
اگر اندازه ركورد 200 بايت باشد و اندازه سكتور 512 بايت باشد سكتور در 2 ركورد قرار مي گيرد و 112 بايت
فضاي غير مفيد در هر سكتور مي باشد اين فضا در fragment
كردن بكار مي رود .
-
راه حل اين است كه اجازه
دهيم ركوردها در 2 سكتور جاي بگيرند اما در اين مورد براي خواندن فايل بايد به هر
دو سكتور دسترسي داشته باشيم .
2) به دليل استفاده از كلاسترها :
-
اگر اندازه فايل مضربي
از اندازه كلاستر نبود ، آخرين كلاستر طور ناقص استفاده مي شود .
-
وقتي كه ديسك حاوي فايل
با اندازه بزرگ باشد در حالتي كه پردازش بصورت ترتيبي و متوالي انجام مي شود از
كلاستر با اندازه بزرگ استفاده مي شود .
-
بر عكس در حالتي كه
ديسك حاوي فايل با اندازه كوچك باشد از كلاستر با اندازه كوچك استفاده مي شود اين در حاليست كه پردازش بصورت تصادفي و random
انجام مي شود .
سازماندهي track ها بوسيله بلوك :
-
trackها مي توانند به جاي اينكه به سكتورتقسيم بندي
شوند به بلوك هايي كه خود كاربر تعريف مي كند تقسيم بندي شوند .
-
بلوك معمولاً از تعداد
صحيحي ركوردهاي logical
تشكيل مي شود .
-
فاكتور بلوكه سازي ،
تعداد ركوردهاي ذخيره شده درهر بلوك مي باشد .
-
نتيجه اين است كه هيچ fragment
داخلي وجود نداردو ركوردها در 2 بلوك جستجو نمي شوند .
-
هر بلوك مي تواند حاوي
بلوك هاي فرعي باشد .
Nondata overhead
:
-
ميزاني از فضاست كه
براي پر كردن كه براي پركردن به
جاي داده بكار مي رود .
-
ديسك هاي برمبناي سكتور
آدرس دهي مي شوند : در ابتداي هر سكتور ، يك سري اطلاعات مثل
آدرس سكتور ، آدرس track ، وضعيت (در صورتيكه معيوب
باشد .) ذخيره مي شود . فاصله هايي بين سكتور ها وجود دارد .
-
ديسك هايي كه بر مبناي
بلوك سازماندهي شده اند : بلوك هاي فرعي و Gap بين بلوك ها بخشي از
اين فضاي اضافي مي باشند اما بيشتر اين فضا مربوط به آدرس دهي بر مبناي سكتور مي باشد .
مثال :
* خصوصيات
ديسك :
- ديسك بر مبناي
بلوك آدرس دهي شده است .
- اندازه track
= 20000 بايت.
- فضاي Non data over head در هر بلوك = 300 بايت .
* خصوصيات
فايل :
- اندازه ركورد = 100
بايت .
* چه تعداد
ركورد در هر track
با فاكتورهاي زير مي توان ذخيره كرد ؟
Ø
فاكتور بلوكه سازي = 10
Ø
فاكتور بلوكه سازي = 60
راه حل :
Ø
فاكتور بلوكه سازي = 10
ü
اندازه داده ها در بلوك
هاي فرعي = 1000 بايت .
ü
Non
data overhead = 300 بايت .
ü
تعداد بلوك هايي كه مي
توان در يك track
قرار داد :[20000 ÷1300] =
[15.38] = 15
ü
تعداد ركورد ها در هر track
: 15 × 10
= 150
Ø
فاكتور بلوكه سازي =60
ü
اندازه داده در بلوك
فرعي = 6000 بايت .
ü
Non
data overhead = 300 بايت .
ü
تعداد بلوك هايي كه مي
توان در يك track
قرار داد. [20000÷6300] = [3.17]=3
ü
تعداد ركوردها در هر track
: ×60
=1803
هزينه دسترسي به ديسك :
دسترسي ديسك
به 3 عمل فيزيكي مشخص تقسيم مي شود و هر كدام هزينه هاي خود را دارد :
1)
seek
time : (زمان جستجو) زمان لازم براي حركت بازوي read يا write
به سيلندر صحيح .
2)
Rotational
delay : (تاخير چرخشي) زماني كه طول مي كشد تا ديسك چرخيده و سكتور مورد
نظر زير هد read
يا write
قرار بگيرد .
3)
Transfer
time : (زمان انتقال) زماني كه طول مي كشد تا اطلاعات منتقل شود .
مثال :
* ویژگي هاي ديسك :
ü
متوسط زمان جستجو = 8 ميلي ثانيه
ü
متوسط زمان تاخير چرخشي
=3 ميلي ثانيه
ü
بيشترين تاخير چرخشي = 6 ميلي ثانيه
ü
سرعت spindle
= 1000 rpm
ü
تعداد سكتور ها در هر track
= 170
ü
اندازه سكتور = 512 بايت
* متوسط زمان
خواندن يك سكتورچقدر است ؟
زمان انتقال = (زمان چرخش ÷ تعداد سكتورها در
هر track
)
زمان انتقال = ((1/10000)× 60 ) ÷ 170 = 0.035 ميلي ثانيه
متوسط زمان
كل = متوسط زمان جستجو + متوسط تاخير چرخشي +زمان انتقال
متوسط زمان كل = 8 + 3 + 0.035 = 11.035 ميلي ثانيه
مقايسه
دسترسي ترتيبي با تصادفي :
* ويژگي هاي فايل :
ü
تعداد ركوردها = 34000
ü
اندازه ركورد = 256
بايت
ü
فايل از 100 track
كه بصورت تصادفي پراكنده شده است ، تشكيل شده است .
*خواندن فايل بصورت ترتيبي :
ü
متوسط زمان جستجو = 8
ميلي ثانيه
ü
متوسط تاخير چرخشي = 3
ميلي ثانيه
ü
متوسط زمان انتقال در
هر track
= 6 ميلي ثانيه 60 ÷
10000 = 0.006
ü
متوسط زمان كل در هر track
: 8
+3 + 6 = 17 ميلي ثانيه
ü
زمان كل براي فايل : 17×100
= 1700 ميلي ثانيه = 1.7 ثانيه
.
* خواندن
فايل بصورت تصادفي :
ü
متوسط زمان كل براي
خواندن همه ركوردها = تعداد ركوردها × متوسط
زمان خواندن هر ركورد
34000× 11.035 = 375.19 ثانيه
ديسك به
عنوان يك گلوگاه :
فرايند
پردازش توسط ديسك محدود مي شود به اين معني كه شبكه و CPU بايد يك مدت زمان
طولاني منتظر بمانند تا داده ها از ديسك منتقل شود .
تكنيك هاي
مختلفي براي حل مسئله وجود دارد :
-
عملكرد چند برنامه اي :
يعني اينكه ماداميكه CPU منتظر ديسك است ، يك كار ديگر
انجام دهد .
-
Strip
كردن ديسك : بلوك هاي مختلف يك فايل را در هاردهاي مختلف قرار دهيد پردازش
هاي مستقل به يك فايل دسترسي پيدا مي كنند بدون اينكه هيچ مزاحمتي در كار هم ايجاد
كنند .
-
RAM
disk : يك بخش عمده اي از RAM براي شبيه سازي رفتار ديسك
فيزيكي از هر لحاظ به جز سرعت و تغيير پذيري ، پيكر بندي شده است .
-
Disk
Cache : يك بلوك عمده RAM براي نگهداري داده هاي ديسك
قرارداده شده است . زماني كه از ديسك خواسته مي شود ابتدا Cache چك مي شود . اگر آن
داده در اين قسمت وجود نداشته باشد سراغ ديسك رفته و داده ها ي ما جايگزين برخي داده هاي موجود در Cache مي شوند.





