الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

من يدخل معي في كتاب modern operating system

مغلق
بدأه برق في 25 أكتوبر 2004 · 47 رد · 5,078 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني الأحباء..

أنا الآن بصدد شرح كتاب modern operating system لل مؤلف Tanenbum

وقد دخلت إلى حد ما في فصل process .

فمن يريد أن يدخل معي في الشرح لكي نساعد بعضنا .

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#2

ممكن انا اساعدك يا اخي بس بأوعدك انه راح اكون على مقدرة من اني اشتغل يوم لاخميس والجمعة من كل اسبوع فضلا عن الإجازات طبعا حشتغل فيها .

نموت وتحيا ...................فلسطين .

#3

تمام.

هذا بريدي لكي نتواصل

cpp_gtkmm@hotmail.com

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#4

أخي الكريم انا جاهز تماما لأي إضافة ولكن ليس بخصوص هذا الكتاب بل بخصوص الموضوع المطروح مثلا قمتم بالتساؤل او الإفادة عن موضوع المعالجة وانواعها فأنا جاهز للدخزل وحياكم الله

#5

وانا ايضا اريد ان اشارك معك و قد اشتريت الكتاب بالفعل

ENG.ABDO.FCI@GMAIL.COM

ENG_ABDO_FCI@YAHOO.COM

ارجو ان نتواصل معاً

#6

السلام عليكم

متى نبدأ النقاش فى هذا الموضوع

#7

