تعدد المهام الحاسوبية

تستطيع أنظمة تشغيل سطح المكتب الحديثة التعامل مع عدد كبير من العمليات المختلفة في الوقت نفسه. تُظهر لقطة الشاشة هذه نظام فيدورا لينكس يعمل بالتزامن مع بيئة سطح المكتب KDE Plasma 6 ، ومتصفح فايرفوكس ، وبرنامج KCalc ، والتقويم المدمج، ومحرر النصوص GNU nano ، وبرنامج GIMP ، ومشغل الوسائط VLC .
تعدد المهام في نظام التشغيل مايكروسوفت ويندوز 1.01 الذي صدر عام 1985، ويظهر هنا وهو يشغل برنامجي MS-DOS Executive و Calculator

في مجال الحوسبة ، تُعرف تعدد المهام بتنفيذ عدة مهام (تُعرف أيضًا بالعمليات ) في وقت واحد خلال فترة زمنية محددة. [ 1 ] يمكن للمهام الجديدة مقاطعة المهام التي بدأت بالفعل قبل اكتمالها، بدلاً من انتظار انتهائها. ونتيجة لذلك، يُنفذ الحاسوب أجزاءً من مهام متعددة بطريقة متداخلة، بينما تتشارك هذه المهام موارد المعالجة المشتركة، مثل وحدات المعالجة المركزية (CPU) والذاكرة الرئيسية . يقوم تعدد المهام تلقائيًا بمقاطعة البرنامج قيد التشغيل، وحفظ حالته (النتائج الجزئية، ومحتويات الذاكرة، ومحتويات سجلات الحاسوب)، ثم تحميل الحالة المحفوظة لبرنامج آخر ونقل التحكم إليه. يمكن بدء " تبديل السياق " هذا على فترات زمنية ثابتة ( تعدد المهام الاستباقي )، أو يمكن برمجة البرنامج قيد التشغيل للإشارة إلى البرنامج المشرف عندما يكون من الممكن مقاطعته ( تعدد المهام التعاوني ).

لا تتطلب تعدد المهام تنفيذًا متوازيًا لمهام متعددة في نفس الوقت تمامًا؛ بل تسمح لأكثر من مهمة بالتقدم خلال فترة زمنية محددة. [ 2 ] حتى في الحواسيب متعددة المعالجات ، تسمح تعدد المهام بتشغيل عدد من المهام يفوق عدد وحدات المعالجة المركزية المتاحة.

تُعدّ خاصية تعدد المهام سمةً شائعةً في أنظمة تشغيل الحواسيب منذ ستينيات القرن الماضي على الأقل. فهي تُتيح استخدامًا أكثر كفاءةً لموارد الحاسوب؛ فعندما ينتظر برنامجٌ ما حدثًا خارجيًا، مثل إدخال المستخدم أو إتمام عملية نقل بيانات مع جهاز طرفي، يظلّ المعالج المركزي مُتاحًا لبرنامج آخر. في نظام المشاركة الزمنية ، يستخدم مُشغّلون بشريون مُتعددون المعالج نفسه كما لو كان مُخصّصًا لهم، بينما يقوم الحاسوب في الخلفية بخدمة العديد من المستخدمين من خلال تعدد مهام برامجهم الفردية. في أنظمة البرمجة المُتعددة ، تستمرّ المهمة في العمل حتى يحين وقت انتظار حدث خارجي أو حتى يُجبر مُجدوِل نظام التشغيل على نقل المهمة الجارية من وحدة المعالجة المركزية. تتطلّب أنظمة الوقت الحقيقي، مثل تلك المُصمّمة للتحكّم في الروبوتات الصناعية، معالجةً فورية؛ وقد يُشارك معالج واحد بين حسابات حركة الآلة والاتصالات وواجهة المستخدم. [ 3 ]

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

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

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

البرمجة المتعددة

