कैश और बफर में क्या अंतर है?


12

क्या कैश एक विशेष प्रकार का बफर सही है? वे दोनों समान कार्य करते हैं, लेकिन क्या कुछ अंतर्निहित अंतर है जो मुझे याद आ रहा है?


जवाबों:


12

डेटा बफ़र पर विकिपीडिया के लेख से :

बफर एक भौतिक मेमोरी मेमोरी का एक क्षेत्र है जिसका उपयोग अस्थायी रूप से डेटा को रखने के लिए किया जाता है जबकि इसे एक स्थान से दूसरे स्थान पर ले जाया जा रहा है

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

दरअसल, बफर और कैश के कुछ सामान्य पहलू हैं। हालाँकि, पारंपरिक अर्थों में कैश आमतौर पर सभी डेटा को स्टोर नहीं करता है जब इसे एक जगह से दूसरी जगह ले जाया जाता है (यानी CPU कैश)।

कैशे का उद्देश्य पारदर्शी तरीके से डेटा को स्टोर करना है, जैसे कि बस पर्याप्त डेटा कैश किया जाता है ताकि शेष डेटा को बिना किसी प्रदर्शन दंड के स्थानांतरित किया जा सके। इस संदर्भ में, कैश केवल थोड़ी मात्रा में डेटा "पूर्व-प्राप्त करता है" (हस्तांतरण दरों, कैश आकार, आदि के आधार पर ...)।

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


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

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

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


मैं इसे अपने उदाहरण के रूप में लेता हूं कि यदि वीडियो पूरी तरह से बफ़र हो गया है या आपके डिवाइस पर डाउनलोड हो गया है, तो यह बस कैश किया गया है और जब तक आप पृष्ठ को ताज़ा नहीं करते या स्लाइड को पुनः लोड नहीं करते, आपको हर बार एक नए स्थान की तलाश करने की आवश्यकता नहीं है। वीडियो। क्या यह सही होगा?
मूँगफली के दाने

@PeanutsMonkey सही है, YouTube वीडियो को सीधे आपके ब्राउज़र के कैश में डाउनलोड किया जाता है क्योंकि यह बफ़र किया जा रहा है। इस मामले में बफर केवल एक उच्च-स्तरीय शब्द है, जैसा कि आप हमेशा देख रहे हैं कि वर्तमान में कैश में क्या बैठता है। जैसे ही वीडियो बफ़र किया जाता है, उसे कैश में ले जाया जाता है (वे उसी भौतिक स्थान को साझा करते हैं)। मैंने ऑडियो खिलाड़ियों के संदर्भ में एक बफर के दूसरे उदाहरण के साथ उत्तर को अपडेट किया।
ब्रेकथ्रू

2
tl; dr वर्जन: अगर आप इससे जितना जल्दी हो सके डेटा बाहर निकालना चाहते हैं, यह एक बफर है। यदि आप डेटा को यथासंभव लंबे समय तक रखना चाहते हैं, तो यह कैश है।
डेविड श्वार्ट्ज

10

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

हालांकि कार्यान्वयन और उपयोग दोनों में एक बड़ा ओवरलैप है।


3

कैश और बफर के बीच एक महत्वपूर्ण अंतर है:

बफर प्राथमिक मेमोरी का एक हिस्सा है। वे प्राथमिक मेमोरी (RAM) से मौजूद और एक्सेस की गई संरचनाएं हैं।

दूसरी ओर, कंप्यूटर की मेमोरी पदानुक्रम में कैश एक अलग भौतिक मेमोरी है।

बफ़र को कभी-कभी बफ़र कैश भी कहा जाता है। यह नाम इस तथ्य पर जोर देता है कि बफर का उपयोग कैश के समान है, अर्थात डेटा स्टोर करने के लिए। जबकि अंतर इसके उपयोग के संदर्भ में निहित है।

