2010-03-18 23 views
7

पाइप और संदेश कतारों के बीच सभी अंतर क्या हैं?पाइप और संदेश कतारों के बीच सभी अंतर क्या हैं?

कृपया vxworks & यूनिक्स दृष्टिकोण दोनों से समझाएं।

मुझे लगता है कि पाइप एकजुट हैं लेकिन संदेश कतार नहीं हैं।

लेकिन पाइप आंतरिक रूप से संदेश कतारों का उपयोग नहीं करते हैं, तो पाइप कैसे unidirectional आते हैं लेकिन संदेश कतार नहीं हैं?

अन्य अंतर क्या हैं जो आप सोच सकते हैं (डिजाइन या उपयोग या अन्य दृष्टिकोण से)?

+0

मैं सामान्य रूप में लगता है कि वे एक ही बात कर रहे हैं। संदेश कतार यह सुनिश्चित करने के लिए होती है कि डेटा प्राप्तकर्ता को आता है। इसलिए जब तक प्राप्तकर्ता उपलब्ध नहीं हो जाता है, तब तक वे डेटा को जारी रख सकते हैं, लेकिन मुझे लगता है कि यह अनिवार्य नहीं है और कार्यान्वयन निर्भर है, जैसे यूनी/बिडरेक्शनल, या लगातार/सिंगल-मैसेज पाइप इत्यादि ... पाइप का उपयोग तारों के टुकड़े भेजने के लिए किया जाता है और द्विआधारी डेटा, जबकि कतारों को संदेश भेजने के लिए उपयोग किया जाता है, लेकिन फिर से, यह कार्यान्वयन पर निर्भर हो सकता है। अगर हम मैसेजिंग के बारे में बात कर रहे हैं तो लोग पहिया को फिर से शुरू करना पसंद करते हैं। कुछ शर्तों में 5 से अधिक अलग-अलग नाम हैं ... – inf3rno

उत्तर

-1

एमक्यू में कर्नेल दृढ़ता है, और कई प्रक्रियाओं द्वारा खोला जा सकता है।

+0

केन, मुझे यकीन नहीं है कि आप क्या कह रहे हैं ... vxWorks के संदर्भ में, पाइप कई प्रक्रियाओं द्वारा खोला जा सकता है। मुझे यकीन नहीं है कि कर्नेल दृढ़ता का क्या अर्थ है। – Benoit

+0

ऐसा प्रतीत होता है कि vxWorks "पाइप" हर दूसरे आधुनिक ऑपरेटिंग सिस्टम पर "पाइप" से बहुत अलग हैं। आप मान सकते हैं कि मेरा उत्तर प्रत्येक गैर-vxWorks सिस्टम पर लागू होता है। :-) – Ken

+0

कर्नेल दृढ़ता का अर्थ है कि यह तब तक जारी रहता है जब तक कि कर्नेल करता है, फाइल सिस्टम दृढ़ता के विपरीत, प्रक्रिया दृढ़ता (जो पाइप, कम से कम यूनिक्स पर) आदि – Ken

11

संदेश कतार हैं:

  • यूनिडायरेक्शनल
  • प्रविष्टियों स्थिर संख्या
  • प्रत्येक प्रविष्टि एक अधिकतम आकार
  • सभी कतार स्मृति (# प्रविष्टियों * प्रविष्टि आकार) निर्माण
  • पर आवंटित है
  • डेटाग्राम-जैसे व्यवहार: एक प्रविष्टि पढ़ने से इसे कतार से हटा दिया जाता है। यदि आप पूरे डेटा को नहीं पढ़ते हैं, तो बाकी खो जाता है। उदाहरण के लिए: 20 बाइट संदेश भेजें, लेकिन रिसीवर 10 बाइट्स पढ़ता है। शेष 10 बाइट खो गए हैं।
  • टास्क कर सकते हैं केवल एक ही कतार msqQReceive के प्रयोग पर pend (है कि वैकल्पिक एपीआई के साथ बदलने के लिए तरीके देखते हैं)
  • भेजने के दौरान, आप pend अगर कतार भर गई है (और आप NO_WAIT नहीं करते)
  • जब प्राप्त करना, आप करेंगे pend (और आप NO_WAIT नहीं करते)
  • टाइमआउट पर प्राप्त हो जाएगा और भेज

पाइप्स का समर्थन कर रहे है, तो कतार खाली है

  • संदेश पंक्तियों पर एक परत है < --- यूनिडायरेक्शनल!
  • अधिकतम तत्व हैं और प्रत्येक तत्व का अधिकतम आकार
  • एक स्ट्रीमिंग इंटरफेस नहीं है। आंकड़ारेख अर्थ विज्ञान, बस सूची संदेश कतार
  • पढ़ने पर, विल PEND
  • लिखने पर, पढ़ने के लिए डेटा उपलब्ध होने तक विल PEND नहीं होने तक, संदेश निहित कतार में अंतरिक्ष
  • कई पाइपों पर प्रतीक्षा करने के लिए चयन की सुविधा का उपयोग कर सकते

यही वह है जो मैं अभी सोच सकता हूं। VxWorks दस्तावेज कहता है,

+0

'पेंड' क्या है? –

+2

कार्य पेंड किए गए राज्य में है, जिसका अर्थ है कि यह कुछ होने का इंतजार कर रहा है: इस मामले में, कतार में कुछ (जब पढ़ना) या खाली स्लॉट (लिखते समय) है। – Benoit

1

"VxWorks पाइप यूनिक्स पाइप से काफी भिन्न है", और वे मजाक नहीं कर रहे हैं। Here's the manpages

ऐसा लगता है कि यूनिक्स पाइप और vxWorks पाइप के बीच एकमात्र समानता यह है कि वे आईपीसी के रूप में एकमात्र समानता यह कहने के लिए अतिरंजित नहीं होंगे।विशेषताएं अलग हैं, एपीआई अलग हैं, और कार्यान्वयन निश्चित रूप से बहुत अलग हैं।

0

मुझे यह अंतर IPC in UNIX में भी मिला। यह बताता है कि उनके बीच का अंतर यह है कि संदेश कतार और पाइप यह है कि पहले स्टोर/पैकेट में जानकारी पुनर्प्राप्त करते हैं। जबकि पाइप चरित्र द्वारा चरित्र करते हैं।

संदेश कतार:

संदेश कतार: एक अनाम डेटा पाइप के समान धारा, लेकिन दुकानों और पैकेट में जानकारी प्राप्त करता है।

पाइप

पाइप: एक दो तरह से डेटा स्ट्रीम मानक इनपुट और उत्पादन के माध्यम से interfaced और चरित्र

मैं भी इस सवाल का यहां पाया द्वारा चरित्र पढ़ा जाता है: Pipe vs msg queue

0

संदेश कतार और पाइप की तुलना: - एक संदेश कतार का उपयोग सीधे दोनों में डेटा पास करने के लिए किया जा सकता है आयनों - संदेश नहीं की जरूरत है-पहले बाहर आधार पहले पर पढ़ा जा करने के लिए, लेकिन चुनिंदा बजाय स्रोत संसाधित किया जा सकता: देखने http://www.cs.vsb.cz/grygarek/dosys/IPC.txt

संबंधित मुद्दे