في بدايات الحوسبة، كان وقت المعالج المركزي مكلفًا، وكانت الأجهزة الطرفية بطيئة للغاية. عندما كان الحاسوب يُشغّل برنامجًا يحتاج إلى الوصول إلى جهاز طرفي، كان على وحدة المعالجة المركزية (CPU) التوقف عن تنفيذ تعليمات البرنامج ريثما يُعالج الجهاز الطرفي البيانات. كان هذا الأمر غير فعال في الغالب. أما البرمجة المتعددة فهي تقنية حوسبة تُمكّن من تحميل وتنفيذ عدة برامج في وقت واحد في ذاكرة الحاسوب، مما يسمح لوحدة المعالجة المركزية بالتبديل بينها بسرعة. يُحسّن هذا من استخدام وحدة المعالجة المركزية من خلال إبقائها منشغلة بتنفيذ المهام، وهو أمر مفيد بشكل خاص عندما ينتظر أحد البرامج اكتمال عمليات الإدخال/الإخراج.

كان جهاز Bull Gamma 60 ، الذي صُمم في البداية عام 1957 وطُرح لأول مرة عام 1960، أول حاسوب مصمم مع مراعاة تعدد البرامج. تميزت بنيته بذاكرة مركزية وموزع برامج يغذي ما يصل إلى 25 وحدة معالجة مستقلة بالبرامج والبيانات، مما يسمح بالتشغيل المتزامن لمجموعات متعددة. [ 4 ]

كان جهاز LEO III مثالًا آخر على هذه الحواسيب ، وقد طُرح لأول مرة عام 1961. أثناء المعالجة الدفعية ، كانت تُحمّل عدة برامج مختلفة في ذاكرة الحاسوب، ويبدأ تشغيل البرنامج الأول. عندما يصل البرنامج الأول إلى تعليمة تنتظر جهازًا طرفيًا، يُخزّن سياق هذا البرنامج، ويُمنح البرنامج الثاني في الذاكرة فرصة التشغيل. تستمر هذه العملية حتى تنتهي جميع البرامج من التشغيل. [ 5 ]

لا يضمن تعدد البرامج تشغيل البرنامج في الوقت المناسب. بل قد يستمر البرنامج الأول في العمل لساعات دون الحاجة إلى استخدام أي جهاز طرفي. ولأن المستخدمين لم يكونوا ينتظرون عند طرفية تفاعلية، لم تكن هذه مشكلة: إذ كان المستخدمون يسلمون مجموعة من البطاقات المثقبة إلى المشغل، ثم يعودون بعد بضع ساعات للحصول على النتائج المطبوعة. وقد قلل تعدد البرامج بشكل كبير من أوقات الانتظار عند معالجة دفعات متعددة. [ 6 ] [ 7 ]

تعدد المهام التعاوني

استخدمت أنظمة تعدد المهام المبكرة تطبيقاتٍ تتنازل طواعيةً عن وقتها لبعضها البعض. يُعرف هذا النهج، الذي دعمته لاحقًا العديد من أنظمة تشغيل الحاسوب، اليوم باسم تعدد المهام التعاوني. مع أنه نادرًا ما يُستخدم الآن في الأنظمة الكبيرة باستثناء تطبيقات محددة مثل CICS أو النظام الفرعي JES2 ، إلا أن تعدد المهام التعاوني كان في السابق نظام الجدولة الوحيد الذي استخدمته أنظمة مايكروسوفت ويندوز وماك أو إس الكلاسيكية لتمكين تشغيل تطبيقات متعددة في وقت واحد. ولا يزال تعدد المهام التعاوني يُستخدم حتى اليوم في أنظمة RISC OS . [ 8 ]

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

تعدد المهام الاستباقي

كوبونتو (KDE Plasma 5) أربعة أسطح مكتب افتراضية تشغل برامج متعددة في نفس الوقت

