सिस्टम V IPC बनाम POSIX IPC


84
  1. क्या अंतर हैं System V IPCऔर POSIX IPC?
  2. हमारे पास दो मानक क्यों हैं?
  3. कैसे तय करें कि किस IPC का उपयोग करना है?

2
मेरे पास एक कारण था जिसके कारण मुझे पॉज़िक्स से अधिक sysv संदेश की कतारें चुननी पड़ीं। पॉज़िक्स संदेश कतार में mtype द्वारा संदेश देने की संभावना समर्थित नहीं है। मैंने इसके बारे में ब्लॉग किया था ..
takladev

कर्ट वॉल द्वारा लिनक्स प्रोग्रामिंग अनलिस्टेड 2 एडिशन शीर्षक वाली किताब में , पृष्ठ 382, ​​इसने कहा: मुझे पता चलता है कि क्या लिनक्स में सुधार उस मुद्दे को संबोधित करने के लिए किया गया था, अगर कोई जानता है तो कृपया बताएं। आज, मैं भी इसी तरह की पसंद पॉज़िक्स आईपीसी या सिस्टम वी आईपीसी का सामना कर रहा हूं और मेरा दृष्टिकोण यह समझना है कि आईपीसी आदिम किस प्रकार का उपयोग करने जा रहा है क्योंकि एक से दूसरे में फायदे हैं। उदाहरण के लिए, एक प्रक्रिया अचानक मर सकती है और फिर क्या? System V IPC is well known and commonly used, but the Linux implementation of it is badly broken.
eigenfield

जवाबों:


106

दोनों के पास एक ही मूल उपकरण है - अर्ध-अंश, साझा की गई स्मृति और संदेश कतार। वे उन उपकरणों के लिए थोड़ा अलग इंटरफ़ेस पेश करते हैं, लेकिन मूल अवधारणाएं समान हैं। एक उल्लेखनीय अंतर यह है कि POSIX संदेश कतारों के लिए कुछ अधिसूचना सुविधाएँ प्रदान करता है जो Sys V नहीं करता है। (देखें mq_notify()।)

Sys V IPC व्यावहारिक प्रभाव के एक जोड़े के साथ लंबे समय तक रहा है -

सबसे पहले, POSIX IPC कम व्यापक रूप से लागू किया जाता है। मैंने POSIX IPC के लिए पायथन रैपर लिखा है और इसके प्रलेखन की सूची है कि मुझे विभिन्न प्लेटफार्मों पर POSIX IPC कार्यान्वयन के बारे में क्या पता है

उस प्रलेखन में सूचीबद्ध सभी प्लेटफार्मों पर, Sys V IPC को पूरी तरह से AFAIK लागू किया गया है, जबकि आप देख सकते हैं कि POSIX IPC नहीं है।

उनके सापेक्ष उम्र का दूसरा निहितार्थ यह है कि SOS V IPC को कुछ समय के लिए उपयोग किए जाने के बाद POSIX IPC डिजाइन किया गया था। इसलिए, POSIX API के डिज़ाइनर Sys V API की खूबियों और खामियों से सीखने में सक्षम थे। परिणामस्वरूप POSIX API IMO का उपयोग करने के लिए सरल और आसान है, और मैं इसे Sys V API की सलाह देता हूं।

मुझे ध्यान देना चाहिए कि मैंने दोनों की तुलना करने के लिए कभी कोई प्रदर्शन परीक्षण नहीं चलाया है। मुझे लगता है कि पुराने API (Sys V) के पास प्रदर्शन ट्यून होने के लिए अधिक समय होगा, लेकिन यह केवल अटकलें हैं जो निश्चित रूप से वास्तविक दुनिया के परीक्षण के लिए कोई विकल्प नहीं हैं।

जैसे कि दो मानक क्यों हैं - POSIX ने अपना मानक बनाया क्योंकि उन्हें लगा कि यह Sys V मानक पर एक सुधार था। लेकिन अगर हर कोई इस बात से सहमत है कि POSIX IPC बेहतर है, तो कई कई प्रोग्राम अभी भी Sys V IPC का उपयोग करते हैं और उन सभी को POSIX IPC में पोर्ट करने में कई साल लग जाएंगे। व्यवहार में, यह प्रयास के लायक नहीं होगा, भले ही कल के रूप में सभी नए कोड ने POSIX IPC का उपयोग किया हो, Sys V IPC कई वर्षों के लिए चारों ओर चिपक जाएगा।

हम आपको यह नहीं बता सकते हैं कि आपको क्या करना है, इसके बारे में बहुत कुछ जानने के बिना आपको इसका उपयोग करना चाहिए, लेकिन आपके पास यहां दिए गए उत्तर आपको खुद तय करने के लिए पर्याप्त जानकारी देनी चाहिए।


2
एक महत्वपूर्ण अंतर यह है कि मैन-पेज और अन्य लेख हाइलाइट करने में विफल होते हैं अर्थात sysv संदेश कतारों में mtype द्वारा संदेश देने की धारणा है (पॉज़िक्स मेसक में इसका अभाव है)। कुछ मामलों में, यह एक महत्वपूर्ण डिजाइन तत्व हो सकता है और मेरे अनुभव को उद्धृत करने के लिए यह शो स्टॉपर बन गया। मैंने इसके बारे में ब्लॉग किया था ।
टेकलदेव

