حاسوب متعدد المهام
في الحوسبة، تعدد المهام هو التنفيذ المتزامن لمهام متعددة (المعروفة أيضًا باسم العمليات) على مدى فترة معينة من الزمن. فالمهام الجديدة يمكن أن تقاطع المهام التي بدأت بالفعل قبل انتهائها، بدلًا من انتظارها حتى تنتهي. ونتيجة لذلك، يقوم الكمبيوتر بتنفيذ أجزاء من مهام متعددة بطريقة متداخلة، في حين أن المهام تشترك في موارد معالجة مشتركة، مثل وحدات المعالجة المركزية (CPUs) والذاكرة الرئيسية.
يقاطع تعدد المهام تلقائيًا البرنامج قيد التشغيل، ما يحفظ حالته (النتائج الجزئية، ومحتويات الذاكرة، ومحتويات تسجيل الكمبيوتر)، وتحميل الحالة المحفوظة لبرنامج آخر ونقل التحكم إليه. يمكن بدء -تبديل السياق- هذا في فترات زمنية محددة (تعدد المهام الوقائي)، أو يمكن ترميز البرنامج الجاري تشغيله للإشارة إلى البرنامج الإشرافي عندما يمكن مقاطعته (تعدد المهام التعاوني). لا يتطلب تعدد المهام تنفيذ مهام متعددة بصورة متوازية في الوقت نفسه بالضبط؛ وبدلًا من ذلك، يسمح هذا الخيار بتقديم أكثر من مهمة خلال فترة زمنية معينة.[1] حتى في أجهزة الكمبيوتر متعددة المعالجات، يسمح تعدد المهام بتشغيل المزيد من المهام أكثر من وحدات المعالجة المركزية. تعدد المهام هو سمة مشتركة في أنظمة تشغيل الكمبيوتر. يتيح استخدام أجهزة الحاسوب بكفاءة أكبر؛ عندما يكون البرنامج في انتظار بعض الأحداث الخارجية، مثل إدخال المستخدم أو نقل المدخلات / المخرجات مع وحدة طرفية لإكمالها، لا يزال من الممكن استخدام المعالج المركزي مع برنامج آخر.
في نظام المشاركة الزمنية، يستخدم العديد من المشغلين البشر المعالج نفسه، كما لو كان مكرسًا لاستخدامهم، في حين أن وراء الكواليس الكمبيوتر يخدم العديد من المستخدمين من طريق تعدد المهام الفردية برامجهم. في أنظمة تعدد البرمجة، تشغل المهمة حتى يجب أن تنتظر حدثًا خارجيًا أو حتى يقوم مجدول نظام التشغيل بتبديل المهمة قيد التشغيل بالقوة خارج وحدة المعالجة المركزية. وتحتاج النظم الآنية -مثل النظم المصممة لمراقبة الروبوتات الصناعية- إلى المعالجة في الوقت المناسب؛ يمكن مشاركة معالج واحد بين حسابات حركة الآلة والاتصالات وواجهة المستخدم.[2]
غالبًا ما تتضمن أنظمة التشغيل متعددة المهام إجراءات لتغيير أولوية المهام الفردية، بحيث تتلقى الوظائف المهمة وقتًا أطول للمعالج مقارنة بتلك التي تعد أقل أهمية. اعتمادًا على نظام التشغيل، قد تكون المهمة كبيرة مثل برنامج التطبيق بأكمله، أو قد تتكون من سلاسل عمليات أصغر تقوم بتنفيذ أجزاء من البرنامج الكلي.
قد يتضمن المعالج المخصص للاستخدام مع أنظمة التشغيل متعددة المهام عتادًا خاصًا لدعم مهام متعددة بنحو آمن، مثل حماية الذاكرة، وحلقات الحماية التي تضمن أن البرنامج المشرف لا يمكن أن يتلف بسبب أخطاء برنامج وضع المستخدم.
أصبح مصطلح «تعدد المهام» مصطلحًا دوليًا، إذ استُخدمت الكلمة نفسها في العديد من اللغات الأخرى، مثل الألمانية والإيطالية والهولندية والرومانية والتشيكية والدنماركية والنرويجية.
البرمجة المتعددة
[عدل]في الأيام الأولى للحوسبة، كان وقت وحدة المعالجة المركزية باهظًا، وكانت الأجهزة الطرفية بطيئة جدًا. عندما يقوم الكمبيوتر بتشغيل برنامج يحتاج إلى الوصول إلى جهاز طرفي، يجب على وحدة المعالجة المركزية التوقف عن تنفيذ تعليمات البرنامج في أثناء معالجة الجهاز المحيطي للبيانات. كان هذا عادة غير فعال جدًا.
كان أول حاسوب يستخدم نظامًا متعدد البرمجة هو الحاسوب البريطاني ليو الثالث، الذي تملكه شركة جي ليون وشركاه خلال المعالجة بالدفعات، جرى تحميل عدة برامج مختلفة في ذاكرة الحاسوب، وبدأ تشغيل البرنامج الأول. عندما وصل البرنامج الأول إلى تعليمات في انتظار جهاز طرفي، جرى تخزين سياق هذا البرنامج بعيدًا، وأعطِي البرنامج الثاني في الذاكرة فرصة للتشغيل. واستمرت العملية حتى انتهت جميع البرامج من العمل.
جرى تعزيز استخدام البرمجة المتعددة من طريق وصول الذاكرة الافتراضية وتقنية الآلة الافتراضية، التي مكنت البرامج الفردية من الاستفادة من الذاكرة وموارد نظام التشغيل، كما لو كانت البرامج الأخرى -التي تعمل في وقت واحد لجميع الأغراض العملية- غير موجودة.
المراجع
[عدل]- ^ "Concurrency vs Parallelism, Concurrent Programming vs Parallel Programming". Oracle. مؤرشف من الأصل في 2016-04-07. اطلع عليه بتاريخ 2016-03-23.
- ^ Anthony Ralston, Edwin D. Reilly (ed),Encyclopedia of Computer Science Third Edition, Van Nostrand Reinhold, 1993, (ردمك 0-442-27679-6), articles "Multitasking" and "Multiprogramming"