سؤال

في سياق نظام التشغيل متعدد المهام، أحيانًا تسمع مصطلح جدولة دائرية.ماذا إشارة إلى؟
ما هو نوع آخر من الجدولة هناك؟

هل كانت مفيدة؟

المحلول

جدولة جولة روبن

إذا كنت مضيفًا في حفلة تضم 100 ضيف، فإن الجدولة الدورية تعني أنك تقضي دقيقة واحدة (مبلغ ثابت) لكل ضيف.أنت تستعرض كل ضيف واحدًا تلو الآخر، وبعد 100 دقيقة، تكون قد قضيت دقيقة واحدة مع كل ضيف.المزيد عن ويكيبيديا.

هناك العديد من أنواع الجدولة الأخرى، مثل الجدولة القائمة على الأولوية (أي الجدولة).الأشخاص الأكثر أهمية أولاً)، من يأتي أولاً يخدم أولاً، الموعد النهائي الأقرب أولاً (أيالشخص الذي يغادر في أقرب وقت أولا)، الخ.يمكنك البدء بالبحث على Google عن خوارزميات الجدولة أو التحقق من ذلك الجدول الزمني في ويكيبيديا

نصائح أخرى

يعد تقسيم الوقت متأصلًا في أي نظام جدولة دائري في الممارسة العملية، AFAIK.

أنا لا أتفق مع ما يشير إليه InSciTek Jeff بما يلي يكون جدولة جولة روبن:

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

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

وأنا أتفق مع هذا البيان:

لذلك، في حين أن الجدولة المستندة إلى تقسيم الوقت تتضمن جدولة دائرية، فإن الجدولة الدائرية لا تتطلب تقسيمًا زمنيًا متساويًا على أساس الوقت.

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

تحرير موجه إلى Inscitek Jeff (ليس لدي امتيازات التعليق) نعم ، كنت أشير إلى تعطيل قفل المهام/المقاطعة ، على الرغم من أنني من الواضح أنني لم أعبر عن ذلك جيدًا.لقد سبقتني (ها!) بتعليقك الثاني.آمل أن أناقش النقطة الأكثر بروزًا، وهي أنك تعتقد أن الجدولة المستديرة يمكن أن توجد بدون تقسيم الوقت.أم أنك تقصد فقط تقسيم الوقت على أساس الوقت المتساوي؟أنا لا أتفق مع الأول، ولكن أتفق مع الأخير.أنا حريص على التعلم.شكرًا.

Edit2 موجه إلى جيف:

يمكن أن توجد لعبة Round-Robin بدون تقسيم زمني.هذا هو بالضبط ما يحدث في VxWorks عندما يتم تعطيل kernelTimeSlice (صفر).

أنا لا أتفق مع هذا البيان.يرى هذا المستند القسم 2.2.3 بعنوان جدولة جولة روبن.

يستخدم جدولة Round-Robin تقطيع الوقت لتحقيق تخصيص عادل لوحدة المعالجة المركزية لجميع المهام بنفس الأولوية.تنفذ كل مهمة ، في مجموعة من المهام ذات نفس الأولوية ، لفاصل زمني محدد أو شريحة زمنية.يتم تمكين جدولة Round-Robin من خلال استدعاء KerneltimesLice () ، والتي تأخذ معلمة لشريحة زمنية ، أو فاصل....] إذا تم تمكين جدولة الجولة الدائرية ، ويتم تمكين الاستباق لمهمة التنفيذ ، فإن معالج علامة النظام يزيد من عدد الشريحة الزمنية للمهمة.

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

