mkfifo - क्या डिस्क I / O वास्तव में होता है?


10

मेरे पास 2 एप्लिकेशन हैं:

  • निर्माता (एन उदाहरण)
  • उपभोक्ता (1 उदाहरण)

मैं वर्तमान में उत्पादकों से मध्यवर्ती परिणाम लिखता हूं , और फिर उपभोक्ता डिस्क से इन फ़ाइलों को पढ़ता है और अंतिम परिणाम तैयार करता है ।

मैं उत्पादकों से सीधे उपभोक्ता को "स्ट्रीमिंग" करके इस I / O को कम से कम करना चाहूंगा।

मैं नामांकित पाइप (mkfifo) और उसके बाद के उदाहरण में आया था । यह बहुत अच्छा लग रहा है, लेकिन मैं यह निर्धारित नहीं कर सकता कि यह वास्तव में कैसे लागू किया जाता है? क्या FIFO कतार सिर्फ एक फ़ाइल के माध्यम से बफ़र की जा रही है? यदि हां, तो शायद यह मेरी मदद नहीं करेगा। मैं पूरी तरह से डिस्क का उपयोग किए बिना "मेमोरी के माध्यम से" स्ट्रीम करने के लिए सामग्री चाहूंगा। शायद यह प्रक्रियाओं के दौरान संभव नहीं है?

जवाबों:


10

कोई डिस्क i / o (शायद जब फ़ाइल सिस्टम के माध्यम से नेविगेट करने के लिए पंद्रह फ़ाइल खोलने के लिए।

से फीफो (7) आदमी पेज लिनक्स :

एक FIFO विशेष फ़ाइल (एक नामित पाइप) एक पाइप के समान है, सिवाय इसके कि वह फाइलसिस्टम के हिस्से के रूप में एक्सेस की जाती है। [...] जब प्रक्रियाएं FIFO के माध्यम से डेटा का आदान-प्रदान कर रही हैं, तो कर्नेल सभी डेटा को फाइल सिस्टम में लिखे बिना आंतरिक रूप से पास करता है। इस प्रकार, FIFO विशेष फ़ाइल में फ़ाइल सिस्टम पर कोई सामग्री नहीं है; फाइलसिस्टम प्रविष्टि केवल एक संदर्भ बिंदु के रूप में कार्य करती है ताकि प्रक्रियाएं फाइलसिस्टम में एक नाम का उपयोग करके पाइप तक पहुंच सकें।


उत्तम। मैंने mkfifo के लिए मैन पेज पढ़ा, लेकिन "फीफो" पर एक पेज देखने के लिए नहीं सोचा - धन्यवाद!
Jmoney38

3

यह वास्तव में मायने नहीं रखता है कि आपका परिणाम वास्तव में डिस्क समर्थित है या नहीं, क्योंकि यदि पर्याप्त मेमोरी उपलब्ध है, तो यह वैसे भी कैश किया जाएगा और कोई वास्तविक डिस्क आईओ नहीं किया जाता है। इसके विपरीत, यदि यह मेमोरी-समर्थित है और पर्याप्त मेमोरी उपलब्ध नहीं है, तो इसे डिस्क पर स्वैप किया जा सकता है।

यदि मुझे अनुमान था, तो मैं कहूंगा कि पाइप वास्तव में मेमोरी-आधारित है, लेकिन फिर, यह केवल बदलना चाहिए कि क्या कतारबद्ध डेटा रिबूट के बीच संरक्षित है।

आपको इस बात का ध्यान रखना चाहिए कि चूंकि आपके पास कई उत्पादक हैं इसलिए आपके लेखन को परमाणु होने की आवश्यकता है ताकि वे कतार में दखल न दें। यह man 7 pipeसुनिश्चित करने के बारे में विवरण के लिए देखें कि एक लेख परमाणु है।

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