العمليات التسلسلية المتواصلة (نموذج حوسبة)

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

وقد كان لنموذج CSP تأثير بالغ الأهمية في تصميم لغة البرمجة أوكام. كما ألهم تصميم العديد من لغات البرمجة[1] الأخرى مثل ليمبو، و RaftLib، و إرلانج، و غو ، و كريستال،[2] بالإضافة إلى مكتبة core.async في لغة كلوجر.

أُورِدَ وصف نموذج عمليات الاتصال المتسلسلة (CSP) للمرة الأولى على يد توني هوار في مقال نُشر عام 1978، وشهد تطورات جوهرية منذ ذلك الحين. وقد استُخدم CSP على نطاق تطبيقي واسع في الصناعة كأداة لتوصيف والتحقق من الجوانب المتزامنة في طيف متنوع من الأنظمة، من بينها معالج T9000 Transputer، بالإضافة إلى أنظمة التجارة الإلكترونية الآمنة.[3] إن نظرية الطاقة الشمسية المركزة نفسها لا تزال أيضًا موضوعًا للبحث النشط، بما في ذلك العمل على زيادة نطاق تطبيقها العملي (على سبيل المثال، زيادة نطاق الأنظمة التي يمكن تحليلها بسهولة). [4]

تاريخ

النسخة الأصلية

كانت النسخة الأولى من CSP، التي قدمها هوار في مقاله عام 1978، أقرب إلى لغة برمجة متزامنة بدائية وليست حساب عمليات بالمعنى الدقيق. تميزت بناء جملة مختلفة بشكل كبير عن الإصدارات اللاحقة من CSP، وافتقرت إلى دلالات محددة رياضيًا، كما لم تكن قادرة على تمثيل عدم التحديد غير المحدود. في CSP الأصلي، كانت البرامج تُكتب كتكوين متوازٍ لعدد ثابت من العمليات المتسلسلة التي تتواصل فيما بينها حصريًا عبر تبادل الرسائل المتزامنة.على النقيض من الإصدارات اللاحقة من CSP، تم تعيين اسم صريح لكل عملية، وتم تحديد مصدر أو وجهة الرسالة من خلال تحديد اسم عملية الإرسال أو الاستلام المقصودة. على سبيل المثال، العملية

نسخ = *[c:character; غرب؟ ج → شرق! ج]

يشير مصطلح "التكوين المتوازي" إلى طريقة دمج أو تجميع عدة عمليات لتكوين نظام أكبر. في سياق CSP، يتم تمثيل التكوين المتوازي لعمليتين، على سبيل المثال P و Q، بالرمز $\(P \parallel Q\)$. هذا يعني أن العمليتين P و Q تعملان بشكل متزامن وتتفاعلان مع بعضهما البعض عبر قنوات الاتصال.

[غرب: تفكيك || X: نسخ || شرق: تجميع]

تقوم هذه العبارة بتحديد أسماء لثلاث عمليات مختلفة ثم تنفذها بشكل متزامن. [5]

التطوير في جبر العمليات

بعد نشر النسخة الأصلية من CSP، قام هواري وستيفن بروكس وأيه دبليو روسكوي بتطوير وتحسين نظرية CSP إلى شكلها الجبري العملي الحديث. كان النهج المتبع في تطوير CSP إلى جبر العملية متأثرًا بعمل روبن ميلنر في حساب أنظمة الاتصال (CCS) والعكس صحيح. تم تقديم النسخة النظرية من CSP في البداية في مقال عام 1984 بقلم بروكس وهوار وروسكو، [6] وفي وقت لاحق في كتاب هوار "التواصل بالعمليات المتسلسلة" ، [7] والذي نُشر في عام 1985. في سبتمبر 2006، كان هذا الكتاب لا يزال ثالث أكثر المراجع استشهادًا في علوم الكمبيوتر على الإطلاق وفقًا لـ Citeseer[بحاجة لمصدر] (على الرغم من أن المصدر المذكور قد لا يكون موثوقًا به تمامًا نظرًا لطبيعة العينة التي استُخلص منها). لقد طرأت بعض التعديلات الطفيفة على نظرية CSP منذ نشر كتاب هوار. وكان الدافع الرئيسي وراء معظم هذه التغييرات هو ظهور أدوات آلية تهدف إلى تحليل نماذج CSP والتحقق من صحتها. ويقدم كتاب Roscoe المعنون "نظرية وممارسة التزامن" وصفًا لهذا الإصدار الأحدث من CSP.

التطبيقات