تتيح خاصية تعدد المهام الاستباقية لنظام الحاسوب ضمان حصول كل عملية على "شريحة" منتظمة من وقت التشغيل بشكل أكثر موثوقية. كما تُمكّن النظام من التعامل بسرعة مع الأحداث الخارجية الهامة، مثل البيانات الواردة، التي قد تتطلب اهتمامًا فوريًا من عملية معينة. وقد طُوّرت أنظمة التشغيل للاستفادة من هذه الإمكانيات المادية وتشغيل عمليات متعددة بشكل استباقي. طُبّقت خاصية تعدد المهام الاستباقية في جهاز PDP-6 Monitor and Multics عام 1964، وفي نظام التشغيل OS/360 MFT عام 1967، وفي نظام يونكس عام 1969، وكانت متاحة في بعض أنظمة التشغيل لأجهزة حاسوب صغيرة الحجم مثل PDP-8 من شركة DEC؛ وهي ميزة أساسية في جميع أنظمة التشغيل الشبيهة بنظام يونكس ، مثل لينكس ، وسولاريس، و BSD ومشتقاتها ، [ 9 ] بالإضافة إلى الإصدارات الحديثة من ويندوز.

ربما كان نظام التشغيل OS-9 من شركة مايكرووير أول نظام تشغيل متعدد المهام استباقي متاح للمستخدمين المنزليين ، وكان متاحًا لأجهزة الكمبيوتر التي تعتمد على معالج موتورولا 6809، مثل جهاز TRS-80 Color Computer 2 ، [ 10 ] حيث قامت شركة تاندي بتوفير نظام التشغيل كترقية للأنظمة المزودة بأقراص. [ 11 ] تبعه نظام Sinclair QDOS على جهاز Sinclair QL في عام 1984، لكنه لم يحقق نجاحًا كبيرًا. وفي العام التالي، أصدرت شركة كومودور جهاز Amiga ، الذي يجمع بين إمكانيات تعدد المهام والوسائط المتعددة. جعلت مايكروسوفت تعدد المهام الاستباقي ميزة أساسية في نظام التشغيل الرئيسي الخاص بها في أوائل التسعينيات عند تطوير نظامي التشغيل Windows NT 3.1 و Windows 95. وفي عام 1988، قدمت شركة آبل نظام A/UX كبديل لنظام التشغيل Mac OS الكلاسيكي ، وهو نظام قائم على نظام UNIX System V. وفي عام 2001، تحولت آبل إلى نظام Mac OS X المتأثر بنظام NeXTSTEP .

يُستخدم نموذج مشابه في نظامي التشغيل ويندوز 9x وويندوز NT ، حيث تُنفَّذ مهام متعددة استباقية للتطبيقات الأصلية ذات 32 بت. [ 12 ] أما إصدارات ويندوز ذات 64 بت، سواءً لبنية x86-64 أو Itanium ، فلم تعد تدعم التطبيقات القديمة ذات 16 بت، وبالتالي توفر ميزة تعدد المهام الاستباقية لجميع التطبيقات المدعومة.

في الوقت الحالى

سبب آخر لتعدد المهام هو تصميم أنظمة الحوسبة الآنية ، حيث يتطلب الأمر التحكم في عدد من الأنشطة الخارجية التي قد لا تكون مترابطة، وذلك بواسطة نظام معالج واحد. في مثل هذه الأنظمة، يُقترن نظام مقاطعة هرمي بتحديد أولويات العمليات لضمان حصول الأنشطة الرئيسية على حصة أكبر من وقت المعالجة المتاح . [ 13 ]

تعدد الخيوط

نشأت فكرة الخيوط من مبدأ أن الطريقة الأمثل لتبادل البيانات بين العمليات المتعاونة هي مشاركة مساحة الذاكرة بالكامل. لذا، تُعتبر الخيوط عمليات تعمل ضمن سياق الذاكرة نفسه، وتشارك موارد أخرى مع عملياتها الأصلية ، مثل الملفات المفتوحة. وتُوصف الخيوط بأنها عمليات خفيفة الوزن لأن التبديل بينها لا يتطلب تغيير سياق الذاكرة. [ 14 ] [ 15 ] [ 16 ]

