البرمجة

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

الفصل الثامن: تعدد المهام (Multitasking) في الحواسيب

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

أولاً: تعريف تعدد المهام

تعدد المهام في الحواسيب يشير إلى قدرة نظام التشغيل على تنفيذ أكثر من عملية (Process) أو مهمة (Task) في الوقت نفسه. ومن حيث المبدأ، فإن وحدة المعالجة المركزية (CPU) لا تستطيع تنفيذ أكثر من تعليمة واحدة في اللحظة نفسها، ولكن عبر آليات مثل تقسيم الوقت (Time Sharing) والتبديل السياقي (Context Switching)، يظهر للمستخدم وكأن المهام تُنفذ بالتوازي.

تنقسم تعددية المهام إلى نوعين رئيسيين: تعدد المهام التعاوني (Cooperative Multitasking) وتعدد المهام الاستباقي (Preemptive Multitasking). وفي حين يعتمد النوع الأول على تعاون العمليات فيما بينها لإعطاء فرصة للعمليات الأخرى بالتنفيذ، فإن النوع الثاني يعتمد على نظام التشغيل للتحكم الكامل في توزيع الوقت والموارد.

ثانياً: خلفية تاريخية

ظهر مفهوم تعدد المهام لأول مرة في أنظمة الحاسوب المركزية (Mainframes) في منتصف القرن العشرين، حيث كانت الحاجة إلى استخدام المعالجات بطريقة أكثر فاعلية. وقد أدت الابتكارات المتلاحقة في مجال نظم التشغيل مثل UNIX وVMS إلى تقديم بيئة خصبة لتنمية هذا المفهوم. وفي الحواسيب الشخصية، بدأ استخدام تعدد المهام بشكل موسع في التسعينات مع ظهور أنظمة مثل Windows 95 وMac OS.

ثالثاً: آليات تنفيذ تعدد المهام

1. تقسيم الوقت (Time Sharing)

يقوم نظام التشغيل بتقسيم وقت المعالج إلى فترات زمنية صغيرة، تسمى “الشرائح الزمنية” (Time Slices)، ويتم تخصيص كل شريحة لعملية معينة. وبمجرد انتهاء الشريحة، يتم تبديل المعالج إلى عملية أخرى وهكذا. يتم هذا التبديل بسرعة كبيرة بحيث يبدو للمستخدم أن العمليات تتم بالتوازي.

2. التبديل السياقي (Context Switching)

لكي يتمكن المعالج من التبديل بين العمليات، يقوم نظام التشغيل بحفظ حالة العملية الحالية (سجل المعالج، المؤشرات، إلخ) في مكان معين، ثم يقوم بتحميل حالة العملية التالية من الذاكرة لاستئناف تنفيذها. هذه العملية تسمى “التبديل السياقي”، وتعتبر من العمليات الحيوية ولكنها مكلفة من حيث الوقت والموارد.

3. الجدولة (Scheduling)

تعتمد كفاءة تعدد المهام على خوارزميات جدولة العمليات. ومن أهم هذه الخوارزميات:

اسم الخوارزمية الوصف الاستخدام النموذجي
خوارزمية الجولة الدائرية (Round Robin) تعطي كل عملية شريحة زمنية بالتناوب أنظمة متعددة المستخدمين
أقصر مهمة أولاً (Shortest Job First) يتم تنفيذ أقصر مهمة متاحة أولاً أنظمة المعالجة الدفعية
أولوية المهام (Priority Scheduling) تعطي الأفضلية للعمليات ذات الأولوية الأعلى أنظمة التشغيل في الوقت الحقيقي
الجدولة متعددة المستويات (Multilevel Queue) تفصل المهام في طوابير حسب نوعها وتطبق خوارزمية مختلفة لكل طابور الأنظمة المختلطة ومتعددة الأغراض

رابعاً: أنواع تعدد المهام

1. تعدد المهام التعاوني (Cooperative Multitasking)

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

2. تعدد المهام الاستباقي (Preemptive Multitasking)

هنا يتحكم نظام التشغيل في تخصيص المعالج، ويمكنه مقاطعة أي عملية عند انتهاء شريحتها الزمنية. يُستخدم هذا النموذج في معظم أنظمة التشغيل الحديثة مثل Windows، Linux، وmacOS.

