الألياف (علوم الحاسوب)

في علوم الحاسوب ، يُعتبر الليف خيطًا خفيف الوزن بشكل خاص للتنفيذ .

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

الخيوط والألياف والروتينات الفرعية

يتمثل الفرق الرئيسي بين الألياف وخيوط النواة في أن الألياف تستخدم تبديل السياق التعاوني، بدلاً من تقسيم الوقت الاستباقي. في الواقع، تُوسّع الألياف تصنيف التزامن.

  • يمكن تشغيل عمليات متعددة على جهاز كمبيوتر واحد
  • يمكن تشغيل عدة خيوط ضمن عملية واحدة
  • يمكن أن تعمل ألياف متعددة داخل خيط واحد [ 1 ]

تمثل الألياف (التي تسمى أحيانًا بالروتينات الفرعية المكدسة أو الخيوط المجدولة بشكل تعاوني في وضع المستخدم) والروتينات الفرعية غير المكدسة (آلات الحالة المصنعة بواسطة المترجم) نوعين متميزين من أدوات البرمجة مع اختلافات كبيرة في الأداء والوظائف. [ 2 ]

المزايا والعيوب

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

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

دعم نظام التشغيل

يحتاج نظام التشغيل إلى دعم أقل للألياف مقارنةً بالخيوط. ويمكن تنفيذها في أنظمة يونكس الحديثة باستخدام دوال المكتبة getcontext و setcontext و swapcontext ، كما <ucontext.h>هو الحال في GNU Portable Threads ، أو بلغة التجميع boost::fibers.

في نظام التشغيل مايكروسوفت ويندوز ، تُنشأ الألياف باستخدام استدعاءات ConvertThreadToFiber`and` CreateFiber؛ ويمكن استئناف عمل الليف المعلق حاليًا في أي سلسلة عمليات. ويمكن استخدام التخزين المحلي للألياف، المشابه للتخزين المحلي لسلسلة العمليات ، لإنشاء نسخ فريدة من المتغيرات. [ 3 ]

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

أمثلة على تطبيق الألياف الضوئية

يمكن تنفيذ الألياف دون دعم نظام التشغيل، على الرغم من أن بعض أنظمة التشغيل أو المكتبات توفر دعمًا صريحًا لها.

انظر أيضاً

مراجع