os3h

 

Basic Concepts مفاهيم أساسية

Page history last edited by Anonymous 1 yr ago

مفاهيم أساسية:

 

في نظام المعالجات القديمة مثل 8088,

 

تطبيق (process) واحد فقط هو الذي  يتم تنفيذه في وحدة المعالجة المركزية (CPU) .. أي لو بدأت تشغيل

 

تطبيق آخر ( مثلاً لو نقرت على برنامج ما نقرتين لكي تقوم بتشغيله )  فلن يتم تنفيذه  حتى تتم معالجة التطبيق الأول

 

وتصبح وحدة المعالجة المركزية (CPU) عاطلة (idle)أي لا يوجد فيها تطبيق يتم تنفيذه في الوقت الحالي.. وهنا المشكلة !!

 

حيث أننا نضطر إلى إغلاق التطبيق الفعال حتى نستطيع تشغيل آخر..

 

إذ لم يكن 8088 قادراً على معالجة أكثر من برنامج واحد في نفس الوقت ..

 

ولكن بعد ظهور تقنية المعالجة المتعددة (multiprogramming)  لم تعد هناك مشكلة , حيث تسمح هذه الميزة

 

بتشغيل أكثر من تطبيق في نفس الوقت .. ولقد ظهرت معالجات مثل (Pentium) بحيث تدعم هذه الميزة ..

 

 multiprogramming:

 

فعلياً المعالج لا يقوم بتشغيل أكثر من برنامج في نفس الوقت !! ففي الواقع تقوم جميع CPUs التي تشغل عدة برامج

 

بالتنقل بين هذه البرامج بسرعة: تقوم بتنفيذ بعض أسطر الشفرة من برنامج ما ثم الانتقال إلى آخر ,...وهكذا , ثم

 

يعود إلى البرنامج الأول . لذلك عندما تعود CPU إلى برنامج ما فإنها تتابع العمل من لحظة التوقف السابقة .. وهذا

 

يتم حسب جدولة معينة يكون نظام التشغيل مسئولاُ عنها ..

 

لا ينتقل CPU من تطبيق لآخر إلا إذا وصل التطبيق الذي يكون قيد التشغيل إلى حالة الانتظار

 

(أي قد ينتظر التطبيق استكمال عملية إدخال/إخراج  متطلبة )

 

وفي أنظمة الكمبيوتر التي لا تدعم المعالجة المتعددةmultiprogramming)) يبقى CPU عاطلاً عن العمل في فترة الانتظار هذه , وتصبح

 

هذه المدة ضائعة لا ينجز فيها CPU  عملاً مفيداً ..

 

