السلام عليكم و رحمة الله و بركاته
كيف حالكم؟ ان شاء الله بخير؟ انا الحمد لله ^_^
في الحقيقة موضوعي هذا سيكون مجرد مقدمة صغيرة عن مسير الذاكرة و كيف يقوم بعمله و ما الاستراتيجيات التي يتبعها...
اولا كمقدمة صغيرة سأتحدث ب
اختصار شديد عن الذاكرة تعريفها و انواعها
الذاكرة يتم فيها حفظ المعطيات بشتى انواعها و يتم استخدامها عند الحاجة
انواعها هي ذاكرة مركزية و ذاكرة ثانوية أي بشكل معادلة رياضية جميلة :rolleyes:
ذاكرة = ذاكرة مركزية + ذاكرة ثانوية ( و كتحليل لهذه المعادلة ) = DD + ram + rom + cache
الذاكرة المركزية فيها : الذاكرة الحية و الميتة :mellow: و cache ( لا اعرف مصطلحها العلمي :blush: )
الذاكرة الثانوية فيها : القرص الصلب DD كما يمكننا ان نظيف الاقراص المضغوطة و الاقراص المرنة و الفلاش ميموري لكن نكتفي بذكر التي تاتي مرفقة مع الحاسوب -_-
الهدف من مسير الذاكرة هو
ليتم فيها حجز الامكنة من اجل البرامج التي تريد التنفيذ اي بمصطلح بسيط ( التأجير :D )
من أجل حماية معطيات البرنامج الموجود بمكانه في الذاكرة
مشاركة المعطيات و المعلومات بين البرامج التي في قيد التنفيذ
مهامه الرائعة :wub:
مراقبة حالة الذاكرة المركزية ( معرفة المساحة الفارغة و المساحة المحجوزة و حجم المساحات المأجرة :rolleyes: )
ايجاد الاستراتيجيات الفعالة لحجز الاماكن في الذاكرة ( و كأنني اتخيله يقول كيف اختار افضل طريقة للتأجير :lol: )
ايجاد التقنيات الفعالة لحجز الاماكن في الذاكرة ( و هنا يقول كيف افوم بالحجز ما أفضل طريقة :lol: )
و في الاخير ايجاد الطرق الفعالة لتحرير الاماكن المحجوزة في الذاكرة
حسنا حسنا الى بعض التفصيل ننطلق الان ;)
لنتعرف قليلا على استراتيجيات المسير في حجز الاماكن في الذاكرة المركزية
توجد استراتيجياتان :
الاولى : استراتيجية المساحة الواحدة او ما يسمى علميا mono programmation
فيها البرنامج لا يتم تقسيمه الى اجزاء او اقسام و انما هنا المسير يأخذ البرنامج باكمله و بحجمه الكامل و يقوم بتحميله الى الذاكرة المركزية و يتم التنفيذ، هيا معي نأخذ مثالا على ذلك صغير :P
فرضا ان ذاكرتنا المركزية سعتها 150 ko و برنامجنا حجمه 100 ko اذن و حسب هذه الاستراتيجية يكون شكل الذاكرة هكذا :