كان أحد التطبيقات المبكرة والهامة لنموذج عمليات الاتصال المتسلسلة (CSP) هو استخدامه في تحديد والتحقق من عناصر معالج INMOS T9000 Transputer. كان T9000 معالجًا دقيقًا فائق القياس ومعقدًا صُمم لدعم المعالجة المتعددة على نطاق واسع. وقد استُخدم CSP في التحقق من صحة كل من خط أنابيب المعالج ووحدة معالجة القنوات الافتراضية، التي كانت مسؤولة عن إدارة الاتصالات خارج شريحة المعالج.[8]

عادةً ما ركزت التطبيقات الصناعية لنموذج عمليات الاتصال المتسلسلة (CSP) في تصميم البرمجيات على الأنظمة التي تتطلب موثوقية عالية وحساسة للسلامة. على سبيل المثال، قام معهد بريمن للأنظمة الآمنة وشركة دايملر بنز للفضاء بوضع نموذج لنظام إدارة الأخطاء وواجهة إلكترونيات الطيران (الذي يتكون من حوالي 23000 سطر من التعليمات البرمجية) والمخصص للاستخدام في محطة الفضاء الدولية باستخدام CSP. وقد قاموا بتحليل هذا النموذج للتأكد من أن تصميمهم خالٍ من حالات الجمود (deadlock) والحبس الحي (livelock) . [9] [10] تمكنت عملية النمذجة والتحليل من الكشف عن عدد من الأخطاء التي كان من الصعب اكتشافها باستخدام الاختبار وحده. وعلى نحو مماثل، طبقت شركة Praxis High Integrity Systems نمذجة وتحليل CSP أثناء تطوير البرمجيات (حوالي 100 ألف سطر من التعليمات البرمجية) لهيئة إصدار شهادات بطاقات ذكية آمنة للتحقق من أن تصميمها آمن وخالٍ من الجمود. تزعم شركة براكسيس أن النظام لديه معدل عيوب أقل بكثير من الأنظمة المماثلة. [11]

نظرًا لأن نموذج عمليات الاتصال المتسلسلة (CSP) يتمتع بقدرة فائقة على نمذجة وتحليل الأنظمة التي تتضمن تبادلات رسائل معقدة، فقد تم تطبيقه أيضًا على نطاق واسع للتحقق من صحة بروتوكولات الاتصالات والأمان. ومن الأمثلة البارزة على هذا النوع من التطبيقات استخدام Lowe لنموذج CSP واستخدام مدقق التحسين FDR لاكتشاف هجوم غير معروف سابقًا عل بروتوكول مصادقة المفتاح العام Needham–Schroeder ، ثم تطوير بروتوكول مصحح قادر على هزيمة الهجوم. [12]

وصف غير رسمي

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

البدائيون

يوفر نموذج عمليات الاتصال المتسلسلة (CSP) فئتين أساسيتين من العناصر الأولية في جبر العمليات الخاص به: الأحداث و العمليات البدائية. الأحداث تمثل الأحداث في CSP عمليات الاتصال أو التفاعل بين العمليات وبيئتها أو بين العمليات المتزامنة ذاتها. وتتميز بكونها فورية، حيث أن الملاحظة الخارجية للعملية تقتصر على هذه الاتصالات. لا يقع الحدث إلا بتوافق البيئة، وإذا عرضت العملية حدثًا وكانت البيئة مستعدة، فيجب أن يحدث. ويمكن أن تكون الأحداث مجرد أسماء ذرية بسيطة. (مثل on و off )، أو أسماء مركبة (مثل valve.open و valve.close )، أو أحداث إدخال/إخراج (مثل mouse?xy و screen!bitmap ). مجموعة كل الأحداث يشار إليها . [13]

العمليات البدائية

تجسد العمليات البدائية في CSP السلوكيات الأساسية التي تُستخدم كنقطة انطلاق لبناء وصف أكثر تعقيدًا للأنظمة المتزامنة. من الأمثلة على هذه العمليات الأولية: STOP، التي تمثل حالة التوقف الفوري أو الانسداد، و SKIP، التي تعبر عن الإكمال الناجح والفوري للعملية.[13]

العمليات الجبرية

يشتمل نموذج عمليات الاتصال المتسلسلة (CSP) على مجموعة واسعة من المُشغلات الجبرية (Algebraic Operators). وفيما يلي عرض غير رسمي للعناصر الرئيسية من هذه المشغلات

بادئة

