Verifying Correctness of Shared Channels in a Cooperatively Scheduled Process-Oriented Language
Pedersen, Chalmers
Correct concurrent behaviour is important in understanding how components will act within certain conditions. In this work. we analyse the behaviour of shared communicating channels within a coorporatively scheduled runtime. We use the refinement checking and modelling tool FDR to develop both specifications of how such shared channels should behave and models of the implementations of these channels in the cooperatively scheduled language ProcessJ. Our results demonstrate that although we can certainly implement the correct behaviour of such channels, the outcome is dependant on having adequate resources available to execute all processes involved. We conclude that modelling the runtime environment of concurrent components is necessary to ensure components behave as specified in the real world.
academic
सहकारी रूप से अनुसूचित प्रक्रिया-उन्मुख भाषा में साझा चैनलों की शुद्धता का सत्यापन
यह पेपर सहकारी अनुसूचन रनटाइम वातावरण में साझा संचार चैनलों के व्यवहार का विश्लेषण करता है। अनुसंधान ने औपचारिक सत्यापन उपकरण FDR का उपयोग करके साझा चैनल व्यवहार विनिर्देशों और ProcessJ भाषा में चैनल कार्यान्वयन के मॉडल विकसित किए। परिणाम दर्शाते हैं कि हालांकि चैनल के सही व्यवहार को लागू किया जा सकता है, परिणाम सभी संबंधित प्रक्रियाओं को निष्पादित करने के लिए पर्याप्त संसाधनों की उपलब्धता पर निर्भर करते हैं। अनुसंधान इस निष्कर्ष पर पहुंचता है कि समवर्ती घटकों के रनटाइम वातावरण को मॉडल करना यह सुनिश्चित करने के लिए आवश्यक है कि घटक वास्तविक दुनिया में विनिर्देश के अनुसार व्यवहार करें।
समवर्ती सॉफ्टवेयर शुद्धता का महत्व: समवर्ती प्रणालियों का सही व्यवहार यह समझने के लिए महत्वपूर्ण है कि घटक विशिष्ट परिस्थितियों में कैसे चलते हैं। पारंपरिक परीक्षण विधियां व्यापक रूप से उपयोग की जाती हैं, लेकिन सभी संभावित समवर्ती त्रुटियों को खोजने में विफल हो सकती हैं।
औपचारिक सत्यापन की आवश्यकता: लेखक मंगल अन्वेषक सॉफ्टवेयर के उदाहरण से समझाते हैं कि कैसे एक साधारण डेडलॉक त्रुटि को 8 मिलियन सेकंड (90 दिन से अधिक) तक प्रतीक्षा करने की आवश्यकता हो सकती है ताकि इसे 50% संभावना के साथ परीक्षण द्वारा खोजा जा सके, जबकि CSP और FDR का उपयोग करके औपचारिक सत्यापन ऐसी त्रुटियों को तुरंत खोज सकता है।
रनटाइम सिस्टम सत्यापन की चुनौतियां: चूंकि अधिकांश प्रोग्राम प्रोग्रामिंग भाषा के रनटाइम सिस्टम पर निर्मित होते हैं, यह सुनिश्चित करना महत्वपूर्ण हो जाता है कि रनटाइम सिस्टम त्रुटि-मुक्त है और विनिर्देश के अनुसार व्यवहार करता है।
निष्पादन वातावरण को अनदेखा करना: चैनल सिस्टम सत्यापन की पारंपरिक विधियां रनटाइम सिस्टम, निष्पादन प्रणाली, हार्डवेयर आदि को मॉडल नहीं करती हैं, यह मानते हुए कि तैयार घटनाएं अनुसूचित होने तक उपलब्ध रहेंगी।
संसाधन दुर्लभता की धारणा: मानक मॉडलिंग विधियां मानती हैं कि घटनाएं तुरंत हो सकती हैं, जिसका अर्थ है कि घटना निष्पादित करते समय संसाधन उपलब्ध हैं, लेकिन यह चरम धारणा वास्तविकता में सत्य नहीं है।
अनुसूचन वातावरण का प्रभाव: प्रक्रियाओं को तैयार कतार के अंत में अनुसूचित होने की प्रतीक्षा करनी चाहिए, उनकी घटनाएं तुरंत उपलब्ध नहीं होंगी, लेकिन पारंपरिक विधियां इस स्थिति पर विचार नहीं करती हैं।
ProcessJ एक प्रक्रिया-उन्मुख प्रोग्रामिंग भाषा है जो CSP शब्दार्थ पर आधारित है, सहकारी अनुसूचन को नियोजित करती है और JVM पर चलती है। यह पेपर ProcessJ रनटाइम में साझा चैनल कार्यान्वयन की शुद्धता को सत्यापित करने का लक्ष्य रखता है, विशेष रूप से अनुसूचन वातावरण के चैनल व्यवहार पर प्रभाव पर ध्यान केंद्रित करता है।
ProcessJ साझा चैनल कार्यान्वयन की शुद्धता का सत्यापन: यह साबित किया कि मौजूदा सहकारी अनुसूचक का उपयोग करके ProcessJ साझा चैनल कार्यान्वयन सही है, CSP अनुवाद और सामान्य साझा चैनल मॉडल के परिशोधन जांच द्वारा सत्यापित किया गया है।
साझा चैनल विनिर्देश के विस्तारित बीजगणितीय प्रमाण का विकास: साझा चैनल विनिर्देश वास्तव में CSP साझा चैनल के रूप में व्यवहार करते हैं, इसका औपचारिक प्रमाण प्रदान किया गया है।
संसाधनों और सक्रिय प्रक्रियाओं के बीच संबंध का आगे प्रमाण: उपलब्ध संसाधनों और सक्रिय प्रक्रियाओं की संख्या के बीच विनिर्देश को संतुष्ट करने के संबंध को फिर से प्रदर्शित किया, यह साबित किया कि दोनों दिशाओं में विनिर्देश और मॉडल के बीच परिशोधन प्राप्त करने के लिए, उपलब्ध अनुसूचकों की संख्या प्रणाली में प्रक्रियाओं की संख्या के बराबर या अधिक होनी चाहिए।
SCHEDULER =
rqdequeue?p → -- एक प्रक्रिया को डीकू करें
run.p → -- इसे चलाएं
yield.p → -- छोड़ने की प्रतीक्षा करें
SCHEDULER -- पुनरावर्ती
SCHEDULE_MANAGER =
schedule?pid → -- अनुसूचन घटना की प्रतीक्षा करें
rqenqueue!pid → -- प्रक्रिया को चलाने की कतार में डालें
SCHEDULE_MANAGER -- पुनरावर्ती
पारंपरिक विधियों के विपरीत, यह पेपर सत्यापन प्रक्रिया में स्पष्ट रूप से सहकारी अनुसूचक को मॉडल करता है, जो केवल विशिष्ट अनुसूचन परिस्थितियों में दिखाई देने वाली समस्याओं को खोजने में सक्षम बनाता है।
अनुसूचकों की संख्या को बदलकर, विभिन्न संसाधन कॉन्फ़िगरेशन के तहत सिस्टम व्यवहार में परिवर्तन का अध्ययन किया गया, संसाधन पर्याप्तता और शुद्धता के बीच संबंध खोजा गया।
संसाधन पर्याप्तता प्रमेय: जब अनुसूचकों की संख्या कुल प्रक्रियाओं की संख्या के बराबर या अधिक हो, तो विफलता मॉडल में दोनों दिशाओं में परिशोधन प्राप्त किया जा सकता है।
अपर्याप्त संसाधनों का प्रभाव:
अनुसूचक अपर्याप्त होने पर, केवल ट्रेस परिशोधन प्राप्त किया जा सकता है, विफलता परिशोधन नहीं
इसका अर्थ यह नहीं है कि प्रणाली डेडलॉक होगी, बल्कि कुछ ट्रेस अब प्राप्य नहीं हैं
अनुसूचन कतार का प्रभाव: चलाने की कतार प्रक्रियाओं पर प्राकृतिक क्रम लागू करती है, जब अनुसूचक अपर्याप्त होते हैं, तो कुछ प्रक्रियाओं का स्वीकृति सेट प्रणाली की समग्र स्वीकृति सेट में शामिल नहीं होगा।
यह पेपर 51 संबंधित संदर्भों का हवाला देता है, मुख्य रूप से शामिल हैं:
CSP मौलिक सिद्धांत: Hoare के शास्त्रीय CSP कार्य और संबंधित सिद्धांत
औपचारिक सत्यापन उपकरण: FDR उपकरण और संबंधित सत्यापन विधियां
समवर्ती प्रोग्रामिंग भाषाएं: JCSP, occam-π, Go, Erlang आदि भाषाओं पर संबंधित अनुसंधान
अनुसूचन एल्गोरिदम: पारस्परिक बहिष्करण एल्गोरिदम और समवर्ती एल्गोरिदम पर संबंधित कार्य
लेखकों का पूर्व कार्य: ProcessJ रनटाइम सत्यापन पर अनुसंधान श्रृंखला
सारांश: यह पेपर औपचारिक सत्यापन क्षेत्र में महत्वपूर्ण योगदान देता है, विशेष रूप से निष्पादन वातावरण पर विचार करने वाली समवर्ती प्रणाली सत्यापन के पहलू में। हालांकि कुछ सीमाएं हैं, लेकिन इसकी विधि और निष्कर्ष समवर्ती प्रणालियों की विश्वसनीयता में सुधार के लिए महत्वपूर्ण मूल्य रखते हैं।