خامساً: فوائد تعدد المهام

  • تحسين استغلال الموارد: يضمن عدم بقاء المعالج أو الذاكرة خاملة، ما يرفع من كفاءة النظام.

  • زيادة الإنتاجية: يمكن تنفيذ عدة برامج أو عمليات في الوقت ذاته مثل الطباعة والتصفح والتحديثات الخلفية.

  • تحسين تجربة المستخدم: لا يشعر المستخدم بتوقف النظام أو تجمّده عند تنفيذ مهام متعددة.

  • دعم البيئات متعددة المستخدمين: مثل خوادم الشبكات حيث يعمل عدة مستخدمين في الوقت نفسه.

سادساً: التحديات والمشكلات المصاحبة

رغم فوائده، يواجه تعدد المهام تحديات معقدة:

1. التجويع (Starvation)

يحدث عندما تستمر العمليات ذات الأولوية العالية في التنفيذ، مانعة العمليات ذات الأولوية المنخفضة من الحصول على فرصة.

2. الجمود (Deadlock)

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

3. التحميل الزائد (Overhead)

تعدد المهام يتطلب موارد زائدة لإدارة التبديل السياقي والجدولة، ما قد يؤثر على الأداء في الأنظمة ضعيفة الموارد.

4. مشاكل التزامن (Synchronization Issues)

عند مشاركة الموارد بين عدة عمليات، قد تحدث تعارضات أو نتائج غير متوقعة، مما يتطلب استخدام تقنيات مثل الأقفال (Locks) والإشارات (Semaphores).

سابعاً: تعدد المهام في أنظمة التشغيل المختلفة

Windows

يستخدم تعدد المهام الاستباقي مع خوارزميات جدولة ديناميكية تعتمد على الأولوية. يتم دعم الخيوط (Threads) والعمليات المتزامنة بكفاءة.

Linux

يوفر مرونة كبيرة في تعدد المهام عبر نواة مجدولة بالكامل (Fully Preemptive Kernel). يدعم نماذج جدولة متنوعة تشمل CFS (Completely Fair Scheduler).

macOS

يعتمد على نواة XNU التي تدمج تقنيات من BSD وMach، وتدعم تعدد المهام بطريقة شبيهة بنظام UNIX مع تحسينات على مستوى الواجهة الرسومية.

Android وiOS

كلاهما يدعمان تعدد المهام ولكن بشكل محدود بالنسبة للتطبيقات الخلفية، مع مراعاة استهلاك البطارية والموارد.

ثامناً: دور المعالجات متعددة النواة

مع تطور المعالجات متعددة النوى (Multi-core CPUs)، لم يعد تعدد المهام يعتمد فقط على تبديل العمليات بسرعة، بل أصبح بالإمكان تنفيذ المهام فعليًا بشكل متوازي. توفر كل نواة مسارًا مستقلاً لتنفيذ المهام، ما يزيد من كفاءة المعالجة ويخفض من التبديل السياقي. يعتمد استغلال هذه القدرات على قدرة نظام التشغيل وتطبيقات البرمجيات على دعم التوازي الحقيقي.

تاسعاً: التطبيقات العملية لتعدد المهام

الخوادم (Servers)

تعتمد على تعدد المهام لخدمة آلاف الطلبات من المستخدمين في الوقت نفسه. فعلى سبيل المثال، خوادم الويب تقوم بمعالجة اتصالات HTTP متعددة بكفاءة عالية.

أنظمة التحكم الصناعي

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

الهواتف الذكية

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

عاشراً: المستقبل والاتجاهات الحديثة

مع تطور تقنيات الذكاء الاصطناعي والحوسبة السحابية، باتت أنظمة تعدد المهام تواجه متطلبات جديدة، أبرزها:

  • الجدولة الذكية باستخدام التعلم الآلي لتحسين توزيع الموارد حسب سلوك المستخدم.

  • التعدد الهجين بين المعالج المركزي (CPU) والمعالج الرسومي (GPU) لتنفيذ المهام الكثيفة في الوقت الحقيقي.

  • الحوسبة المتوازية الضخمة (Massive Parallelism) في مراكز البيانات ومعالجة البيانات الكبيرة (Big Data).

  • الاعتماد على الحوسبة المتعددة الوكلاء (Multi-Agent Computing) حيث تعمل البرامج ككيانات مستقلة تتعاون أو تتنافس فيما بينها.

الحادي عشر: الخلاصة

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

المراجع:

  1. Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating System Concepts, 10th Edition. Wiley.

  2. Tanenbaum, A. S., & Bos, H. (2015). Modern Operating Systems, 4th Edition. Pearson.