يقوم عامل البادئة (Prefix Operator) بدمج حدث وعملية لإنتاج عملية جديدة. على سبيل المثال، العملية هي عملية تبدأ بالرغبة في التواصل مع بيئتها عبر الحدث . وبعد وقوع الحدث ، تتصرف العملية الجديدة تمامًا مثل العملية (P).[13]

التكرار

يُمكن تعريف العمليات في CSP باستخدام مفهوم التكرار. فإذا كان يمثل أي تعبير في CSP يتضمن العملية ، فإن يُعرّف عملية متكررة تحقق المعادلة . وبالمثل، يمكن تعريف التكرارات بشكل تبادلي.مثل

الذي يحدد زوجًا من العمليات المتكررة المتبادلة التي تتناوب بين التواصل و . [13]

الاختيار الحتمي

يُمكِّن مشغل الاختيار الحتمي (deterministic choice)، ويُعرف أيضًا باسم الاختيار الخارجي (external choice)، من تحديد المسار المستقبلي لتطور عملية ما كخيار بين عمليتين فرعيتين. في هذا النوع من الاختيار، تلعب البيئة دورًا حاسمًا في تحديد أي من العمليتين سيتم تنفيذهما لاحقًا، وذلك عن طريق التواصل مع حدث أولي خاص بإحدى العمليتين.، هي العملية التي ترغب في توصيل الأحداث الأولية و ويتصرف بعد ذلك كأي منهما أو ، اعتمادًا على الحدث الأولي الذي تختار البيئة التواصل معه. [13]

الاختيار غير الحتمي

يمكّن مشغل الاختيار غير الحتمي (nondeterministic choice)، ويُعرف أيضًا باسم الاختيار الداخلي (internal choice)، من تحديد المسار المستقبلي لتطور عملية ما كبديل بين عمليتين فرعيتين، ولكن دون منح البيئة أي قدرة على التأثير أو التحكم في أي من هاتين العمليتين سيتم اختيارهما للتنفيذ. على سبيل المثال يمكن أن يتصرف مثل أي منهما أو . ويمكنه أن يرفض القبول أو ولا يلتزم بالتواصل إلا إذا كانت البيئة توفر كليهما و .

يمكن أن ينشأ عدم التحديد بشكل غير مقصود في عملية اختيار حتمي اسميًا ($\(\square\)$) إذا كانت الأحداث الأولية التي يمكن أن تحدث في كلا جانبي الاختيار متطابقة. و متكافئة. [13]

التداخل

يمثل عامل التداخل (Interleaving Operator) تنفيذًا متزامنًا ومستقلاً تمامًا لعمليتين. العملية تتصرف كسلوك كل من العملية والعملية في آن واحد. تتداخل الأحداث الصادرة من كلتا العمليتين بترتيب عشوائي في الزمن.

يمكن أن يؤدي التداخل إلى إدخال عدم التحديد حتى لو كانت كل من و عمليتين حتميتين في حد ذاتهما. فإذا كان بإمكان كل من $\(P\)$ و التواصل عبر نفس الحدث، فإن العملية ستختار بشكل غير حتمي أي من العمليتين قامت بتوصيل هذا الحدث في تلك اللحظة.[13]

واجهة متوازية

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

[13]

على سبيل المثال، العملية تتطلب أن يكون كل من و قادرين على تنفيذ الحدث a حتى يقع هذا الحدث. بناءً على ذلك، فإن العملية. لذا، فإن العملية يعادل ، بينما يعادل (أي حالة تصل فيها العملية إلى طريق مسدود ولا يمكنها التقدم أكثر).

إخفاء

يوفر عامل الإخفاء (Hiding Operator) في CSP طريقة قوية لتجريد العمليات من التفاصيل الداخلية، وذلك عن طريق جعل مجموعة معينة من الأحداث غير قابلة للملاحظة أو غير مرئية للبيئة الخارجية. هي العملية مع مجموعة الحدث مختفي.

مثال بسيط على استخدام عامل الإخفاء هو . وبافتراض أن الحدث لا يظهر في العملية ، فإن هذه العملية تختزل ببساطة إلى العملية .

يتم استيعاب الأحداث المخفية على هيئة أفعال داخلية غير مرئية وغير قابلة للتحكم من قبل البيئة، ويُشار إليها عادةً بالرمز . يؤدي وجود عامل الإخفاء إلى إدخال سلوك إضافي يُعرف باسم التباعد ().

أمثلة

