بسم الله الرحمن الرحيم
غالبا توجد أماكن فارغة في الذاكرة متفرقة لتسهيل عملية البحث عن المكان الفارغ عند الحاجة إليه هناك 3طرق:
1-خارطةالبيت:من المعروف أنه كل حاجة في الذاكرة تتخزن في بلوك أستخدم مصفوفة ذات بعد واحد محتوياتها إماالقيمة (0) او(1) وهي حسب نظام التشغيل تعني مكان فارغ أو لا,ورقم ال index عبارة عن رقم البلوك الشاغر.
كيف نحسب رقم البلوك الفارغ؟
عدد البيت لل((word *عدد (word) اللي كل قيم البيت فيها)(0)(إذاكان النظام يعتبر(0)مكان فارغ+رقم مكان أول بيت(1) بالنسبة لل (word)
مثال:إذا كان متجه البيت =
0000000000110000111001111110001111
فإن رقم أول بلوك فاضي=>8 * 1 + 2 = 10
هذه الطريقة سهلة وسريعة لكنها تحتاج إلى زيادة مكان (لكل بلوك زيادة بيت)
فإذا كان حجم البلوك=12^2بايت
حجم الديسك=30^2 بايت
فإن عدد البيت الزيادة=>12^2/30^2=18^2 بيت
*تكون هذه الخارطة مخزنة في الديسك الصلب فإذا أشتغلت على الجهاز توضع في الذاكرة
هذه ممكن تسبب مشكلة عدم توافق القيم لأنها تتغير في الذاكرة عندما استخدم الأمان الفارغة
المفروض إنه تتغيرفي الديسك لحل هذة المشكلة:
مثال:كان البيت(x) =1 في الذاكرة ,البيت(x) =0 في الديسك
Set bit[x] = 1 في الديسك
Allocate block[i](حجز هذا المكان)
Set bit[x] = 1 في الذاكرة
هذه الطريقة الأولى.
2-التجميع (Grouping):
في أول بلوك فارغ يخزن كل عناوين البلوكات الفارغة
ميزته:نقدر نلاقي أكبر عدد عناوين البلوكات الفارغة بسرعة
3-التعداد(Counting):
إذا كان عندي بلوكات فارغة متسلسلة فإنه يخزن عنوان أول مكان فارغ +عدد البلوك المتصلة بها.
ميزته:إذا كان عندي بيانات تحتاج لتخزين متسلسل
§ Bit Vector 11000011000000111001111110001111
|
§ Grouping ( n == 3 )
Block 2 à 3, 4, 5
Block 5 à 8, 9, 10
Block 10 à 11, 12, 13
Block 13 à 17, 18, 25
Block 25 à 26, 27
|
§ Counting (remember, contiguous allocation)
Block 2 à 4
Block 8 à 6
Block 17 à 2
Block 25 à 3
|
الاسم:يازي أحمد الادهم العنزي
الرقم الجامعي:421054900
المصدر:ocw.kfupm.edu.sa/user062/ICS43104/File%20System%20Implementatoon.ppt
Comments (0)
You don't have permission to comment on this page.