मैं कर्नेल 2.6 है, जो है एक निर्माता प्रक्रिया और उपभोक्ता के एन प्रक्रियाओं, जो डेटा पर कोई बदलाव नहीं है के साथ एक नेटवर्क डेमॉन लिख रहा हूँ, लिनक्स पर, और किसी भी प्रतिक्रिया के लिए वापस नहीं बनाता है उत्पादक।साझा-स्मृति परिणामों के साथ प्रक्रियाओं के बीच संचार शून्य-प्रतिलिपि?
जब भी निर्माता प्रक्रिया डेटा ऑब्जेक्ट उत्पन्न करती है, जिसमें लंबाई कुछ 10 बाइट्स से कुछ 10 के-बाइट्स तक भिन्न होती है, तो इसे डेटा ऑब्जेक्ट को एक उपलब्ध उपभोक्ता प्रक्रिया में पास करना होता है।
पहली बार, मैंने नामित/अज्ञात पीआईपीई का उपयोग करने के लिए माना। हालांकि, वे मेमोरी-कॉपी ओवरहेड होंगे।
- उत्पादक उपयोगकर्ता के अंतरिक्ष बफर --copy -> कर्नेल-स्थान पाइप बफर
- कर्नेल-स्थान पाइप बफर --copy -> उपभोक्ता के उपयोगकर्ता के अंतरिक्ष बफर
कार्यक्रम के बाद से कम विलंबता के साथ बड़ी संख्या में साथियों के साथ काम कर सकते हैं, कॉपी-ओवरहेड हानिकारक हो सकता है। इस प्रकार, मैंने एमओएसएपी() के साथ पॉज़िक्स साझा-मेमोरी का उपयोग करने का निर्णय लिया।
मैं सोच रहा हूं कि का उपयोग कर प्रक्रियाओं के बीच डेटा साझा करना एमओएसएपी() के साथ पॉज़िक्स साझा-मेमोरी का परिणाम किसी भी स्मृति-प्रति का परिणाम नहीं है, पीआईपीई के विपरीत।
इसके अलावा, क्या प्रक्रियाओं के बीच डेटा साझा करने का कोई अन्य तरीका है, लेकिन शून्य-प्रति परिणाम? प्रोग्राम लिनक्स पर कर्नेल के हाल के संस्करण के साथ चलाया जाएगा और इसमें क्रॉस-प्लेटफ़ॉर्म क्षमता नहीं हो सकती है।
मैंने तय किया कि प्रत्येक उपभोक्ता/उपज के लिए धागा को स्पैन/रन न करें, लेकिन डिज़ाइन समस्याओं के कारण प्रक्रिया।
उत्तर के लिए धन्यवाद।
प्रक्रियाओं के बीच डेटा कितनी बड़ी मात्रा में स्थानांतरित किया गया है यह तय करना "समयपूर्व अनुकूलन" नहीं है, यह "आवश्यक वास्तुकला" है। सभी अनुकूलन (या डिज़ाइन, या आर्किटेक्चर) "समयपूर्व" नहीं है। –