تعدد مهام الكمبيوتر


في الحوسبة ، تعدد المهام هو التنفيذ المتزامن لمهام متعددة (تُعرف أيضًا بالعمليات ) خلال فترة زمنية معينة. يمكن للمهام الجديدة مقاطعة المهام التي بدأت بالفعل قبل أن تنتهي ، بدلاً من انتظارها حتى تنتهي. نتيجة لذلك ، ينفذ الكمبيوتر أجزاء من مهام متعددة بطريقة متداخلة ، بينما تشترك المهام في موارد المعالجة المشتركة مثل وحدات المعالجة المركزية (وحدات المعالجة المركزية) والذاكرة الرئيسية . يؤدي تعدد المهام إلى مقاطعة البرنامج قيد التشغيل تلقائيًا وحفظ حالته (النتائج الجزئية ومحتويات الذاكرة ومحتويات تسجيل الكمبيوتر) وتحميل الحالة المحفوظة لبرنامج آخر ونقل التحكم إليه. هذا " تبديل السياق"قد يبدأ في فترات زمنية محددة ( تعدد المهام الوقائي ) ، أو قد يتم ترميز البرنامج قيد التشغيل للإشارة إلى البرنامج الإشرافي عندما يمكن مقاطعته ( تعدد المهام التعاوني ).
لا يتطلب تعدد المهام تنفيذًا متوازيًا لمهام متعددة في نفس الوقت تمامًا ؛ بدلاً من ذلك ، فإنه يسمح بأكثر من مهمة واحدة للتقدم خلال فترة زمنية معينة. [1] حتى في أجهزة الكمبيوتر متعددة المعالجات ، يسمح تعدد المهام بتشغيل العديد من المهام أكثر من تلك الموجودة في وحدات المعالجة المركزية.
تعد تعدد المهام ميزة شائعة لأنظمة تشغيل الكمبيوتر. يسمح باستخدام أكثر كفاءة لأجهزة الكمبيوتر ؛ حيث ينتظر البرنامج بعض الأحداث الخارجية مثل إدخال المستخدم أو نقل الإدخال / الإخراج مع طرف طرفي لإكماله ، فلا يزال من الممكن استخدام المعالج المركزي مع برنامج آخر. في نظام مشاركة الوقت ، يستخدم العديد من المشغلين نفس المعالج كما لو كان مخصصًا لاستخدامهم ، بينما يخدم الكمبيوتر وراء الكواليس العديد من المستخدمين من خلال تعدد المهام في برامجهم الفردية. في أنظمة البرمجة المتعددة ، يتم تشغيل المهمة حتى يجب انتظار حدث خارجي أو حتى يقوم برنامج جدولة نظام التشغيل بتبديل المهمة قيد التشغيل خارج وحدة المعالجة المركزية. في الوقت الحالىتتطلب أنظمة مثل تلك المصممة للتحكم في الروبوتات الصناعية المعالجة في الوقت المناسب ؛ يمكن مشاركة معالج واحد بين حسابات حركة الآلة ، والاتصالات ، وواجهة المستخدم. [2]
غالبًا ما تتضمن أنظمة التشغيل متعددة المهام إجراءات لتغيير أولوية المهام الفردية ، بحيث تتلقى الوظائف المهمة وقتًا أطول للمعالج مقارنة بتلك التي تعتبر أقل أهمية. اعتمادًا على نظام التشغيل ، قد تكون المهمة كبيرة مثل برنامج التطبيق بأكمله ، أو قد تتكون من سلاسل عمليات أصغر تقوم بتنفيذ أجزاء من البرنامج الكلي.
معالج مخصص للاستخدام مع أنظمة التشغيل متعددة المهام قد تشمل معدات خاصة لدعم المهام بشكل آمن متعددة، مثل حماية الذاكرة ، و حلقات الحماية التي تضمن البرنامج الإشرافي لا يمكن أن تتلف أو تخريب من قبل أخطاء البرنامج وضع المستخدم.
أصبح مصطلح "تعدد المهام" مصطلحًا دوليًا ، حيث يتم استخدام نفس الكلمة في العديد من اللغات الأخرى مثل الألمانية والإيطالية والهولندية والدنماركية والنرويجية.
البرمجة المتعددة
في الأيام الأولى للحوسبة ، كان وقت وحدة المعالجة المركزية باهظًا ، وكانت الأجهزة الطرفية بطيئة جدًا. عندما يقوم الكمبيوتر بتشغيل برنامج يحتاج إلى الوصول إلى جهاز طرفي ، يجب أن تتوقف وحدة المعالجة المركزية (CPU) عن تنفيذ تعليمات البرنامج أثناء معالجة الجهاز المحيطي للبيانات. كان هذا عادة غير فعال للغاية.
وكان أول جهاز كمبيوتر باستخدام نظام متعدد البريطانيين ليو الثالث يملكها J. ليون و شركة خلال تجهيز الدفعات ، تم تحميل عدة برامج مختلفة في ذاكرة الكمبيوتر، وبدأت أول واحد لتشغيل. عندما وصل البرنامج الأول إلى تعليمة تنتظر طرفًا ، تم تخزين سياق هذا البرنامج بعيدًا ، وأعطي البرنامج الثاني في الذاكرة فرصة للتشغيل. استمرت العملية حتى انتهاء تشغيل جميع البرامج. [ بحاجة لمصدر ]
تم تعزيز استخدام متعدد البرامج عن طريق وصول الذاكرة الظاهرية و الجهاز الظاهري التكنولوجيا، والتي مكنت البرامج الفردية للاستفادة من الذاكرة وتشغيل موارد النظام كما لو كانت البرامج الأخرى التي تعمل في نفس الوقت، لجميع الأغراض العملية، غير موجود. [ بحاجة لمصدر ]
لا تضمن البرمجة المتعددة أن البرنامج سيعمل في الوقت المناسب. في الواقع ، قد يعمل البرنامج الأول جيدًا لساعات دون الحاجة إلى الوصول إلى جهاز طرفي. نظرًا لعدم وجود مستخدمين ينتظرون في محطة تفاعلية ، لم تكن هذه مشكلة: قام المستخدمون بتسليم مجموعة من البطاقات المثقوبة إلى أحد المشغلين ، وعادوا بعد بضع ساعات للحصول على نتائج مطبوعة. أدت البرمجة المتعددة إلى تقليل أوقات الانتظار بشكل كبير عند معالجة دفعات متعددة. [3] [4]
تعدد المهام التعاوني
استخدمت أنظمة تعدد المهام المبكرة تطبيقات تتنازل طواعية عن الوقت لبعضها البعض. هذا النهج ، الذي تم دعمه في النهاية من قبل العديد من أنظمة تشغيل الكمبيوتر ، يُعرف اليوم باسم تعدد المهام التعاوني. على الرغم من أنه نادرًا ما يتم استخدامه الآن في أنظمة أكبر باستثناء تطبيقات معينة مثل CICS أو النظام الفرعي JES2 ، إلا أن تعدد المهام التعاوني كان في يوم من الأيام مخطط الجدولة الوحيد الذي يستخدمه Microsoft Windows و Classic Mac OS لتمكين تطبيقات متعددة من العمل في وقت واحد. لا يزال تعدد المهام التعاوني مستخدمًا اليوم على أنظمة RISC OS . [5]
نظرًا لأن النظام متعدد المهام التعاوني يعتمد على كل عملية تعطي الوقت بانتظام لعمليات أخرى على النظام ، يمكن لبرنامج واحد سيئ التصميم أن يستهلك كل وقت وحدة المعالجة المركزية لنفسه ، إما عن طريق إجراء حسابات مكثفة أو عن طريق الانتظار المزدحم ؛ كل من شأنه أن يتسبب في النظام بأكمله إلى تعليق . في بيئة الخادم ، يعد هذا خطرًا يجعل البيئة بأكملها هشة بشكل غير مقبول.
تعدد المهام الوقائي
يتيح تعدد المهام الوقائي لنظام الكمبيوتر أن يضمن بشكل أكثر موثوقية لكل عملية "شريحة" منتظمة من وقت التشغيل. كما يسمح للنظام بالتعامل بسرعة مع الأحداث الخارجية المهمة مثل البيانات الواردة ، والتي قد تتطلب اهتمامًا فوريًا بعملية أو أخرى. تم تطوير أنظمة التشغيل للاستفادة من إمكانيات الأجهزة هذه وتشغيل عمليات متعددة بشكل استباقي. تم تنفيذ تعدد المهام الوقائي في شاشة PDP-6 و MULTICS في عام 1964 ، وفي OS / 360 MFT في عام 1967 ، وفي Unix في عام 1969 ، وكان متاحًا في بعض أنظمة التشغيل لأجهزة الكمبيوتر الصغيرة مثل PDP-8 الخاص بـ DEC ؛ إنها سمة أساسية لجميع أنظمة التشغيل المشابهة لـ Unixأنظمة التشغيل، مثل لينكس ، وسولاريس و BSD مع ه المشتقات ، [6] وكذلك الإصدارات الحديثة من نظام التشغيل Windows.
في أي وقت محدد ، يمكن تجميع العمليات في فئتين: تلك التي تنتظر الإدخال أو الإخراج (تسمى " ربط الإدخال / الإخراج ") ، وتلك التي تستخدم وحدة المعالجة المركزية بالكامل (" وحدة المعالجة المركزية "). في الأنظمة البدائية ، غالبًا ما يقوم البرنامج " بالاستقصاء " أو " الانتظار " أثناء انتظار الإدخال المطلوب (مثل إدخال القرص أو لوحة المفاتيح أو الشبكة). خلال هذا الوقت ، لم يكن النظام يقوم بعمل مفيد. مع ظهور المقاطعات وتعدد المهام الاستباقي ، يمكن "حظر" عمليات الإدخال / الإخراج المقيدة ، أو تعليقها ، في انتظار وصول البيانات الضرورية ، مما يسمح للعمليات الأخرى باستخدام وحدة المعالجة المركزية. نظرًا لأن وصول البيانات المطلوبة سيؤدي إلى مقاطعة ،يمكن ضمان عودة العمليات المحظورة إلى التنفيذ في الوقت المناسب.[ بحاجة لمصدر ]
كان أقدم نظام تشغيل استباقي متعدد المهام متاحًا للمستخدمين المنزليين هو Sinclair QDOS على Sinclair QL ، والذي تم إصداره في عام 1984 ، لكن قلة قليلة من الناس اشتروا الجهاز. تم إصدار Amiga من Commodore في العام التالي ، وكان أول كمبيوتر منزلي ناجح تجاريًا يستخدم التكنولوجيا ، وقدراته في الوسائط المتعددة تجعله سلفًا واضحًا لأجهزة الكمبيوتر الشخصية متعددة المهام المعاصرة. جعلت Microsoft تعدد المهام الوقائي ميزة أساسية لنظام التشغيل الرئيسي الخاص بها في أوائل التسعينيات عند تطوير Windows NT 3.1 ثم Windows 95 . تم اعتماده لاحقًا على Apple Macintosh بواسطة Mac OS X ، مثل Unix نظام التشغيل ، يستخدم تعدد المهام الوقائي لجميع التطبيقات الأصلية.
ويستخدم نموذج مماثل في ويندوز 9x و عائلة Windows NT ، حيث يتم multitasked تطبيقات 32 بت الأم استباقي. [7] إصدارات 64 بت من نظام التشغيل Windows، سواء بالنسبة لل إكس86-64 و إيتانيوم أبنية، لم يعد دعم إرث تطبيقات 16 بت، وبالتالي توفر تعدد المهام وقائية لجميع التطبيقات المعتمدة.
الوقت الحقيقي
سبب آخر لتعدد المهام هو تصميم أنظمة الحوسبة في الوقت الفعلي ، حيث يوجد عدد من الأنشطة الخارجية التي قد لا علاقة لها والتي يلزم التحكم فيها بواسطة نظام معالج واحد. في مثل هذه الأنظمة ، يقترن نظام المقاطعة الهرمي بتحديد أولويات العملية لضمان منح الأنشطة الرئيسية حصة أكبر من وقت العملية المتاح . [ بحاجة لمصدر ]
تعدد
نظرًا لأن تعدد المهام أدى إلى تحسين إنتاجية أجهزة الكمبيوتر بشكل كبير ، فقد بدأ المبرمجون في تنفيذ التطبيقات كمجموعات من العمليات المتعاونة (على سبيل المثال ، عملية واحدة تجمع بيانات الإدخال ، عملية واحدة معالجة بيانات الإدخال ، عملية واحدة تكتب النتائج على القرص). هذا ، مع ذلك ، يتطلب بعض الأدوات للسماح للعمليات بتبادل البيانات بكفاءة. [ بحاجة لمصدر ]
نشأت الخيوط من فكرة أن الطريقة الأكثر فعالية لعمليات التعاون لتبادل البيانات هي مشاركة مساحة الذاكرة بأكملها. وبالتالي ، فإن الخيوط هي عمليات فعالة تعمل في نفس سياق الذاكرة وتشارك الموارد الأخرى مع العمليات الأصلية ، مثل الملفات المفتوحة. توصف الخيوط بأنها عمليات خفيفة الوزن لأن التبديل بين الخيوط لا يتضمن تغيير سياق الذاكرة. [8] [9] [10]
بينما تتم جدولة الخيوط بشكل استباقي ، توفر بعض أنظمة التشغيل متغيرًا للخيوط ، تسمى الألياف ، والتي تتم جدولتها بشكل تعاوني. في أنظمة التشغيل التي لا توفر الألياف ، قد يقوم التطبيق بتنفيذ أليافه الخاصة باستخدام استدعاءات متكررة لوظائف العامل. تعتبر الألياف خفيفة الوزن أكثر من الخيوط ، كما يسهل برمجتها إلى حد ما ، على الرغم من أنها تميل إلى فقدان بعض أو كل مزايا الخيوط على الأجهزة ذات المعالجات المتعددة . [11]
تدعم بعض الأنظمة تعدد مؤشرات الترابط في الأجهزة بشكل مباشر .
حماية الذاكرة
من الضروري لأي نظام متعدد المهام مشاركة الوصول إلى موارد النظام بشكل آمن وفعال. يجب إدارة الوصول إلى الذاكرة بشكل صارم لضمان عدم إمكانية القراءة أو الكتابة عن غير قصد أو عن عمد إلى مواقع الذاكرة خارج مساحة عنوان العملية. يتم ذلك لغرض استقرار النظام العام وتكامل البيانات ، بالإضافة إلى أمن البيانات.
بشكل عام ، تعد إدارة الوصول إلى الذاكرة مسؤولية نواة نظام التشغيل ، جنبًا إلى جنب مع آليات الأجهزة التي توفر وظائف داعمة ، مثل وحدة إدارة الذاكرة (MMU). إذا حاولت إحدى العمليات الوصول إلى موقع ذاكرة خارج مساحة الذاكرة الخاصة بها ، فإن MMU ترفض الطلب وتشير إلى kernel لاتخاذ الإجراءات المناسبة ؛ يؤدي هذا عادةً إلى إنهاء العملية المخالفة بالقوة. اعتمادًا على تصميم البرنامج والنواة والخطأ المحدد المعني ، قد يتلقى المستخدم رسالة خطأ انتهاك وصول مثل "خطأ التجزئة".
في نظام تعدد المهام المصمم جيدًا والمنفذ بشكل صحيح ، لا يمكن لعملية معينة الوصول مباشرة إلى الذاكرة التي تنتمي إلى عملية أخرى. استثناء لهذه القاعدة في حالة الذاكرة المشتركة ؛ على سبيل المثال ، في آلية الاتصال بين العمليات في النظام V ، تخصص النواة الذاكرة لتتم مشاركتها بشكل متبادل من خلال عمليات متعددة. غالبًا ما تستخدم هذه الميزات بواسطة برامج إدارة قواعد البيانات مثل PostgreSQL.
تسمح آليات حماية الذاكرة غير الكافية ، إما بسبب العيوب في تصميمها أو سوء التنفيذ ، بالثغرات الأمنية التي قد تستغلها البرامج الضارة.
تبديل الذاكرة
يعد استخدام ملف المبادلة أو قسم المبادلة طريقة لنظام التشغيل لتوفير ذاكرة أكبر مما هو متاح فعليًا عن طريق الاحتفاظ بأجزاء من الذاكرة الأساسية في التخزين الثانوي . في حين أن تعدد المهام ومبادلة الذاكرة هما أسلوبان غير مرتبطين تمامًا ، فغالبًا ما يتم استخدامهما معًا ، حيث تسمح ذاكرة التبديل بتحميل المزيد من المهام في نفس الوقت. عادةً ما يسمح نظام تعدد المهام بتشغيل عملية أخرى عندما تصل العملية الجارية إلى نقطة حيث يتعين عليها الانتظار حتى يتم إعادة تحميل جزء من الذاكرة من التخزين الثانوي. [12]
البرمجة
العمليات المستقلة تمامًا ليست مشكلة كبيرة في البرمجة في بيئة متعددة المهام. يأتي معظم التعقيد في أنظمة المهام المتعددة من الحاجة إلى مشاركة موارد الكمبيوتر بين المهام ومزامنة تشغيل مهام التشغيل المشتركة. [ بحاجة لمصدر ]
يتم استخدام تقنيات الحوسبة المتزامنة المختلفة لتجنب المشاكل المحتملة التي تسببها المهام المتعددة التي تحاول الوصول إلى نفس المورد. [ بحاجة لمصدر ]
تم بناء الأنظمة الأكبر في بعض الأحيان باستخدام معالج (معالجات) مركزي وعدد من معالجات الإدخال / الإخراج ، وهو نوع من المعالجة المتعددة غير المتماثلة . [ بحاجة لمصدر ]
على مر السنين ، تم تحسين أنظمة المهام المتعددة. تشتمل أنظمة التشغيل الحديثة بشكل عام على آليات مفصلة لتحديد أولويات العمليات ، في حين أن المعالجة المتعددة المتماثلة قد أدخلت تعقيدات وقدرات جديدة. [13]
انظر أيضا
المراجع
- ^ "التزامن مقابل التوازي ، البرمجة المتزامنة مقابل البرمجة الموازية" . وحي. مؤرشفة من الأصلي في 7 أبريل 2016 . تم الاسترجاع 23 مارس ، 2016 .
- ^ أنتوني رالستون ، إدوين د.رايلي (محرر) ، موسوعة علوم الكمبيوتر الإصدار الثالث ، فان نوستراند راينهولد ، 1993 ، ISBN 0-442-27679-6 ، مقالات "تعدد المهام" و "البرمجة المتعددة"
- ^ ليثمي (2019-05-20). "ما هو الفرق بين المعالجة الدفعية والبرمجة المتعددة" . بيديا كوم . تم الاسترجاع 2020/04/14 .
- ^ "تطور نظام التشغيل" . 2017-09-29 . تم الاسترجاع 2020/04/14 .
- ^ "تعدد المهام الوقائية" . riscos.info . 2009-11-03 . تم الاسترجاع 2014/07/27 .
- ^ "UNIX ، الجزء الأول" . مبادرة البحث الرقمي . ibiblio.org. 2002-01-30 . تم الاسترجاع 2014/01/09 .
- ^ جوزيف موران (يونيو 2006). "تطبيقات Windows 2000 و 16 بت" . الحوسبة الذكية . المجلد. 16 لا. 6. ص 32 - 33. مؤرشفة من الأصلي في 25 يناير 2009.
- ^ إدواردو سيليندو ؛ تاكيشيكا كونيماسا (25 أبريل 2008). "Linux Performance and Tuning Guidelines" (PDF) . redbooks.ibm.com . آي بي إم . ص. 4. مؤرشفة من الأصلي (PDF) في 26 فبراير 2015 . تم الاسترجاع 1 مارس ، 2015 .
- ^ "تعريف تبديل السياق" . linfo.org . 28 مايو 2006. مؤرشفة من الأصلي في 18 فبراير 2010 . تم الاسترجاع 26 فبراير ، 2015 .
- ^ "ما هي المواضيع (المستخدم / النواة)؟" . tldp.org . 8 سبتمبر 1997 . تم الاسترجاع 26 فبراير ، 2015 .
- ^ تعدد المهام بطرق مختلفة تم الوصول إليه في 19 فبراير 2019
- ^ "ما هو ملف المبادلة؟" . kb.iu.edu . تم الاسترجاع 2018/03/26 .
- ^ "هندسة أنظمة التشغيل" . cis2.oc.ctc.edu . تم الاسترجاع 2018/03/17 .