بسم الله الرحمن الرحيم
Allocation Of Frames
كل مهمة تحتاج عدد قليل من الصفحات(pages) , ذلك لإكمال على الأقل أمر واحدة(1 instruction) .
على سبيل المثال:
سابقاً شركة IBM 370 تستخدم لكل أمر 6 صفحات (for each instruction 6 pages)
هناك مخططين رئيسيين لتخصيص الصفحات (two major allocation schemes) :
وهما
1- التخصيص الثابتfixed allocation
2-إعطاء الأولوية في التوزيع(priority allocation )
وفي الذاكرة التخيلية (virtual memory )لدينا مشكلتين:
وهما
page replacement ( استبدال الصفحات(: وتعني مَن مِن الصفحات استبدلها؟!!
واستطعنا حلها بمجموعة من الخوارزميات منها (FIFO الداخل أولاً خارج أولاً(
والمشكلة الثانية هي free allocation (التخصيص الحر) : تعني كم مِن الصفحات لكل تطبيقapplication ؟!
وهذا هو الهدف منassembly instruction move وهو نقل الصفحات من مكان إلى آخر وهذا الأمر يحتاج إلى 2page لتحديد destination (المقصد أو الهدف( , وحتى يعمل هذا الأمر بكفاءة يحتاج إلى 6 pages .
لنفرض أعطيت هذا الأمر 4 صفحات(frame )وهو بحاجة إلى 6 حتى يعمل بشكل أفضل
إذن كيف سيعمل ؟؟!!!
سأوضح ذلك بالرسم التالي :
نعلم أن الأمر نقل(move) يحتاج إلى 6صفحات نفرض أن الصفحات المطلوبة هي كالتالي AABBCC وأعطيته فقط 4صفحات BBCC فقط؟
لو أعطينا هذا الأمر فقط4frame يحصل التالي:
1- عندما يُتَرْجم الأمر(decode instruction) يتضح أنه يحتاج يرسل مثلا للخانة A والأمر لايملك سوى 4page إذن يعملpage fault ثم استبدال replacement)) يبدل الصفحةB بـA ثم يُعمل ترجمة( ( decode مرة أخرى للأمر(instruction ) يتضح أنه بحاجة إلى B مرة أخرى إذن للمرة الثانية يلجأ للـpage fault ثم replacement وهكذا دواليك .
|
نلاحظ: الأمرinstruction) ) إلى الآن لم يُنفذ لأننا لم نعطيه الصفحات((frame الكافية لتشغيله لذلك كل تطبيق (application ) لابد أن يكون له حد أدنى لعدد الصفحات pages .
أذن اذا وجد برنامج(program) وسوف أحدد له عدد الصفحات(Frames) هنالك طريقتين:
الأولى: التخصيص الثابت(fixed allocation (
كل البرامج تأخذ عدد معين من frameبغض النظر عن حجم البرنامج.
الثانية: إعطاء الأولوية في التوزيع(priority allocation )
البرامج تعطى frame بحسب الأولويات.
وفيما يلي شرح لكل طريقة:
أولا: التخصيص الثابتfixed allocation
عدد ثابت لجميع المهام مثلاً: لدينا 5 مهام لكل مهمة 5frame .
أي توزيع الصفحات بالتساوي وهذه الطريقة غير جيدة لأنه قد يحصل أن يكون هناك مهمات بأحجام صغيرة وتُعطى صفحات (pages) كثيرة , فالأفضل نعطي عدد الصفحات frames) )بحسب حجم المهمة بحيث لكل مهمة العدد المناسب لها من الصفحات pages) )كيف نعمل ذلك؟!!
ظهر لدينا مايسمى بـالتوزيع النسبي Proportional allocation وينص على :
بناء على حجم المهمة process وحجم غيره نعطيه نسبة ..ويتم ذلك:
بالشكل التالي
مثلا: الذاكرة مقسمة إلى قسمين القسم السفلي بدايته من الصفر إلى عدد معين وهو مخصص لنظام التشغيل (OS) وسبب وضعه هنا للمقاطعة(interrupt) والمساحة الفارغة المتبقية نقسمها إلى frames فلو كان عدد frame الفارغة هو64 ومهمتان(2 process) ,المهمة الأولى تحتاج 10pages والمهمة الثانية تحتاج إلى 127 pages وكلتا المهمتين سيدخلون إلى الذاكرة RAM , والمساحة الفارغة في الذاكرة هي 64 ؟؟
لحل ذلك نقول:
بناء على حجم المهمة (process )نأخذ نسبة معينة ثم نضربها في حجم الذاكرة المسموح وهو 64..
والحل موضح بالشكل:
ثانياً: إعطاء الأولوية في التوزيع(priority allocation )
هنا التعديل لايعتمد على حجم المهمة إنما يأخذ parameter ثابتة وهي process of priority والغي الحجم فعليا.
فإذا وُجِد مهمة p1 تولد page fault فالمفترض أن تعمل استبدال replacement فيتم البحث عن مهمة أخرى الأولوية لها متدنية ويتم استبدالها .
على سبيل المثال:
عندي برنامج Antivirus (المضادات)فله أولوية عالية أعلى من الـWORD فان شغلنا word يأخذ مساحة في الذاكرة أما الـAntivirusعندما يعمل scanيأخذ مجموعة من الصفحات framesفأعطيه frame حتى وان كان صغيراً لأن أولويته عالية.
Global vs. Local Allocation
هناك نوعين من الاستبدال(replacement) :
1- Global Allocation(الاستبدال العالمي):
عندما المهمة تختار الاستبدال(replacement)لاتنظر فقط للصفحة التابعة لها إنما تنظر لصفحتها والصفحات الأخرى,أي ممكن المهمة تأخذ frameمن مهمة أخرى .
مشكلة هذه الطريقة: المهمة دائماً تأخذ من مهام أخرى لعمل استبدال(replacement), فبالتأكيد يوجد مهمة الأولوية لها متدنية, وهذا يؤدي إلى حدوث المجاعة(starvation)حيث أن المهمة التي يتم أخذ الصفحات منها تتأثر ويحصل لها مجاعة وظلم.
2- Local Allocation(الاستبدال المحلي):
عندما المهمة تختار الاستبدال(replacement)تنظر فقط للصفحات التابعة لها.
*************************
اتمنى أن أكون وفقت فيما طرحت
أخيرا أقول:
الحمدالله على كل حال وأن أخطأت فمن نفسي وأن أصبت فمن الله
كتبته: منى عبد الرحمن البريه
المصدر:المحاضرات
OPerating system concept
Comments (3)
Anonymous said
at 4:39 pm on Dec 14, 2007
جزاك الله خير شرحك واضح
Anonymous said
at 5:27 am on Dec 16, 2007
شاكرة لكي أختي مرورك وتعليقك
Anonymous said
at 2:54 pm on Dec 23, 2007
Please fix the text format!
You don't have permission to comment on this page.