أحد الأمثلة الكلاسيكية للتفاعلات الرقمية هو التمثيل المجرد لآلة بيع الشوكولاتة وتفاعلاتها مع شخص يرغب في شراء قطعة من الشوكولاتة. قد تكون هذه الآلة قادرة على تنفيذ حدثين متميزين: "عملة" (يمثل إدخال الدفع) و "شوكولاتة" (يمثل تسليم الشوكولاتة). يمكن وصف سلوك الآلة التي تتطلب إدخال الدفع (بالنقود فقط) قبل تقديم الشوكولاتة على النحو التالي باستخدام لغة CSP:

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

يمكن وضع هاتين العمليتين جنبًا إلى جنب لتكوين عملية مركبة، بحيث يمكنهما التفاعل والتواصل مع بعضهما البعض. ويعتمد السلوك الناتج للعملية المركبة على تحديد الأحداث التي يجب أن تتزامن فيها العمليتان المكونتان. على سبيل المثال:

في حين أنه إذا كانت المزامنة مطلوبة فقط على الحدث "العملة"، فسنحصل على العملية التالية:

إذا قمنا بتجريد هذه العملية المركبة الأخيرة عن طريق إخفاء الحدثين "العملة" و"البطاقة"، أي بتطبيق عامل الإخفاء ∖{عملة,بطاقة}،

نحصل على العملية غير الحتمية

هذه العملية إما أن تقدم حدثًا باسم "شوكولاتة" ثم تتوقف عن العمل، أو أنها تتوقف مباشرة دون تقديم أي حدث. وبعبارة أخرى، إذا نظرنا إلى التجريد على أنه رؤية خارجية للنظام (على سبيل المثال، من منظور شخص لا يرى عملية اتخاذ القرار الداخلي)، فإن هذا يمثل حالة من <b>عدم التحديد</b> (nondeterminism).

التعريف الرسمي

بناء الجملة

يحدد بناء جملة لغة CSP الطرق "القياسية" التي يمكن بها تجميع العمليات والأحداث. لنفترض أن e يمثل حدثًا ما، وأن X يمثل مجموعة من الأحداث. عندئذٍ، يمكن تعريف البناء الأساسي لجملة لغة CSP على النحو التالي:

تجدر الإشارة إلى أنه بغرض الإيجاز، فإن البناء النحوي الموضح أعلاه يحذف عامل "div" الذي يمثل التباعد، بالإضافة إلى العديد من العوامل الأخرى مثل الاختيارات المتوازية الأبجدية، وعامل الأنابيب (piping)، والاختيارات المفهرسة.

الدلالات الرسمية

تتضمن لغة CSP مجموعة متنوعة من الدلالات الرسمية المختلفة، والتي تحدد المعنى الدقيق للتعبيرات الصحيحة نحويًا في لغة CSP. تشمل النظرية الكامنة وراء CSP <b>الدلالات الدلالية</b> المتسقة المتبادلة، و <b>الدلالات الجبرية</b> ، و الدلالات التشغيلية

الدلالات الإشارية

تتمثل النماذج الدلالية الرئيسية الثلاثة للغة CSP في نموذج التتبعات (Traces Model)، و نموذج الفشل المستقر (Stable Failures Model)، و نموذج الفشل/التباعدات (Failures/Divergences Model). [14]وتوفر التعيينات الدلالية من تعبيرات العملية إلى كل من هذه النماذج الثلاثة الدلالات الرسمية للغة CSP .

نموذج الآثار

يُعرّف نموذج التتبعات معنى تعبير العملية على أنه مجموعة من تسلسلات الأحداث (التتبعات) التي يمكن ملاحظتها أثناء قيام العملية بتنفيذها. على سبيل المثال،

  • منذ لا يقوم بأي أحداث
  • منذ العملية يمكن ملاحظة عدم حدوث أي أحداث، أو الحدث a ، أو تسلسل الأحداث a الذي يليه b