बफ़र्स का उपयोग अस्थायी रूप से डेटा संग्रहीत करने के लिए किया जाता है, जबकि डेटा को एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में ले जाया जाता है। EX: जब एक वीडियो इंटरनेट से हमारे पीसी पर डिस्प्ले बफ़र्स के लिए ले जाया जाता है, तो वीडियो के फ्रेम को स्टोर करने के लिए उपयोग किया जाता है, जिसे अगले प्रदर्शित किया जाएगा। (इस प्रश्न को बढ़ाता है, जैसा कि वीडियो का उपयोग कर एक व्यावसायिक प्रक्रिया के दौरान वीडियो का उपयोग कर सकते हैं।) EX: एक अन्य उदाहरण परिदृश्य है जब हम अपनी फाइलों पर डेटा लिखते हैं। नए लिखित डेटा को सेकंडरी मेमोरी में तुरंत कॉपी नहीं किया जाता है। किए गए परिवर्तनों को बफर में संग्रहीत किया जाता है और फिर डिज़ाइन की गई नीति के अनुसार, परिवर्तन माध्यमिक मेमोरी (हार्ड डिस्क) में फ़ाइल में वापस परिलक्षित होते हैं।

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


-1 आप लिखते हैं "कैश एक अलग भौतिक स्मृति है" <--- नहीं, जरूरी नहीं। IE HDD पर कैश स्टोर करता है और इसमें कोई संदेह नहीं है कि यह RAM stackoverflow.com/questions/854412/ पर लोड होता है। मुझे नहीं लगता कि C कोड इसे कैश के रूप में ज्ञात भौतिक मेमोरी में लोड करने के लिए निर्दिष्ट कर सकता है। उस कैश में क्या डाला जाता है, यह निम्न स्तर की चीज है, शायद केवल ओएस निर्दिष्ट कर सकता है। लेकिन यह अभी भी कैश कहा जाता है, भले ही यह रैम में हो। और वेब सर्वर स्क्वीड एक कैश सेट कर सकता है, यह सोचने का कोई कारण नहीं है कि सभी भौतिक कैश मेमोरी में हैं या होने की आवश्यकता है।
बार्लोप

कैशिंग एक फ़ंक्शन है, इसे विशेष मेमोरी में नहीं होना चाहिए
बार्लोप

1

सामान्य बात: गणना और "मुख्य" भंडारण के बीच दोनों मध्यस्थ डेटा भंडारण घटक (सॉफ्टवेयर या हार्डवेयर) हैं।

मेरे लिए अंतर निम्नलिखित है:

बफर:

  • डेटा तक अनुक्रमिक पहुंच को संभालता है (जैसे फ़ाइल या सॉकेट से डेटा पढ़ना / लिखना)
  • गणना और मुख्य भंडारण के बीच इंटरफ़ेस को सक्षम करता है , एक दूसरे को एक डेटा निर्माता और एक डेटा उपभोक्ता के विभिन्न डेटा ट्रांसफर पैटर्न के अनुकूल करता है। उदाहरण के लिए, गणना डेटा के छोटे-छोटे हिस्से लिखती है, लेकिन डिस्क ड्राइव एक विशिष्ट आकार के डेटा के केवल टुकड़ों को ही स्वीकार कर सकती है। तो बफर इनपुट के रूप में छोटे टुकड़ों को जमा करता है और उन्हें आउटपुट के बड़े टुकड़ों में फिर से इकट्ठा करता है।
  • तो यह एक एडेप्टर डिजाइन पैटर्न की तरह है। यह दो इंटरेक्टिंग घटकों को जोड़ता है जो सीधे हस्तक्षेप नहीं कर सकते हैं।
  • उदाहरण: डिस्क बफ़र, जावा भाषा में बफ़रड्रेडर, कंप्यूटर ग्राफिक्स में डफ़रिंग।

कैश:

  • डेटा तक यादृच्छिक पहुंच को संभालता है (उदाहरण के लिए सीपीयू कैश कैश की पंक्तियों को याद रखता है जो गैर-क्रमिक रूप से स्थित है)।
  • मुख्य भंडारण तक पहुंच का अनुकूलन करता है, इसे तेज़ बनाता है। उदाहरण के लिए, सीपीयू कैश मेमोरी तक पहुंच से बचता है, जिससे सीपीयू कमांड तेज हो जाते हैं।
  • यह डेकोरेटर डिजाइन पैटर्न की तरह है। यह (अक्सर पारदर्शी रूप से) दो अंतःक्रियात्मक घटकों से जुड़ता है जो सिद्धांत रूप में सीधे हस्तक्षेप कर सकते हैं, लेकिन यह बातचीत को तेज करता है।
  • उदाहरण: सीपीयू कैश, पेज कैश, वेब प्रॉक्सी, ब्राउज़र कैश।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.