ओपनग्रुप के प्रलेखन के बाद, SysV IPC अंक 2 और नए इंटरफ़ेस के बाद से SUS का हिस्सा था, क्योंकि अंक 7. वास्तव में, एक और अधिक लंबे समय से है, लेकिन दोनों SUS का हिस्सा हैं, इसलिए दोनों POSIX का हिस्सा हैं।
हिबोउ ५

23
  1. मेरा मानना ​​है कि मुख्य अंतर यह है कि सभी POSIX IPC थ्रेड-सुरक्षित है, जबकि अधिकांश SysV IPC [ 1 ] नहीं है।
  2. वजह से यूनिक्स युद्ध [ 2 ]। एकल यूनिक्स विशिष्टता (SUS) [ 3 ], POSIX उर्फ, यूनिक्स आधारित सिस्टम पर इंटरफेस मानकीकृत करने के लिए बनाया गया था।
  3. आप शायद POSIX चाहते हैं। अपनी आवश्यकताओं पर विशेष रूप से निर्भर करता है।

11

सिस्टम V IPC पुराना है और POSIX IPC नया है। हालाँकि कुछ पहलुओं के लिए कुछ अंतर हैं। हमेशा पॉसिक्स सिस्टम V से बेहतर नहीं है।

  1. पॉज़िक्स के लिए सेमाफोर, कतार और साझा की गई मेमोरी में असिसी स्ट्रिंग नाम हैं, जबकि सिस्टम वी के तहत ये पूर्णांक संख्या के साथ दिए गए हैं।

  2. यदि सिस्टम की मृत्यु हो जाती है (सिस्टम SEM_UNDO झंडा)। Posix के लिए ऐसी कोई बात नहीं है।

  3. लिनक्स और फ्रीबीएसडी पर पॉज़िक्स कतारों का बड़ा फायदा है, क्योंकि mq_open द्वारा दिए गए हैंडलर मूल रूप से फाइल डिस्क्रिप्टर होते हैं जिन्हें पोल ​​/ एपोलड / सिलेक्ट / क्लेक्ट किया जा सकता है।


ऐसा लगता है, इसलिए, यह पसंद IPC के प्रकार पर निर्भर करता है आदिम एक का उपयोग करने जा रहा है। कुछ ऐसे हैं, जहां पॉज़िक्स महान है, और फिर भी कुछ अन्य हैं जहां सिस्टम वी महान है। यदि कोई प्रक्रिया अचानक मृत्यु हो जाती है, और दुनिया में कोई भी एपीआई इस तरह की घटना को रोक नहीं सकता है, तो आईपीसी प्राइमिटिव्स का पता चलेगा या इसका पता लगाएगा। ऐसे अलग-अलग उपयोग मामले हैं जिनमें पॉज़िक्स सबसे अच्छा है, और फिर अन्य उपयोग के मामले हैं जिनमें सिस्टम V समस्या को अच्छी तरह से संभालता है।
eigenfield

-3
  • सिस्टेन V और POSIX IPC दो अलग-अलग हैं, लेकिन एक ही चीज़ के संबंधित कार्यान्वयन।

"यूनिक्स सिस्टम वी, आमतौर पर संक्षिप्त रूप से SysV (और आमतौर पर स्पष्ट किया जाता है - हालांकि शायद ही कभी" सिस्टम फ़ाइव "के रूप में लिखा जाता है), यूनिक्स ऑपरेटिंग सिस्टम के पहले व्यावसायिक संस्करणों में से एक है। यह मूल रूप से अमेरिकन टेलीफोन एंड टेलीग्राफ (एटीटी और टी) द्वारा विकसित किया गया था। पहली बार 1983 में रिलीज़ हुई। "

-Wikipedia

"POSIX या" पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस [यूनिक्स के लिए] "संबंधित प्रोग्रामिंग प्रोग्रामिंग इंटरफेस (एपीआई) को परिभाषित करने के लिए IEEE द्वारा निर्दिष्ट मानकों के एक परिवार का नाम है"

-Wikipedia

  • पहले सिस्टम वी था। POSIX IEEE द्वारा मानकीकरण पहल से विकसित हुआ।

  • GNU / Linux partiallyPOSIX के अनुरूप है। कौन सा उपयोग करना है यह इस बात पर निर्भर करता है कि आप इस आईपीसी का उपयोग किस ओएस पर कर रहे हैं। अधिकांश विक्रेता ओर बढ़ रहे हैं POSIX

यूनिक्स नेटवर्क प्रोग्रामिंग: रिचर्ड स्टीवंस द्वारा इंटरप्रोसेस कम्युनिकेशंस v। 2 इन दोनों में एक अच्छा लुक देता है।

यूनिक्स नेटवर्क प्रोग्रामिंग


5
आप सवालों में संदर्भित के रूप में Interprocess Communicaton के बारे में कुछ भी चर्चा नहीं करते हैं।
माइकल राइस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.