بينما تُجدول الخيوط بشكل استباقي، توفر بعض أنظمة التشغيل نوعًا مختلفًا منها يُسمى الألياف ، والتي تُجدول بشكل تعاوني. في أنظمة التشغيل التي لا توفر الألياف، يمكن للتطبيق تنفيذ أليافه الخاصة باستخدام استدعاءات متكررة لوظائف العامل. تُعد الألياف أخف وزنًا من الخيوط، وأسهل برمجةً إلى حد ما، على الرغم من أنها تميل إلى فقدان بعض أو كل مزايا الخيوط على الأجهزة متعددة المعالجات . [ 17 ]

تدعم بعض الأنظمة تعدد الخيوط بشكل مباشر في الأجهزة .

حماية الذاكرة

يُعدّ توفير إمكانية الوصول الآمن والفعّال إلى موارد النظام أمرًا أساسيًا لأي نظام متعدد المهام. ويجب إدارة الوصول إلى الذاكرة بدقة لضمان عدم تمكّن أي عملية، سواء عن غير قصد أو عن قصد، من قراءة أو كتابة مواقع الذاكرة خارج نطاق عناوينها. ويتم ذلك لضمان استقرار النظام بشكل عام وسلامة البيانات، فضلًا عن أمنها.

بشكل عام، تقع مسؤولية إدارة الوصول إلى الذاكرة على عاتق نواة نظام التشغيل، بالاشتراك مع آليات الأجهزة التي توفر وظائف داعمة، مثل وحدة إدارة الذاكرة (MMU). إذا حاول أحد العمليات الوصول إلى موقع ذاكرة خارج نطاق مساحته المخصصة، فإن وحدة إدارة الذاكرة ترفض الطلب وتُرسل إشارة إلى النواة لاتخاذ الإجراءات المناسبة؛ وعادةً ما يؤدي ذلك إلى إنهاء العملية المخالفة قسرًا. بناءً على تصميم البرمجيات والنواة ونوع الخطأ، قد يتلقى المستخدم رسالة خطأ تتعلق بانتهاك الوصول، مثل "خطأ تجزئة الذاكرة".

في نظام تعدد المهام المصمم والمنفذ بشكل صحيح، لا يمكن لأي عملية الوصول مباشرةً إلى ذاكرة تابعة لعملية أخرى. ويُستثنى من هذه القاعدة الذاكرة المشتركة؛ فعلى سبيل المثال، في آلية الاتصال بين العمليات في نظام System V، تُخصص النواة ذاكرةً لتشاركها عدة عمليات. وتُستخدم هذه الميزات غالبًا في برامج إدارة قواعد البيانات مثل PostgreSQL.

إن آليات حماية الذاكرة غير الكافية، سواء بسبب عيوب في تصميمها أو بسبب سوء تنفيذها، تسمح بوجود ثغرات أمنية يمكن استغلالها بواسطة البرامج الضارة.

تبديل الذاكرة

يُعدّ استخدام ملف التبديل أو قسم التبديل وسيلةً لنظام التشغيل لتوفير ذاكرة أكبر من المتاحة فعليًا، وذلك عن طريق الاحتفاظ بأجزاء من الذاكرة الرئيسية في وحدة تخزين ثانوية . ورغم أن تعدد المهام وتبديل الذاكرة تقنيتان منفصلتان تمامًا، إلا أنهما تُستخدمان معًا في كثير من الأحيان، إذ يسمح تبديل الذاكرة بتحميل المزيد من المهام في الوقت نفسه. عادةً، يسمح نظام تعدد المهام بتشغيل عملية أخرى عندما تصل العملية الجارية إلى نقطةٍ تتطلب منها انتظار إعادة تحميل جزء من الذاكرة من وحدة التخزين الثانوية. [ 18 ]

برمجة

على مر السنين، تم تحسين أنظمة تعدد المهام. تتضمن أنظمة التشغيل الحديثة عمومًا آليات مفصلة لتحديد أولويات العمليات، بينما أدخلت المعالجة المتعددة المتناظرة تعقيدات وقدرات جديدة. [ 19 ]