مع المعالجة المتعددة نحاول الاستفادة من وقت الانتظار قدر الإمكان وذلك لاستغلال أكبر قدر من طاقة  ( CPU (Utilization)

 

كل مصادر الكمبيوتر يعمل لها جدولة قبل استخدامها , و CPU هي أحد مصادر الكمبيوتر الأساسية التي تحتاج

 

لجدولة ..

 

 

حلقة العمل داخل وحدة المعالجة المركزية – وعملية الإدخال والإخراج (CPU-I/OBurstCycle:)

 

نجاح جدولة وحدة المعالجة المركزية(CPU) يتوقف على خاصية العمليات :

 

تنفيذ العملية( Process) يتألف من حلقة من معالجة العملية داخل CPU  وانتظار عملية الإدخال و الإخراج ..

 

العمليات تتناوب بين هاتين الحالتين : تنفيذ العملية يبدأ بالعمل داخل  (CPU burst) ويتبعه

 

عملية الإدخال و الإخراج ثم يتبعها العمل داخل CPU وهكذا .. وفي النهاية ينتهي العمل داخل CPU

 

بطلب نظام التشغيل (OS) لإنهاء عملية التنفيذ لسبب ما .. إما لأن  العملية انتهت أو لحدوث خطأ تسبب بإلغائها ..

 

  (CPU burst)الفتره الزمنيه لوحدة المعالجه المركزيه تتفاوت كثيراً بين عملية وأخرى وكذلك بين كمبيوتر  وآخر ..

 

 إلا أنهم يميلون لامتلاك منحنى مشابه لهذا  المعروض ..

 

   يبين المنحنى ان البرامج التي يكون مده عملها داخل وحده المعالجه المركزية (CPU burst) طويل نادرة الاستخدام

 

 

بينما البرامج التي تكون مده عملها داخل وحده المعالجة المركزية  قصير تكون كثير الاستخدام (CPU burst)

 

  و(fraquency) يوضح تكرار ظهور برنامج معين

 

 

         

 

 

 

 

تنقسم البرامج :

 

I/O bound programهي البرامج التي تقضي معظم وقتها في عمليات الإدخال والإخراج

 

أكثر من الحسابات, كما تكون مدة العمل لها داخل   CPU قصيرة ..

 

CPU bound program :

 

هي البرامج التي تقضي معظم وقتها في إجراء الحسابات كما تكون مدة العمل لها داخل   CPU طويلة ..

 

هذا التوزيع مهم في اختيار الخوارزمية المناسبة لجدولة CPU

 

جدولة وحدة المعالجة المركزية(CPU Scheduler)

 

عندما تصبح CPU عاطلة (idle ) فإن نظام التشغيل يختار عملية من العمليات الموجودة في

 

الطابور الجاهز (ready queue) لتنفيذها . بواسطة خاصية المجدول القصير الأمد(short-term scheduler)

 

يتم اختيار عملية من العمليات الموجودة في الذاكرة وتحديداً في الطابور الجاهز(ready queue) ووضعها في CPU لتنفيذها ..

 

عند الإختيارمن الطابور الجاهز(ready queue) ليس بالضروري أن ينفذ على أساس مبدأ من يدخل أولاً  إلى الطابور يخرج أولاً(FIFO)..

 

 

 

بل يمكن أن ينفذ كطابور أولوية(Priority Queue) , شجرة(Tree)  أو كقائمة

 

مرتبطة غير منتظمة(Unordered linked list) ..

 

عموما, فإن جميع العمليات تصطف في الطابورلانتظار فرصة لتشغيلها في CPU

 

الجدولة الإجهاضية  (Preemptive Scheduling) :

 

قرار جدولة CPU  قد يحدث تحت الظروف الأربعة التالية :

 

1-         عندما تنتقل عملية (Process) من حالة التشغيل إلى حالة الانتظار (مثال: نتيجة طلب إدخال/إخراج , أو انتظار لإنهاء أحد عمليات الطفل (child )).

 

 

2-         عندما تنتقل عملية من حالة التشغيل(running state) إلى الحالة الجاهزة(ready state) (مثال:عندما ينتهي الوقتtime out فإن cpu ينهي العملية )

 

3-         عندما تنتقل العملية من حالة الانتظار إلى الحالة الجاهزة ( مثال: المقاطعة)

 

 

4-         عندما تنتهي العملية(Terminat)

 

عندما الجدولة تحدث تحت الظرف 1 أو 4نقول أن مخطط الجدولة متعاون( nonpreemptive) وفي

 

الحالات الأخرى نقول عنه إجهاضي (preemptive) ..

 

تحت الجدولة التعاونية , عندما تخصص CPU لعملية فإن هده العملية تبقى في CPU حتى تخرج

 

بنفسها إما لأنها انتهت أو لانتقالها لحالة الانتظار ..

 

الجدولة التعاونية ( nonpreemptive): هي الطريقة الوحيدة التي تستخدم برامج  أجهزة معينة ,

 

لأنها لا تتطلب أجهزة خاصة (مثال :الموقت :Timer)

 

Kernel ليس لديه أي صلاحية لإخراج العملية من CPU حتى تنهي تنفيذها  ..(مثلDOS )

 

جدولة الإجهاض : بسب حاجة معينة يقوم Kernel بإجهاض العملية الموجودة في CPU وإخراجها وإدخال عملية أخرى غيرها ..

 

ولولا هذه الطريقة لما كان لدينا المعالجة المتعددة (Multiprocessing) .. وهذه الطريقة أغلب أنظمة

التشغيل تعمل عليها ..

 

المرسل(Dispatcher):

 

المرسل: طريقة تجعل الـ CPU يتحكم  بالعملية التي اختارها ( Short-term scheduler)

 

 : وهذا يتضمن على 

-تبديل السياق (switching context)

-التحول إلى نمط المستخدم(switching to user mode)

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

 

 (jumping to the proper location in the user program to restart that program)

 

تأخير الإرسال(dispatch latency) –هو الوقت   الذي  يستغرقه المرسل لوقف عملية والبدأ

 

بتشغيل عملية أخرى .

 

 

كتبته:هند المطيري

المرجع:Operating system Concept

 

 

 

 

 

 

 

..

Comments (4)

Anonymous said

at 2:31 pm on Nov 23, 2007

الموضوع مقطوع من جه اليمين

لا استطيع القراءة ما ادري اذا عندي انا بس

بس المواضيع الباقية تطلع عندي كويس

شكرا لمجهودك
نجد الموح


Anonymous said

at 2:01 pm on Nov 24, 2007

لا الموضوع واضح ومشكوره عليه وعالمجهود المبذول جعله الله في ميزان حسناتك :)

Anonymous said

at 11:17 am on Nov 29, 2007

انا عدلت جدولةcpu
عندما تنتقل عملية من حالة التشغيل(running state) إلى الحالة الجاهزة(ready state) (مثال:عندما ينتهي الوقتtime out

فإن cpu ينهي العملية )



3- عندما تنتقل العملية من حالة الانتظار إلى الحالة الجاهزة ( مثال: المقاطعة)

انتي ذكرتي بالفقرة الثانية مثال المقاطعة
والفقرة الثالثة ذكرتي عمليات الادخال واالخراج

والمعروف ان عمليات الادخال والاخراج هي nonpreemptive

ومشكورة عالشرح الجميل والواضح
:)

نجد انا عندي نفس مشكلتك شكله من اجهزتنا :(

Anonymous said

at 11:37 am on Nov 29, 2007

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

You don't have permission to comment on this page.