تشعب (حوسبة): الفرق بين النسختين

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
CipherBot (نقاش | مساهمات)
ط تدقيق إملائي وتنسيق
ط تعديلات بسيطة وتنظيم
سطر 1:
في [[معلوماتية|المعلوماتية]] و[[الحوسبة]]، '''الخيط''' أو '''سلسلة التعليمات''' '''thread''' (أو ''thread of execution'') هي عبارة عن مسار لتنفيذ العملية وبما انه مجرد مسار فانه لا يحتاج لمصادر خاصة لانه يستخدم مصادر العملية [[برنامج حاسوبي|برنامج]] ليقوم بأكثر من [[مهمة (معلوماتية)|مهمة]] Task بشكل متزامن (أو بشكل متزامن افتراضي) لكن إذا كانت وحدة المعالجة المركزية باكثر من نواة فانه يقوم بعمل تزامن حقيقي. بهذا فهو يتميز عن [[عملية (معلوماتية)|العملية]] Process بشكل عام في طريقة إنشاء سلسلة التعليمات وطريقة مشاركتها لمصادرها بشكل مختلف عن العمليات لكن هذه الفوارق في النهاية تختلف حسب [[نظام التشغيل]].
 
يمكن تنفيذ سلاسل تعليمات متعددة بشكل متواز على عدة أنظمة حاسوبية. وكان هذا يدعى قديما بالتنفيذ المتعدد للسلاسل التعلميمية ''multithreading'' ويحدث عن طريق [[تعدد المهام الحاسوبية|تعدد المهام]] computer multitasking أو ما يدعى بتجزئة الزمنالوقت time slicing وحيث يقوم [[وحدة معالجة مركزية|معالج مركزي]] [[تبديل|بالتبديل]] بين سلاسل التعليمات المختلفة. (ضمن هذا المفهوم التنفيذ ليس متزامنا بالنسبة لمعالج واحد لكننا نعتبره تزامنا مزيفا لأن التبديل يتم بسرعة كبيرة تعطينا انطباع بوهم التزامن)، بالمقابل يمكننا انجاز تزامن حقيقي عن طريق الاستعانة بمعالجاتبحاسوب متعدد المعالجات أو معالجات متعددة النواةالأنوية .
 
في الوقت الراهن، العديد من أنظمة التشغيل تدعم تجزئة الزمن وتعدد المهام، أو التنفيذ متعدد المعالجات multiprocessor threading عن طريق [[منسق مواعيد|منسق عمليات]] scheduler. تمكن [[نواة (معلوماتية)|نوى]] أنظمة التشغيل المبرمجين من التعامل مع عدة سلاسل تعليمات عن طريق واجهة [[استدعاء (نظام تشغيل)|استدعاءات النظام]] system call. بعض التطبيقات لهذا الموضوع يدعى ''سلسلة تعليمات النواة'' ''kernel thread'' حيث تكون ''العمليات الخفيفة'' ''lightweight process'' أنماطا خاصة من سلاسل تعليمات النواة والتي تتشارك بنفس الحالة ونفس المعلومات. ويبقى المبرمجون قادرين على تطبيق سَلسَلة التعليمات threading عن طريق المؤقتات، الإشارات، أو وسائل أخرى لتفسير تسلسل تنفيذ التعليمات وبالتالي الحصول على تجزئة زمنية جيدة. وهذا ما يدعى أحيانا : ''سلاسل تعليمات مجال المستخدم'' ''user-space threads''.في أغلب أنظمة التشغيل لايتم تنفيذ سلاسل تعليمات المستخدم الا عبر سلسلة تعليمات النواة.
 
علاقة سلاسل مجال المستخدم وسلاسل تعليمات النواة:هناك اربع أنواع من العلاقات تربط النوعين من السلاسل وهي كالتالي.
1-# واحد إلى متعدد:في هذا النوع من العلاقات يرتبط كل تشعب نواة باكثر من تشعب مستخدم. تتميز باستغلال تشعبات النواة لكنها في نفس الوقت تتسبب في الضغط على تشعبات النواة، يستخدم هذا النوع في أنظمة جرين سولاريس، وجنو.
2-# واحد لواحد : في هذا النوع من العلاقات يرتبط كل تشعب من تشعبات المستخدم بتشعب واحد فقط من تشعبات النواة، يتضح لنا انه لو ان هناك تشعب واحد من تشعبات النواة تعطل فان تشعب المستخدم الذي كان متصلا به لن ينففذ ابداً.
3-# متعدد لمتعدد : هذا النوع من العلاقات تقوم كل مجموعة من تشعبات النواة بإدارة مجموعة من تشعبات المستخدم.
4-# نمط المستويين : يستخدم هذا النوع من العلاقات هجين من النوعين السابقين بحيث يسمح بعلاقات واحد لواحد ومتعدد لمتعدد، هذا النوع هو الأكثر استخداما حالياً
هناك ثلاث مكتبات أساسية للتشعبات أو السلاسل : (1) PThreads: وهي اختصار لل POSIX Threads وتستخدم في يونكس وماكنتوش وغيرهما كما تسمح باستخدام سلاسل على مستوى النواة أو على مستوى المستخدم. (2) Win32 Threads : وهي المستخدمة في أنظمة تشغيل ويندوز "النوافذ" ولا تسمح للمستخدم في التعامل مع تشعبات " سلاسل " النواة وانما تتوفر له هذه السلاسل في مجال المستخدم فقط. (3) Java Threads : وهي خاصة ببرامج لغة الجافا وتقوم بإنشاء سلاسل خاصة بكل برنامج على حدة.