انظر أيضاً

مراجع

  1. "ما هي تعدد المهام؟" . موقع Computer Hope . تم الاطلاع عليه بتاريخ 11 فبراير 2026 .
  2. "التزامن مقابل التوازي، البرمجة المتزامنة مقابل البرمجة المتوازية" . أوراكل. مؤرشف من الأصل في 7 أبريل 2016. تم الاطلاع عليه في 23 مارس 2016 .
  3. أنتوني رالستون، إدوين د. رايلي (محرران)، موسوعة علوم الحاسوب، الطبعة الثالثة ، فان نوستراند رينهولد، 1993، رقم ISBN 0-442-27679-6، مقالتا "تعدد المهام" و"تعدد البرامج"
  4. باتاي، م. (1972-04-01). "شيء قديم: غاما 60، الحاسوب الذي سبق عصره". أخبار هندسة الحاسوب من ACM SIGARCH . 1 (2): 10-15 . doi : 10.1145/641276.641278 . ISSN 0163-5964 . 
  5. برنامج رئيسي ونظام تجارب البرامج الجزء 1 مواصفات البرنامج الرئيسي . فبراير 1965. القسم 6 "إجراءات التحكم في الأولوية".
  6. ليثمي (2019-05-20). "ما الفرق بين المعالجة الدفعية والبرمجة المتعددة؟" . Pediaa.Com . تم الاطلاع عليه بتاريخ 14-04-2020 .
  7. "تطور نظام التشغيل" . 29-09-2017 . تم الاطلاع عليه بتاريخ 14-04-2020 .
  8. "تعدد المهام الاستباقي" . riscos.info . 2009-11-03 . تم الاطلاع عليه بتاريخ 2014-07-27 .
  9. "يونكس، الجزء الأول" . مبادرة البحث الرقمي . ibiblio.org. 30 يناير 2002. تاريخ الاسترجاع: 9 يناير 2014 .
  10. داونارد، دان ( سبتمبر 1983). "دايناميك أونو" . ذا رينبو . ص 236-240 . تم الاطلاع عليه في 9 مايو 2024 . 
  11. كتالوج TRS-80 لعام 1984. شركة تاندي. 1984. الصفحات 53-54 . تم الاطلاع عليه بتاريخ 14 مايو 2024 . 
  12. جوزيف موران (يونيو 2006). "تطبيقات ويندوز 2000 و16 بت" . الحوسبة الذكية . المجلد 16، العدد 6. الصفحات 32-33 . مؤرشف من الأصل في 25 يناير 2009.   
  13. ليو، سي إل؛ لايلاند، جيمس دبليو. (1973-01-01). "خوارزميات الجدولة للبرمجة المتعددة في بيئة زمنية حقيقية صارمة" . مجلة ACM . 20 (1): 46-61 . doi : 10.1145/321738.321743 . ISSN 0004-5411 . S2CID 59896693 .  
  14. إدواردو سيلييندو؛ تاكيشيكا كونيمسا (25 أبريل 2008). "إرشادات أداء لينكس وضبطه" (ملف PDF) . redbooks.ibm.com . شركة IBM . ص 4. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 26 فبراير 2015. تم الاطلاع عليه بتاريخ 1 مارس 2015 . 
  15. "تعريف تبديل السياق" . linfo.org . 28 مايو 2006. مؤرشف من الأصل في 18 فبراير 2010. تم الاطلاع عليه في 26 فبراير 2015 .
  16. "ما هي الخيوط (المستخدم/النواة)؟" . tldp.org . 8 سبتمبر 1997. تم الاطلاع عليه في 26 فبراير 2015 .
  17. تعدد المهام: طرق مختلفة. تاريخ الوصول: 19 فبراير 2019
  18. "ما هو ملف التبديل؟" . kb.iu.edu . تم الاطلاع عليه بتاريخ 26-03-2018 .
  19. "هندسة أنظمة التشغيل" . cis2.oc.ctc.edu . تم الاطلاع عليه بتاريخ 17-03-2018 .