أي انه سيتم تنفيذ برنامج واحد فقط -_-
طبعا طبعا هناك شرط و هو ان تكون سعة البرنامج اقل او مساوية لمساحة الذاكرة و الا فان نظام التشغيل سيعطيك تنبيها و هو ان البرنامج الذي تريد تنفيه اكبر من الذاكرة التي تستعملها
و مسيرنا الرائع ( صرت متيمة بمسير الذاكرة و نظام التشغيل :D ) ليعرف حالة الذاكرة يكفيه ان يستخدم bit واحد فقط 1 ان كانت محجوزة و 0 ان كانت حرة
اتى الان موعد معرفة الايجابيات و السلبيات الخاصة بهذه الاستراتيجية البسيطة :
الايجابيات هي ان هذه الاستراتيجية سهلة جدا اذ كل ما يفعله المسير هو مقارنة احجام البرامج التي تنتظر في طابور الانتظار مع مساحة الذاكرة ثم يحجز ان كانت مناسبة ثم يغير حالة الذاكرة من 0 الى 1 اي ان الذاكرة تعمل الان و ينتظر الى ان ينتهي التنفيذ و ينتقل الى البرنامج التالي ^_^ ، ان لم تكن كافية يرسل تنبيه فتظهر لك نافذة مفادها ان برنامجك اكبر من ذاكرتك ( لذلك عليك ان تجد حلا بنفسك :rolleyes: ) و ينتقل للبرنامج التالي
و من الايجابيات ايضا انها غير مكلفة في الوقت لان برنامجك كاملا موجود في الذاكرة اي ان التنفيذ سيكون سريعا
اما السلبيات :( فهي ان هذه الاستراتيجية استغلالها سيء جدا سواء للذاكرة ام للمعالج المركزي ام الثانوي
بالنسبة للذاكرة تخيلوا معي ذاكرتنا لها حجم كبير ( و لنبقي ب 150 ko )
و برنامجنا حجمه 20 ko
تعالوا معي لنرى كيف ستكون الذاكرة

هذا حقا امر سيء جدا لا يمكننا السكوت عنه :angry:
لقد ضيعنا قدرا كبيرا جدا من الذاكرة لانه لا يمكننا ان نقوم بادراج برنامج ثان تبعا لهذه الاستراتيجية
و ايضا ليس هذا فقط فالبرنامج كما تعلمون يستخدم المعالج المركزي و المعالج الثانوي كمصادر ليقوم بعمله اذ ان المعالج المركزي مثلا من مهامه الحساب و المعالج الثانوي او علميا يسمى canal اختصاصه تنظيم وحدات الادخال و الاخراج حتى يحصل البرنامج على معطياته ليعمل
لنتخيل البرنامج يستخم الان المعالج المركزي فماذا يفعل الثانوي الان؟ أكيد مرتاح و لا يقوم باي عمل <_<
حسنا انتهى البرنامج من المعالج المركزي، بدأ باسعمال الثانوي فماذا سيفعل المركزي؟ واضح سيبقى بدون عمل ايضا
لا لا لا هذا امر سيء جدا بالنسبة لهذه الاستراتيجة اذن سيقول المسير ساغيرها فاستغلالها للموارد او المصادر غير جيد فلنجرب استراتيجة اخرى
ملاحظة صغيرة : زمن تنفيذ البرنامج = زمن انتهاء التنفيذ - زمن ولادة التنفيذ
اتينا للاستراتيجة الثانية : التجزئة المتعددة او ما تسمى علميا multi programmation :
في هذه الاستراتيجة ما يحدث تماما معاكس لسابقتها فالذاكرة تقسم الى اجزاء ( و هذا بتقنيات محددة سنتطرق اليها باختصار فيما بعد ;) ) اذن فالبرنامج هو ايضا يقسم الى اجزاء ( و سنعرف تقنيات ذلك باختصار ) و منه نستنتج ان المعالج المركزي و الثانوي لن يتوقفا عن العمل ابدا في حالة عامة ( هذه الاستراتيجية مجهدة بشكل كبير للموارد و الطاقات :D )
و بالتالي شكل الذاكرة سيكون هكذا

رااائع تم استغلال الذاكرة باكملها :lol: و المعالج الرئيسي و الثانوي لم يرتاحا فهما ينتقلان من جزء الى اخر :rolleyes: و فقط للتنبيه P1 الى P6 ليست برامج باكملها و انما اجزاء من برامج فقط تم تقسيمها بتقنيات محددة
حسنا حسنا حان وقت قليل من التفصيل في هذه الاستراتيجية ;)
لدى المسير خياران في هذه الاستراتيجية و هما
التجزئة المتعددة الثابتة :
و فيها يقوم المسير بتقسيم الذاكرة الى اجزاء تتساوى سعاتها او تختلف و في معظم الاوقات تختلف سعة كل جزء عن الجزء الاخر ثم يقوم بادراج البرامج من طابور الانتظار الى تلك الاجزاء كل برنامج في جزء يساويه او اكبر منه و للادراج عنده طريقتين
الطريقة الاولى و هي الثابتة حيث لكل جزء من الذاكرة طابور انتظار خاص به اي مثلا في الذاكرة عندنا 5 اجزاء مخصصة للبرامج و الاستعمال فسيكون عندنا 5 طوابير انتظار و لادراج برنامج بهذه الطريقة فان المسير يقوم بالمقارنة مع عنصر واحد فقط من الذاكرة اي مقارنة الاحجام ( بالمناسبة ليتم ادراج برنامج في طابور معين فان المسير يستند الى ال @ الابتدائية حتى يقوم بذلك و بصراحة فانا اجهل التفصيلات :blush: و لمن يعلم فليفدنا كلنا )
و الطريقة الثانية تسمى المتحركة (على ما اظن ) هي طابور واحد فقط لكل الذاكرة اي ان كل البرامج في طابور واحد و لتحميل برنامج الى الذاكرة فان المسير يقوم بمقارنة حجم البرنامج مع جميع احجام الاجزاء الموجودة في الذاكرة و يدرجها في المكان المناسب
و لكي يقوم مسيرنا بمراقبة حالة الذاكرة فانه يستخدم ما يسمى ب جدول PDT أو جدول حالة الاجزاء فيه 3 خانات
خانة : تبين الوضعية محجوز = 1 او لا = 0
خانة : فيها حجم البرنامج
خانة : فيها ال @ الابتدائية لموقع البرنامج في الذاكرة
من بين ايجابيات هذا الخيار
تنفيذ عدة برامج في وقت واحد و السهولة في الادراج
السلبيات
وجود الفراغات الداخلية هذه صورة توضح قليلا

كما نرى حتى في هذه الاستراتيجية الذاكرة لم تسلم المسكينة فهناك فراغات داخلية لا يمكن استعمالها...امرنا لله فلنحاول بالخيار الثاني :D
الخيار الثاني...يتبع في موضوع اخر ان شاء الله :lol:
ارجو من كل من قرأه ان يصحح لي اخطائي و يفيدني بما يعرف حتى ازيل ما أجهل