تصف الإجابات هنا وحتى مقالة ويكيبيديا الجدولة المستديرة لتشمل بطبيعتها تقسيمًا زمنيًا دوريًا.على الرغم من أن هذا أمر شائع جدًا، إلا أنني أعتقد أن جدولة Round-Robin وتقسيم الوقت أمران شائعان لا بالضبط نفس الشيء.بالتأكيد، لكي يكون تقسيم الوقت منطقيًا، يتم تضمين الجدولة الدائرية عند التناوب على كل مهمة، ومع ذلك يمكنك القيام بجدولة دائرية دون الحاجة إلى تقسيم زمني.وهذا يعني أنه يمكن السماح بتشغيل كل مهمة لها نفس الأولوية في التدوير الدائري حتى تصل إلى حالة كتلة المورد وعندها فقط تكون المهمة التالية في تشغيل التناوب.بمعنى آخر، عند وجود مهام ذات أولوية متساوية، تكون نقاط إعادة الجدولة موجودة لا الوقت استباقي.

لقد تم بالفعل تحقيق الفكرة المذكورة أعلاه على وجه التحديد في حالة نواة Wind River's VxWorks.ضمن مخطط الأولويات الخاص بهم، يتم تشغيل مهام كل أولوية بشكل دائري ولكن لا يتم تقسيمها إلى شرائح زمنية دون تمكين هذه الميزة على وجه التحديد في النواة.والسبب في هذه المرونة هو تجنب الحمل الزائد لمهام تقسيم الوقت المعروفة بالفعل بأنها تعمل في كتلة خلال فترة زمنية محددة جيدًا.

لذلك، في حين أن الجدولة المستندة إلى تقسيم الوقت تتضمن جدولة دائرية، فإن الجدولة الدائرية لا تتطلب تقسيمًا زمنيًا متساويًا على أساس الوقت.

رأي.يبدو أننا ندمج آليتين في آلية واحدة.بافتراض فقط التأكيد الأصلي لـ OP "في سياق نظام تشغيل متعدد المهام" إذن

1 - يقوم برنامج جدولة Round Robin دائمًا بجدولة العنصر التالي في قائمة انتظار دائرية.

2 - كيف يستعيد المجدول السيطرة على تنفيذ الجدولة أمر منفصل وغير مرتبط.

لا أوافق على أن الطريقة الأكثر شيوعًا لـ 2 هي تقسيم الوقت/انتظار العائد للموارد، ولكن كما تمت الإشارة إلى أن هناك طرقًا أخرى.إذا لم أكن مخطئًا، فإن أجهزة Mac الأولى لم تستخدم تقسيم الوقت، بل استخدمت العائد الطوعي/العائد في انتظار الموارد (قد تكون خلايا الدماغ التي يبلغ عمرها أكثر من 20 عامًا خاطئة في بعض الأحيان؛).

Round robin هي خوارزمية جدولة بسيطة حيث يتم تقسيم الوقت بالتساوي بين المهام دون أولوية.

على سبيل المثال - إذا كان لديك 5 عمليات قيد التشغيل - فسيتم السماح لكل عملية بالعمل لمدة 1/5 وحدة زمنية قبل السماح بتشغيل عملية أخرى.عادةً ما يكون تطبيق Round robin سهل التنفيذ في نظام التشغيل.

في الواقع، لقد تم الخلط بينك وبين الجدولة الوقائية وRound robin.يعد Infact RR جزءًا من الجدولة الوقائية.

تعتمد جدولة Round Robin على مشاركة الوقت المعروفة أيضًا باسم الكم (الحد الأقصى للوقت الذي توفره وحدة المعالجة المركزية لأي عملية دفعة واحدة).هناك عمليات متعددة (تتطلب وقتًا مختلفًا لإكمالها ويعرف أيضًا باسم وقت الاندفاع) في قائمة الانتظار ويجب على وحدة المعالجة المركزية معالجتها جميعًا حتى تستمر في التبديل بين العمليات لمنح كل عملية وقتًا متساويًا بناءً على القيمة الكمية.يُعرف هذا النوع من الجدولة بجدولة Round Robin.شاهد هذا الفيديو البسيط لفهم جدولة جولة روبن بسهولة: https://www.youtube.com/watch?v=9hw-_qJ55K4

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top