الا يوجد ردود :(

اخوانى ..ارجوا التفاعل مع الموضوع

#8
اقتباس
إخواني الأحباء..

أنا الآن بصدد شرح كتاب modern operating system لل مؤلف Tanenbum

وقد دخلت إلى حد ما في فصل process .

فمن يريد أن يدخل معي في الشرح لكي نساعد بعضنا .

اين هذا الكلام <_< ...اخى برق اعرف انك تتفاعل مع معظم الموضوعات فى المنتدى

ولكنى اتعجب من عدم تفاعل الاعضاء مع هذا الموضوع :unsure:

ارجو من المشرفين الغاء هذاالموضوع او اغلاقه

لانه من الواضح انه ليس هناك من يتقبله وشكراً

#9

عندى سؤال

يا ترى انا هفضل اكلم نفسى كده كتيييييييييييير :( :( :( :( :( :( :( :( :( :( <_< <_< <_< :s :s :s :s

#10

هل من الممكن الحصول علي وصلة لتنزيل هذا الكتاب؟؟

وجزاكم الله خيرا

#11

السلام عليكم

انا معكم في الشرح والمساعدة

وهذا رابط الكتاب

OSystem

وهذا ايميلي للتواصل

Tv2x@msn.com

والرجاء التفاعل والشرح يكون بالتفصيل وبسرعه ... باااااااااي

#12

يااااااااااه اخيـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــراً

اقتباس
وهذا رابط الكتاب

OSystem

شكراً يا اخى على الرابط

ونتمنى بدء العمل سريعاً

#13

فيه أيه يا جماعه

كتاب modern operating system من أهم الكتب

و أحنا مستنيين الشرح بفارغ الصبر

فأبتدوا فيه حتى لو حاجه بسيطه

لا تراجع و لا إستسلام

#14

هو أنتم نسيتوا الموضوع و لا أيه

لا تراجع و لا إستسلام

#15

ايه الاخبار ياجماعة احنا مستنيين

#16

يا اخ برق ...انت مشغول اليومين دول ولا حاجه؟

ولو حضرتك مشغول يا ريت اى حد تانى من الاعضاء يبدأ...او نرتب نفسنا ونبدأ نذاكر احنا

#17

انا مستوى كويس فى الانجليزية و جارى تحميل الكتاب الان وساقوم بشرح اجزاء بسيطة ولكن اظن انى احتاج مساعدة من الاعضاء

فى ذاللك

من سيبداء معى

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 5 أغسطس 2005 في 04:15

_____________________________

C Language && Windwos_API

_____________________________

#18

وانا معاك ....ايه رايك نبدأ فى الفصل الاول او الثانى؟

#19

أنا آسف جدا لتأخري عليكم.

كنتم فين من زمان.

المهم.........

أنا كنت قد قطعت شوطا لا بأس به في هذا المجال ، ثم حددت هدفي فيه وأنا في طريقي للتخصص فيه إن شاء الله.

بمعنى

اكتشفت أنه (ليس سهلا) أن تتخصص في نظام التشغيل في أكثر من موضوع ، وقد يكون سهلا ، ولكن يجب أن تبدأ بموضوع وتتقنه فإذا شعرت أنك وصلت إلى مرحلة الخبير انتقل إلى ما بعده وهكذا.

على العموم سأتابعكم ، ولكن ليس بصورة مستمرة لأني هذه الأيام مشغول بدورة شبكات و دروس البرمجة في اللينوكس .

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#20
اقتباس
أنا آسف جدا لتأخري عليكم.

كنتم فين من زمان.

المهم.........

أنا كنت قد قطعت شوطا لا بأس به في هذا المجال ، ثم حددت هدفي فيه وأنا في طريقي للتخصص فيه إن شاء الله.

بمعنى

اكتشفت أنه (ليس سهلا) أن تتخصص في نظام التشغيل في أكثر من موضوع ، وقد يكون سهلا ، ولكن يجب أن تبدأ بموضوع وتتقنه فإذا شعرت أنك وصلت إلى مرحلة الخبير انتقل إلى ما بعده وهكذا.

على العموم سأتابعكم ، ولكن ليس بصورة مستمرة لأني هذه الأيام مشغول بدورة شبكات و دروس البرمجة في اللينوكس .

ماشى الكلام يا اخ برق ...احنا ان شاء الله هنعتمد على نفسنا ونبدأ قريب

بس خليك معانا عشان لو حصل اى اخطاء ...و يا ريت اضافات منك

#21

طيب يا اخ حماده انا بدأت فى الكتاب وتقريبأ هانتهى من الفصل الأول بس هاكتب جزء بسيط منه :( لان

الظروف مش مساعدانى(مذنوق فى الدورات وكمان ان باكلمكم من مركز نت )

توكلنا على الله :rolleyes:

MODERN OPERATING SYSTEMS

Second Idition

For the author

Andrew Tanenbaum

السلام عليكم ورحمة الله وبركاته...

كعادتى عند قراءة اى كتاب فأن اول جزء انظر اليه وابحث عنه هو

about the author ولكننى فوجئت بأننى لم اجد هذا الجزء فى بداية الكتاب وبحثت عنه فوجدته فى اخر صفحه بالكتاب (لا اعرف اذا كان هذا عيب فى النسخ الغير مرخصه ام لا ) ولكنى ادعوكم ان تقرأوا هذا الجزء فقد قام هذا الرجل بانجازات قيمه فى علوم الحاسب (خاصة نظم التشغيل والمترجمات)

(operating systems and compilers)

كى لا اطيل عليكم اريد ان نبدأ فى شرح الكتاب

الفصل الاول وهو عباره عن مقدمه

اجهزة الحاسبات الحديثه تحتوى على اكثر من معالج وذاكره للتخزين المؤقت و عدة اقراص تخزين وطابعه وغيره

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

وضع نظام التشغيل بالنسبه للحاسب Placement of Operating System

نظام الحاسب يتكون من عدة اجزاء تتكامل مع بعضها لاداء الغرض المطلوب ترتيبها كما ياتى من الاسفل لاعلى

(اى من الاجزاء الداخليه الى البرامج الظاهره للمستخدم)

اولاً: العتاد

Hardware

ويتكون من مستويان:

الجزء الاول:Physical devices

وهو عباره عن مجموعه من الدوائر المتكامله و الاسلاك و مولدات الطاقه وانابيب الكاثود وهى تخص المهندس الكهربى

الجزء الثانى:Microarchitecture

وهى غالباً ما تحتوى على مجموعه من المسجلات (registers ) التى توجد داخل المعالج cpu وايضأ تحتوى على ال data bus ---> و الغرض منها تنفيذ بعض العمليات والتى يمكن ان تستغرق لفه واحده one cycle او اكثر وهذه التعليمات يمكنها استخدام المسجلات

كلاً من التعليمات وال hardware يتعامل معهم مبرمج لغة الاسمبلى assembly عن طريق ما يسمى بال

ISA(instructio set architecture)

وفى هذا المستوى يتم التحكم فى اجهزة الادخال والاخراج عن طريق تحميل بعض القيم فى ال registers

فعلى سبيل المثال يمكن التحكم فى floppy disk عن طريق تحميل الdesk address & memory address وغيرها من القيم فى registers الخاصه به وفى الناحيه العمليه نحتاج الى قدر اكثر من هذه المعلومات كما ان التوقيت يلعب دور مهم

ولاخفاء كل هذا التعقيد تم تصميم -------> "نظام التشغيل"

ثانياً:operating system

وياتى بعد ذلك فى الترتيب نظام التشغيل ثم البرامج التطبيقيه والتى لا تعتبر جزء من النظام

.......ولان نظام التشغيل يعمل فى kernel mode or supervisor mode فهو محمى من المستخدم عن طريق ال hardware (بغض النظر عن المعالجات القديمه التى لا توفر اى نوع من الحمايه)

هناك بعض الانظمه لا تعمل فى ال kernel mode مثل ال embedded systems

و ال interpreted systems

.......وهناك بعض البرامج التى تعمل فى ال user mode ولكنها تساعد النظام فى اداء مهام خاصه به مثل البرامج التى تقوم بالتحكم فى كلمات المرورpass word

ولكن السؤال الان

ما هو نظام التشغيل؟

كثير من المستخدمين لاجهزة الحاسبات لديهم خبره فى التعامل مع نظم التشغيل ولكن القليل يعرف ماهية نظم التشغيل وذلك لان نظام التشغيل يقوم بوظيفتين غير مترابطتين وهما

Operating systems as an extended machine

فهو بالفعل آله ممتده (اى امتداد للاله الطبيعيه "الميكانيكيه") ويمكنك ان تلاحظ هذه العمليه خلال تعاملك مع نظامك فانت عندما تتعامل مع النظام تتعامل معه كآله اخرى (او كآله ممتده) بغض النظر عن النظام الرئيسى للحاسب

مثلاً عندما تقوم بوضع ملف على ال floppy disk فانت تهتم فقط بنسخ الملف وفتح الfloppy disk والذى غالباً ما يمثل ب"ايقونه" وبعد ذلك تقوم بلصق الملف ....إذن فأنت فى هذه الحاله لا تضع فى الاعتبار تحريك مؤشر الكتابه head على القرص وتحديد المساحه الخاليه للكتابه فيها وتحديد الاتجاه (قراءه او كتابه ) وغير ذلك من التعقيد ....(و الكاتب يوفر فى كتابه مثال يوضح الفكره بطريقه رائعه)

Operating systems as resource manager

لكى تعرف اهمية نظام التشغيل فى هذه النقطه ...لك ان تتخيل ان ثلاته برامج يعملوا معاً فى نفس الوقت وكل منهم يقوم باستخدام الطابعه فى اخراج البيانات ....تخيل هيئة الورقه المطبوعه التى تحتوى على عدة اسطر من كل برنامج ...ولذلك ياتى دور نظام التشغيل كمنظم للموارد مثل الذاكره والاجهزه المختلفه

......يعرض الكاتب بعد ذلك تاريخ نظام التشغيل تبعاً لتطور هيئة واستخدام الحاسبات فى ازمنه مختلفه

..ولن اقوم بالتحدث عن هذا الجزء لانى اريدكم ان تقرأوه بعنايه

تصنيف نظم التشغيل :-

يمكن تصنيف نظم التشغيل طبقاً للتالى

Mainframe operaing system

وهى حاسبات عملاقه فى حجم الغرف وتستخدم فى مراكز بيانات بعض الشركات حتى الان واختلافها عن الحاسبات الشخصيه فى السعه التخزينيهthousands of gigabytes واجهزة الادخال والاخراج

وفى بعض الاحيان تستخدم ك web servers

وانظمة التشغيل الخاصه بهذه الاجهزه توفر ثلاث خدمات

Batch

وهى معالجة البيانات بدون اى تفاعل او تدخل من المستخدم

Transaction processing

ويناول التعامل مع عدد ضخم جداً من الوظائف والمهام الصغيره مثل airline reservation

Time sharing

يسمح لعدد كبير من المستخدمين باستخدام جهاز واحد فى نفس الوقت

ومن امثلة هذه الانظمه os/360

Server operating systems

وهو مستوى اقل من السابق وغالباً ما يستخدم كا internet provider

ومن امثلة نظم التشغيل الخاصه به unix, win2000,linux

Multiprocessor operating systems

Personal operaing systems

Windows, macintosh ,linux

Real-time operating systems

الوقت يعتبر عنصر مفتاحى هام فى هذا النوع من الانظمه وغالبأ ما يستخدم فى التحكم الصناعى فى المؤسسات الصناعيه

من امثلة هذه الانظمه

QNX,VX works

Embedded operating systems

غالباً ما تستخدم مع الاجهزه التى غى حجم الجيب (اجهزة الجيب والحاسبات الكفيه)

من امثلة هذه الانظمه

PalmOS , windows CE

Smart card operating systems

فى حجم الكروت الصغيره

معذره فلا استطيع الاطاله اكثر من ذلك...ارجو ان تسامحونى

وانتظر ردودكم على الموضوع

#23

عمل رائع أخى عبد الواحد

و منتظرين البقيه

لا تراجع و لا إستسلام

#24

ايه دا يا جماعه ...انا كنت مشغول اليومين اللى فاتوا وما دخلتش نت بقالى فتره

وتوقعت انى لما ادخل تانى على المنتدى الاقى الموضوع تقدم شويه

لكن مفيش تفاعل خالص ....ليه كده

#25

طب على العموم احنا بدأنا فى حاجه ولازم نبقى قد كلامنا و نكملها بإذن الله

ان هكمل الفصل فى الفصل الاول بس ياريت الاقى تفاعل مع الموضوع

:rolleyes: توكلنا على الله

انهارده هنتطرق لموضوع hardware او عتاد الحاسب

لان نظام التشغيل يتعامل مباشرة مع عتاد الحاسب hardware

فكان من المطلوب عند التطرق لدراسة نظم التشغيل التعرف على الهاردوير الى حد كبير مثل التعامل مع

cpu,memory ,io,system buses

اولاً: المعالجات

تقوم بتنفيذ جميع العمليات على 3 خطوات ..

fetch-->decode-->execute

اى يقوم اولا باحضار البيانات من الذاكره وبعد ذلك يقوم بفك تشفيرها لتحديد نوع التعليمه ثم يقوم بالتنفيذ بعد ذلك ..يحدث هذا مع كل عمليه الى ان يتم تنفيذ البرنامج بالكامل

ولكل معالج instruction set

اى مجموعة التعليمات الخاصه به ولا يمكن لمعالج ان ينفذ التعليمات الخاصه بمعالج اخر

فلا يمكن لمعالج من نوع sparc

ان ينفذ التعليمات الخاصه بعالج بنتيوم

(ولكن بعض معالجات انتل بينها تشابه)

المعالج يقوم باحضار البيانات من الذاكره وذلك يستغرق وقت طويل نسبياً فاضطر مصمموا المعالجات الى تصميم ما يسمى

registers

وهى موجوده داخل المعالج وتتعامل مع البيانات المؤقته اثناء تنفيذ المعالجات ولها مهام اخرى كثيره ويمكن برمجته الحاسب عن طريق تحميل بعض القيم ونقلها بينها واعتقد ان مبرمجى لغة الاسمبلى لهم خبره فى مثل هذه الامور

حيث ان ال

instruction set

تتعامل بصوره اساسيه مع ال

registers

وواحد من

registers

يسمى ال

program counter

وهو مسئول عن تحيد المكان التعليمه التاليه فى التنفيذ فى الذاكره ويتم تحيث القيمه التى به بعد تنفيذ كل تعليمه

فى اى وقت عند ايقاف برنامج ما معين والتبديل لاخر يجب ان يتم حفظ كل القيم الموجوده فى المسجلات

سنتحدث الان عن تقنيه تسمى ال

pipeline

ساهمت فى التطوير كثيراً فى تنفيذ التعليمات داخل المعالج وقد قلنا سابقاً ان المعالج يقوم بثلاث عمليات متتاليه لتنفيذ اى تعليمه ...التنقيه المذكروه تسمح بتقسيم الثلاث مراحل كل فى وحده خاصه به وبذلك يمكن احضار تعليمه وفى نفس الوقت تنفيذ تعليمه اخرى اى انه يجعل المعالج اشبه بخط انتاج فى مصنع ما

ورغم ان التقينه جيده الا انها لها مساوئ ايضاً

لا داعى لذكرها الان وبالطبع تتطلب تعقيداً اكثر فى تصميم نظام التشغيل المتحكم بها

وظهر تقنيه اخرى تسمى

super scalar cpu

والتى تسمح بوجود اكثر من وحده فى كل من المراحل السابقه حيث تقوم وحدات الاحضار

fetch

بتسليم البيانات لوحدات decoding

المرتبطه بها والتى بدورها تضعها فى ذكره مؤقته

buffer

وتتعامل اكثر من وحده للتنفيذ مع هذه الذاكره وبالطبع التقنيه ايضاً تتطلب تعقيد اكثر فى تصميم نظام التشغيل

معظم الانظمه لديها طرازان يتم التفيذ فيهما

user mode,kernel mode

الkernel mode

يسمح بالوصول المباشر للهاردوير ويتيح تقريباً كل الخدمات اللازمه وهذا الطراز يستخدمه نظام التشغيل

اما الاخر فهو خاص بالمستخدم والوصول الى الخدمات فيه محدود الى حد ما وتقريباً لا يدعم التعامل مباشرة مع الهاردوير

حيث ان معظم التعامل مع اجهزة الادخال والاخراج وكذلك التعامل مع الذاكره وطرق حمايتها يتم عن طريق ال

kernel mode

يتم التعرف على عملية التنفيذ اذا كانت فى احد الطرازين عن طريق مسجل فى المعالج يسمى

PSW(program status word)

فهو يحتوى على قيمه مفتاحيه تحدد نوع الطراز وهذه القيمه محميه ولا يمكن التغيير فيها

ولكن السؤال الان ....ماذا لو اراد المستخدم ان يصل الى بعض هذه الخدمات الغير مدعمه للوصول المباشر اليها؟

وهذا ادى الى ظهور ما يسمى

system call

وهى اجراءات يوفرها نظام التشغيل لاداء مثل هذه الوظائف ...حيث يقوم المستخدم باستدعائها وارسال بعض البارمترات اليها

ثم يقوم النظام بعد ذلك بتنفيذها فى ال

kernel mode

دون تدخل من المستخدم وبعد تنفيذها يعيد التحكم الى المستخدم مره ثانيه

ثانياً:الذاكره و اجهزة التخزين

الذاكره الرئيسيه كما عرفنا من قبل يمكن ان يتم تحميل البرامج بها اثناء التنفيذ وهى ذاكره متطايره (اى تفقد محتوياتها بانقطاع التيار الكهربى) واهميتها غنيه عن الذكر ولكننا سنركز قليلاً الان على الذاكره المخبئيه كما تسميها بعض الكتب العربيه

الغير منتشره

cache memory

والتى غالباً ما يتم التحكم فيها عن طريق الهاردوير دون تدخل من المستخدم وسنجد ان هناك ارتباط بين الذاكره الرئيسيه والمخبئيه يوضح اهمية الذاكره المخبئيه

حيث ان الذاكره الرئيسيه مقسمه الى عدة اجزاء (كل جزء يحتوى على 64 بت)

فمثلاُ

0-->63=cache line0

64-->127=cache line1

وهكذا

واثناء التعامل مع الذاكره الرئييسيه يلاحظ ان هناك بعض ال

cache lines

تستخدم بطريقه اكثر من غيرها ومن ثم يقوم العتاد بحفظ محتوياتها فى الذاكره المخبئيه وذلك لانها اسرع واقرب من المعالج وستوفر فى وقت التنفيذ

وعندما يحتاج البرنامج لقراءة قيمة ما من الذاكره الرئيسيه فانها يبحث عنها اولاً فى الذاكره المخبئية فاذا وجدها يحدث ما يسمى

cache hit

ومن ثم نقوم بنقل القيم من الذاكره المخبئيه بدلاً من الرئيسيه فى هذه الحاله

وغالباً ما يتغرق التعامل مع الذاكره المخبئيه الى دوتين فقط من المعالج

2cycles

ولكن هذه الذاكره محدودة الحجم نظراً لارتفاع سعرها..وفى معظم الاجهزه الحيثه يتوفر مستويان او اكثر منها كل مستوى اكبر وابطئ من الذى قبله

القرص الصلب

hard disk

وسرعته اقل من حيث الوصول الى البيانات وهذا يرجع الى ان القرص الصلب فى حقيقة الامر عباره عن جهاز ميكانيكى

ويتكون من

metal platters

شبه اقراص دائريه قد تصل سرعتها الى 10800 دوره فى الثانيه او اكثر وهناك

arms(heads)

تقوم بتخزين او استخراج البيانات من على سطح هذه الاقراص و ينقسم كل قرص منهم الى مسارات وقطاعات وكل قطاع 512 بايت

(ارجو البحث فى هذا الموضوع منكم حيث انه يحتاج الى بعض المجهود منكم لفهمه بسهوله)

فى الاجهزه الحيثه تحتوى المسارات الخارجيه على قطاعات اكثر من الداخليه وانتقال ذراع (رأس) القراءه والكتابه من مسار لاخر يستغرق 1 مللى ثانيه بينما ينتظر الذراع بعد ذلك دوران

القرص حت يصل الى القطاع المطلوب ويستغرق ذلك حوالى من 5 الى 10 مللى ثانيه

ذاكرة التخزين الدائم

ROM

تبرمج بواسطة الشركه المصنعه ولا تفقد محتوياتها ولا يمكن حتى تغيير البرنامج الخاص بها بعد ذلك

EEPROM & FLASH-ROM

نوع اخر من الذاكره ROM

ولكن يمكن الغائه او اعادتة برمجته

CMOS

يمكن برمجته حديثاً ويستخدم فى حفظ الاعدادت الخاصه بالجهاز ومتعلق بعملية الاقلاع الى حد كبير

ارجوا ان تسترخوا قليلاً وتستعيدوا نشاطكم لان الجزء القادم ليس سهلاً

ولكن دعنا الان نسترجع معلوماتنا عن الذاكره الرئيسيه وننوه الى بعض المشاكل التى ستواجهنا اثناء التعامل مع البرامج المحمله بها

....لنفرض ان لدينا برنامجان موجودان بالذاكره ...ستظهر لى مشكلتان يجب وضعهما فى الاعتبار

اولاً: كيف يتم حماية البرامج من التداخل بعضها مع بعض اى ان البرنامج لا يعدل فى محتويات الاخر فى الذاكره عن طريق الخطأ وكيف يتم حماية الكرنل منهما

ثانياً: كيف يتم التعامل مع عمليةrelocation (اعادة التحميل وتحديد عناوين البرنامج الجديده فى الذاكره)

المشكله الاولى واضحه باذن الله ولكن الجزء الثانى ربما يكون غير مفهوم لدى بعض الاعضاء

وحقيقة الامر ان الكومبايلر واللينكر الذان قاما بتوليد البرنامج لاول مره يفترضان ان البرنامج سيكون موضوعاً بداية من العنوان صفر0 فى الذاكره لنفرض ان البرنامج يقوم باحضار تعليمه من العنوان 10000 ويقوم بجمعها مع رقم ما علمأ بان العنوان 10000 ضمن اجزاء البرنامج

ولكن عند اعادة تحميل البرنامج من القرص الصلب ربما يكون العنوان 0 مشغولاً ببعض البيانات (غالباً ما يكون محتويات النظام فى هذا الجزء وما يليه) فيضطر النظام الى تحميل البرنامج فى مكان ما اخر فارغ ولنفرض اننا وجدنا العنوان50000 وما يليه فارغاً عندئذ سيتم تحميل البرنامج به وستظهر مشكله عندما يشير البرنامج الى العنوان هناك فى 10000 حيث سيجد بيانات اخرى غير مطلوبه وهنا تتضح المشكله

وهناك طريقتان للحل

الطريقه الاولى : عمل ال relocation اثناء التفيذ...واظنها طريقه صعبه

الطريقه الثانيه: عمل ال relocation اثناء تحميل البرنامج من القرص الصلب الى الذاكره الرئيسيه و تفيذ البرنامج من مكانه الجديد بالذاكره...وسنتناول شرح هذه الطريقه

كل من الطريقتان السابقتان تعمدان على امداد المعالج ببعض المسجلات الاضافيه واللازمه لمثل هذه العمليه

وتعتمد الطريقه الثانيه على وجود مسجلان

base register ويشير الى بداية المكان الذى سيتم تحميل البرنامج فيه ولنفرض كما قلنا انه 50000

والاخر

limit register

حيث يشير الى نهاية البرنامج فى الذاكره ...ولكن ماذا يحدث عنما يشيرالبرنامج الى المكان الخاطئ 10000 ...يحدث الاتى ------->

تقوم وحده تسمى MMU (Memory Management Unit) باضافة القيمه الموجوده بداخل ال

program counter

(لو فاكرين دا بيحدد مكان التعليمه التى يجب تفيذها فى الذاكره وبه القيمه صفر الان مع بداية البرنامج

كما تم توليدها من الكومبايلر ويتم زيادة القيمه بعد تنفيذ لكل تعليمه)

...يقوم باضافتها على القيمه الموجوده بال base register وهى 50000 فيكون الناتج 60000 وهى فعلاً القيمه الصحيحه بعد اعادة تحميل البرنامج فى المكان الجديد

هناك وظيفه اخرى تقوم بها MMU الا وهى انها تقوم بفحص على الجزء الذى سيشير اليه البرنامج فى الذاكره وتتاكد انه محصور بين

base register ,limit register

وبذلك تم حل المشكلتان معاً فى نفس الوقت

واريد ان انوه الى ان ال MMU يتم التحكم فيها من خلال النظام ولا تعمل فى ال user mode لضمان الحمايه الاكيده

وكنت اريد ان انوه ايضاً الى انه التبديل بين البرامج context switch فى الذاكره يتسبب فى حمل اكثر على ال cache memorty and MMU لانه يضطرهم التى تغيير قيمهم الى القيم الجديده

انا نفسى اكمل والله ..بس دماغى صدعت و مش قادر اكمل كتابه :s :wacko: :wacko:

على العموم كدا فاضل جزئين ونكمل الفصل ده...المره الجايه ان شاء الله هتبقى تكملة الهاردوير اللى كان المفروض يكمل انهارده + نظره عامه على مفاهيم نظم التشغيل

اشوفكم الدرس الجاى.... ويا رب تكونوا استفدتوا منى باى حاجه

هذا الموضوع مغلق.

مواضيع مشابهة