بشكل أكثر دقة، يُعرّف نموذج الآثار بأنه مجموعة من المجموعات الفرعية المغلقة ذات البادئة غير الفارغة للمجموعة (مجموعة جميع التسلسلات المنتهية المحتملة للأحداث من الأبجدية Σ). ويُحدد معنى العملية P في نموذج الآثار على أنه مجموعة من الآثار بحيث:

  1. (أي يحتوي على التسلسل الفارغ)
  2. (أي (مغلقة بالبادئة)

أين هي مجموعة كل التسلسلات المحدودة الممكنة للأحداث.

نموذج الفشل المستقر

يمتد نموذج الفشل المستقر إلى نموذج التتبعات باستخدام مجموعات الرفض، وهي مجموعات من الأحداث X⊆Σ التي يمكن للعملية أن ترفض القيام بها. يُعرّف الفشل بأنه زوج (s,X)، يتكون من تتبع s ومجموعة رفض X تحدد الأحداث التي قد ترفض العملية المشاركة فيها بمجرد تنفيذ التتبع s. ويُوصَف السلوك المرصود لعملية في نموذج الفشل المستقر بواسطة الزوج (traces(P),failures(P))، حيث

. على سبيل المثال،

نموذج الفشل/التباعد

ويمتد نموذج الفشل/التباعد إلى نموذج الفشل لمعالجة حالات التباعد بشكل منفصل. وتُعرّف دلالات العملية في نموذج الفشل/التباعد على أنها زوج أين تُعرّف على أنها مجموعة كل الآثار التي يمكن أن تؤدي إلى سلوك متباعد و .

نقاط ثابتة فريدة

أحد المبادئ الأساسية في لغة CSP هو قاعدة النقطة الثابتة الفريدة (Unique Fixed Point Rule - UFP). تنص إحدى الصيغ الخاصة بالتكرارات الفردية في نموذج التتبعات على أنه إذا هي دالة على مجموعات التتبع التي تم إنشاؤها بواسطة عملية التكرار المحمي، ، و هي عملية حيث هي نقطة ثابتة لـ ، ثم يعادل في نموذج الآثار .[15] ويمكن أيضًا توسيع قاعدة النقطة الثابتة الفريدة (UFP) لتشمل التكرارات المتبادلة ونماذج CSP الأخرى.

أدوات

على مدار السنوات، تم تطوير العديد من الأدوات لتحليل وفهم الأنظمة التي يتم وصفها باستخدام لغة CSP. استخدمت التطبيقات الأولية لهذه الأدوات مجموعة متنوعة من القواعد النحوية التي يمكن قراءتها آليًا لـ CSP، مما أدى إلى عدم توافق ملفات الإدخال المكتوبة لأدوات مختلفة. ومع ذلك، فقد اتجهت غالبية أدوات CSP الآن نحو التوحيد القياسي على لهجة CSP التي يمكن قراءتها آليًا والتي ابتكرها برايان سكاترجود.والتي يشار إليها أحيانًا باسم CSP M. [16] تتمتع لهجة CSP M من CSP بدلالات تشغيلية محددة رسميًا، والتي تتضمن لغة برمجة وظيفية مضمنة.

روزفلت

ربما تكون الأداة الأكثر شيوعًا لتحليل لغة CSP هي Failures-Divergences Refinement (FDR)، وهو منتج تجاري تم تطويره في الأصل بواسطة شركة Formal Systems (Europe) Ltd. غالبًا ما يوصف FDR بأنه مدقق نموذج (model checker)، ولكنه من الناحية التقنية مدقق تحسين (refinement checker). يقوم FDR بتحويل تعبيرين لعملية CSP إلى أنظمة انتقال مُصنفة (Labeled Transition Systems - LTS)، ثم يحدد ما إذا كانت إحدى العمليتين تمثل تحسينًا للأخرى ضمن نموذج دلالي محدد (سواء كان ذلك نموذج الآثار، أو نموذج الإخفاقات، أو نموذج الإخفاقات/التباعد). [17] تطبق FDR خوارزميات ضغط مختلفة لمساحة الحالة على عمليات LTS من أجل تقليل حجم مساحة الحالة التي يجب استكشافها أثناء فحص التحسين. خلف FDR FDR2 وFDR3 وFDR4. [18]

قوس

مدقق تحسين أديلايد (ARC) [19] هو أداة لفحص وتحسين نماذج CSP، وقد تم تطويرها بواسطة مجموعة النمذجة والتحقق الرسمية في جامعة أديلايد. يتميز ARC عن مدقق FDR2 في طريقة تمثيله الداخلية لعمليات CSP، حيث يستخدم مخططات قرار ثنائية مرتبة (OBDDs). يساهم هذا النهج في التخفيف من مشكلة انفجار الحالات التي تواجه التمثيلات الصريحة لأنظمة انتقال الحالة (LTS)، وذلك دون الحاجة إلى استخدام خوارزميات ضغط مساحة الحالة المشابهة لتلك المستخدمة في FDR2.

بروب

تم تطوير مشروع ProB ،[20] الذي يستضيفه معهد المعلوماتية بجامعة هاينريش هاينه في دوسلدورف، في الأساس لدعم تحليل المواصفات المكتوبة بلغة B. ومع ذلك، فقد تم توسيع قدراته ليشمل دعم تحليل عمليات CSP من خلال إجراء فحوصات التحسين والتحقق من نماذج LTL (المنطق الزمني الخطي). بالإضافة إلى ذلك، يمكن استخدام ProB للتحقق من خصائص المواصفات التي تجمع بين لغتي CSP و B. وقد تم دمج برنامج ProBE CSP Animator الخاص بالمشروع في أداة FDR3.

بات

مجموعة أدوات تحليل العملية (PAT) [21] [22] هي أداة تحليل CSP تم تطويرها في كلية الحوسبة في الجامعة الوطنية في سنغافورة . تتمكن PAT من إجراء فحص التحسين، وفحص نموذج LTL، ومحاكاة عمليات CSP وCSP المؤقتة. تمتد لغة عملية PAT إلى CSP مع دعم للمتغيرات المشتركة القابلة للتغيير، وتمرير الرسائل غير المتزامنة، ومجموعة متنوعة من هياكل العملية المتعلقة بالعدالة والوقت الكمي مثل deadline و waituntil . المبدأ الأساسي لتصميم لغة عملية PAT هو الجمع بين لغة المواصفات عالية المستوى والبرامج الإجرائية (على سبيل المثال، قد يكون الحدث في PAT عبارة عن برنامج متسلسل أو حتى استدعاء مكتبة C# خارجية) لتحقيق قدر أكبر من التعبيرية. توفر المتغيرات المشتركة القابلة للتغيير والقنوات غير المتزامنة بنية نحوية مبسطة ومريحة لأنماط نمذجة العمليات الشائعة المستخدمة في لغة CSP القياسية. يتميز بناء جملة لغة PAT بتشابه مع لغة CSP M، ولكنه ليس مطابقًا لها تمامًا .[23] وتتمثل الاختلافات الرئيسية بين بناء جملة PAT ولغة CSP M القياسية في استخدام الفواصل المنقوطة لإنهاء تعبيرات العمليات، وإضافة بنية نحوية مختصرة للمتغيرات والمهام، واستخدام صيغة مختلفة قليلًا لعمليات الاختيار الداخلي والتكوين المتوازي.

آحرون

يقوم برنامج[24] VisualNets بإنشاء تصورات متحركة لأنظمة CSP انطلاقًا من مواصفاتها، كما يدعم لغة CSP الموقوتة زمنيًا.

يُعد برنامج [25] CSPsim محاكيًا يعتمد على التقييم الكسول (Lazy evaluation). وعلى الرغم من أنه لا يجري عملية فحص شاملة لنموذج CSP، إلا أنه يظل أداة قيمة لاستكشاف الأنظمة الكبيرة جدًا، والتي قد تكون ذات طبيعة لانهائية.

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

الصياغات ذات الصلة

انبثقت أو استُلهمت العديد من لغات المواصفات والصيغ الرسمية الأخرى من لغة CSP الكلاسيكية غير المحددة زمنيًا، ومن بينها:

مقارنة مع نموذج الممثل

في سياق الأنظمة المتزامنة التي تعتمد على تبادل الرسائل، يتقارب نموذج الممثل بشكل ملحوظ مع نموذج CSP. ومع ذلك، يتبنى النموذجان خيارات مختلفة جوهريًا فيما يتعلق بالعناصر الأولية التي يقدمونها:

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

إن السمات المذكورة سابقًا لا تعكس بالضرورة التصور الأولي لـ CSP كما قدمه Hoare في ورقته البحثية الأصلية. بل إنها تمثل الفهم والتطبيق الحديثين لهذه الأفكار، كما هو واضح في تطبيقات مثل لغة Go ومكتبة core.async في لغة Clojure. ففي النسخة الأصلية من CSP، لم تكن القنوات مكونًا محوريًا في المواصفات، وكانت عمليات الإرسال والاستقبال تعتمد على تحديد الطرف الآخر بالاسم لإتمام الاتصال.

جائزة

في عام 1990، مُنح مختبر الحوسبة بجامعة أكسفورد جائزة الملكة للإنجاز التكنولوجي. وقد جاء هذا التكريم اعترافًا بالشراكة المثمرة التي جمعت المختبر بشركة Inmos Ltd. وكان المنتج الأساسي لشركة Inmos هو "transputer"، وهو عبارة عن معالج دقيق يدمج في مكون واحد العديد من الأجزاء التي عادةً ما تكون مطلوبة بشكل منفصل. [26] وفقًا لتوني هوار، [27] "كان INMOS Transputer تجسيدًا لأفكار ... بناء معالجات دقيقة يمكنها التواصل مع بعضها البعض عبر أسلاك تمتد بين محطاتها. كان لدى المؤسس رؤية مفادها أن أفكار CSP كانت ناضجة للاستغلال الصناعي، وجعل ذلك أساس لغة برمجة Transputer، والتي كانت تسمى Occam . ... قدرت الشركة أنها مكنتهم من تسليم الأجهزة قبل عام واحد مما كان سيحدث بخلاف ذلك. تقدموا بطلب وفازوا بجائزة الملكة للإنجاز التكنولوجي، بالاشتراك مع مختبر الحوسبة بجامعة أكسفورد."

انظر أيضا

  • نظرية الأثر ، النظرية العامة للآثار.
  • تتبع المونويد والتاريخ المونويد
  • لغة البرمجة السهلة
  • لغة برمجة XC
  • VerilogCSP عبارة عن مجموعة من وحدات الماكرو المضافة إلى Verilog HDL لدعم عمليات الاتصال المتسلسلة عبر قنوات الاتصالات.
  • Joyce هي لغة برمجة تعتمد على مبادئ CSP، تم تطويرها بواسطة Brinch Hansen حوالي عام 1989.
  • SuperPascal هي لغة برمجة طورها أيضًا Brinch Hansen ، متأثرًا بـ CSP وعمله السابق مع Joyce .
  • تطبق Ada ميزات CSP مثل اللقاء.
  • DirectShow هو إطار عمل الفيديو داخل DirectX ، ويستخدم مفاهيم CSP لتنفيذ مرشحات الصوت والفيديو.
  • OpenComRTOS هو نظام تشغيل في الوقت الحقيقي موزع يتمحور حول الشبكة وتم تطويره رسميًا ويعتمد على مجموعة فرعية عملية من CSP.
  • أتمتة الإدخال/الإخراج
  • نموذج البرمجة المتوازية
  • TLA+ هي لغة رسمية أخرى للنمذجة والتحقق من الأنظمة المتزامنة.

مراجع

  1. Inmos (12 مايو 1995). occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd. مؤرشف من الأصل (PDF) في 2024-07-25., INMOS document 72 occ 45 03.
  2. "10 Academic and Historical Questions". اطلع عليه بتاريخ 2021-11-15.
  3. Hall، A؛ Chapman، R. (2002). "Correctness by construction: Developing a commercial secure system" (PDF). IEEE Software. ج. 19 ع. 1: 18–25. CiteSeerX:10.1.1.16.1811. DOI:10.1109/52.976937. مؤرشف من الأصل (PDF) في 2025-03-10.
  4. Creese، S. (2001). Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks (D. Phil. thesis). Oxford University. CiteSeerX:10.1.1.13.7185.
  5. Hoare، C. A. R. (1978). "Communicating sequential processes". Communications of the ACM. ج. 21 ع. 8: 666–677. DOI:10.1145/359576.359585. S2CID:849342.
  6. Brookes، Stephen؛ Hoare، C. A. R.؛ Roscoe، A. W. (1984). "A Theory of Communicating Sequential Processes". Journal of the ACM. ج. 31 ع. 3: 560–599. DOI:10.1145/828.833. S2CID:488666.
  7. Hoare، C. A. R. (1985). Communicating Sequential Processes. Prentice Hall. ISBN:978-0-13-153289-2.
  8. Barrett، G. (1995). "Model checking in practice: The T9000 Virtual Channel Processor". IEEE Transactions on Software Engineering. ج. 21 ع. 2: 69–78. DOI:10.1109/32.345823.
  9. Buth، B.؛ M. Kouvaras؛ J. Peleska؛ H. Shi (ديسمبر 1997). Deadlock analysis for a fault-tolerant system. ص. 60–75.
  10. Buth، B.؛ J. Peleska؛ H. Shi (يناير 1999). Combining methods for the livelock analysis of a fault-tolerant system. ص. 124–139.
  11. Hall، A؛ Chapman، R. (2002). "Correctness by construction: Developing a commercial secure system" (PDF). IEEE Software. ج. 19 ع. 1: 18–25. CiteSeerX:10.1.1.16.1811. DOI:10.1109/52.976937. مؤرشف من الأصل (PDF) في 2025-03-10.Hall, A; Chapman, R. (2002). "Correctness by construction: Developing a commercial secure system" (PDF). IEEE Software. 19 (1): 18–25. CiteSeerX 10.1.1.16.1811. doi:10.1109/52.976937.
  12. Lowe، G. (1996). Breaking and fixing the Needham–Schroeder public-key protocol using FDR. Springer-Verlag. ص. 147–166. مؤرشف من الأصل في 2008-03-28.
  13. 1 2 3 4 5 6 7 8 Roscoe، A.W. (2010). Understanding Concurrent Systems. Texts in Computer Science. DOI:10.1007/978-1-84882-258-0. ISBN:978-1-84882-257-3.Roscoe, A.W. (2010). Understanding Concurrent Systems. Texts in Computer Science. doi:10.1007/978-1-84882-258-0. ISBN 978-1-84882-257-3.
  14. Roscoe، A. W. (1997). The Theory and Practice of Concurrency (PDF). برنتيس هول . ISBN:978-0-13-674409-2. مؤرشف من الأصل (PDF) في 2025-01-29.{{استشهاد بكتاب}}: صيانة الاستشهاد: علامات ترقيم زائدة (link)
  15. Roscoe، A.W. (2010). Understanding Concurrent Systems. Texts in Computer Science. DOI:10.1007/978-1-84882-258-0. ISBN:978-1-84882-257-3.
  16. Scattergood، J. B. (1998). The Semantics and Implementation of Machine-Readable CSP (D.Phil. thesis). Oxford University Computing Laboratory.
  17. Roscoe، A. W. (1994). "Model-checking CSP". A Classical Mind: Essays in Honour of C. A. R. Hoare. Prentice Hall.
  18. "Introduction — FDR 4.2.4 documentation". www.cs.ox.ac.uk.
  19. Parashkevov، Atanas N.؛ Yantchev، Jay (1996). ARC – a tool for efficient refinement and equivalence checking for CSP. ص. 68–75. CiteSeerX:10.1.1.45.3212.
  20. Leuschel، Michael؛ Fontaine، Marc (2008). Probing the Depths of CSP-M: A new FDR-compliant Validation Tool (PDF). Springer-Verlag. مؤرشف من الأصل (PDF) في 2011-07-19. اطلع عليه بتاريخ 2008-11-26.
  21. Sun، Jun؛ Liu، Yang؛ Dong، Jin Song (2009). PAT: Towards Flexible Verification under Fairness (PDF). Lecture Notes in Computer Science. Springer. ج. 5643. مؤرشف من الأصل (PDF) في 2011-06-11. اطلع عليه بتاريخ 2009-06-16.
  22. Sun، Jun؛ Liu، Yang؛ Dong، Jin Song (2008). Model Checking CSP Revisited: Introducing a Process Analysis Toolkit (PDF). Communications in Computer and Information Science. Springer. ج. 17. ص. 307–322. مؤرشف من الأصل (PDF) في 2009-01-08. اطلع عليه بتاريخ 2009-01-15.
  23. Sun، Jun؛ Liu، Yang؛ Dong، Jin Song؛ Chen، Chunqing (2009). Integrating Specifications and Programs for System Specification and Verification (PDF). مؤرشف من الأصل (PDF) في 2011-06-11. اطلع عليه بتاريخ 2009-04-13.
  24. Green، Mark؛ Abdallah، Ali (2002). Performance Analysis and Behaviour Tuning for Optimisation of Communicating Systems.
  25. Brooke، Phillip؛ Paige، Richard (2007). Lazy Exploration and Checking of CSP Models with CSPsim.
  26. Geraint Jones (1990). "Sharp as a Razor: A Queen's Award for the Computing Laboratory". The Oxford Magazine ع. 59, Fourth Week, Trinity Term. مؤرشف من الأصل في 2021-10-18.
  27. Len Shustek (مارس 2009). "An interview with C.A.R. Hoare". Communications of the ACM. ج. 52 ع. 3: 38–41. DOI:10.1145/1467247.1467261. S2CID:1868477. مؤرشف من الأصل في 2022-04-08.

قراءة إضافية

روابط خارجية

  • نسخة PDF من كتاب Hoare's CSP - تخضع لقيود حقوق النشر، راجع نص الصفحة قبل التنزيل.
  • شرح CSP (النسخة الصينية) ، عمل ترجمة وشرح غير ربحي يعتمد على كتاب برنتيس هول (1985)، والنسخة الصينية لتشاوتشين تشو (1988)، والنسخة الإلكترونية لجيم ديفيز (2015).
  • تحتوي WoTUG ، وهي مجموعة مستخدمين لأنظمة CSP وأسلوب أوكام، على بعض المعلومات حول CSP والروابط المفيدة.
  • "استشهادات CSP" من CiteSeer