क्या कैश एक विशेष प्रकार का बफर सही है? वे दोनों समान कार्य करते हैं, लेकिन क्या कुछ अंतर्निहित अंतर है जो मुझे याद आ रहा है?
क्या कैश एक विशेष प्रकार का बफर सही है? वे दोनों समान कार्य करते हैं, लेकिन क्या कुछ अंतर्निहित अंतर है जो मुझे याद आ रहा है?
जवाबों:
डेटा बफ़र पर विकिपीडिया के लेख से :
बफर एक भौतिक मेमोरी मेमोरी का एक क्षेत्र है जिसका उपयोग अस्थायी रूप से डेटा को रखने के लिए किया जाता है जबकि इसे एक स्थान से दूसरे स्थान पर ले जाया जा रहा है
एक बफ़र डेटा के हर एक टुकड़े को एक स्टोरेज लोकेशन से दूसरी (जैसे जब ऑडियो प्रोसेसिंग में एक सर्कुलर बफर का उपयोग करके) प्रसारित किया जाता है, के माध्यम से साइकिल चलाना समाप्त कर देता है। एक बफ़र डेटा प्रवाह में आपकी वर्तमान स्थिति से पहले और बाद में डेटा की "बफर" की अनुमति देता है।
दरअसल, बफर और कैश के कुछ सामान्य पहलू हैं। हालाँकि, पारंपरिक अर्थों में कैश आमतौर पर सभी डेटा को स्टोर नहीं करता है जब इसे एक जगह से दूसरी जगह ले जाया जाता है (यानी CPU कैश)।
कैशे का उद्देश्य पारदर्शी तरीके से डेटा को स्टोर करना है, जैसे कि बस पर्याप्त डेटा कैश किया जाता है ताकि शेष डेटा को बिना किसी प्रदर्शन दंड के स्थानांतरित किया जा सके। इस संदर्भ में, कैश केवल थोड़ी मात्रा में डेटा "पूर्व-प्राप्त करता है" (हस्तांतरण दरों, कैश आकार, आदि के आधार पर ...)।
मुख्य अंतर यह है कि अंततः एक बफर ने सभी डेटा को धारण किया होगा। इसके विपरीत, कोई कैश सभी, कुछ या किसी भी डेटा (डिज़ाइन के आधार पर) को पकड़ सकता है। हालांकि, एक कैश एक्सेस किया जाता है जैसे कि आप सीधे पहले स्थान पर डेटा एक्सेस कर रहे थे - जो वास्तव में कैश हो गया है वह कैश के "उपयोगकर्ता" के लिए पारदर्शी है।
अंतर इंटरफ़ेस में है । आप किसी डेटा स्रोत तक पहुँचने के लिए एक कैश का उपयोग कर रहे हैं, तो आप यह है, तो कैश के रूप में उपयोग है डेटा स्रोत - आप कैश के माध्यम से डेटा स्रोत के हर हिस्से तक पहुँच सकते हैं, और कैश का निर्धारण करेगा माध्यम से डेटा प्राप्त (आता है कैश ही, या स्रोत)। कैश स्वयं निर्धारित करता है कि डेटा के किन हिस्सों को प्रीलोड करना है (आमतौर पर सिर्फ शुरुआत, लेकिन कभी-कभी सभी), जबकि उपयोग में कैश रिप्लेसमेंट एल्गोरिदम यह निर्धारित करता है कि कैश से चीजें क्या / कब निकाली जाती हैं। इसका सबसे अच्छा उदाहरण एक प्रणाली है, जो कि सीपीयू कैश से अलग है, प्रीफ़ेचर / रीडहेड है। दोनों डेटा के उन हिस्सों को लोड करते हैं जो उन्हें लगता है कि आप सबसे अधिक मेमोरी में उपयोग करेंगे, और हार्ड ड्राइव पर वापस लौटें यदि कुछ कैश नहीं है।
इसके विपरीत, एक बफर का उपयोग डेटा स्ट्रीम में तुरंत अपने स्थान को स्थानांतरित करने के लिए नहीं किया जा सकता है, जब तक कि नए हिस्से को पहले ही बफर में स्थानांतरित नहीं किया गया हो। ऐसा करने के लिए बफर को स्थानांतरित करने की आवश्यकता होगी (नए स्थान को बफर लंबाई से अधिक होने पर), प्रभावी रूप से आपको नए स्थान से बफर को "पुनरारंभ" करने की आवश्यकता होगी। इसका सबसे अच्छा उदाहरण एक Youtube वीडियो में स्लाइडर को स्थानांतरित करना है।
Winamp में बफर का एक और अच्छा उदाहरण ऑडियो खेल रहा है। चूंकि ऑडियो फाइलों को सीपीयू द्वारा डिकोड किया जाना आवश्यक है, जब गीत को पढ़ने के लिए, जब ऑडियो संसाधित होता है, तो आपके साउंड कार्ड पर भेजे जाने के बीच कुछ समय लगता है। Winamp कुछ ऑडियो डेटा को बफ़र करेगा, ताकि किसी भी "लॉक-अप" से बचने के लिए पहले से ही संसाधित किए गए पर्याप्त ऑडियो डेटा हो (यानी सीपीयू हमेशा आपको कुछ सौ मिलीसेकंड में सुनाई जाने वाली ऑडियो तैयार कर रहा है, यह कभी भी वास्तविक समय नहीं है (आप जो सुनते हैं वह बफर से आता है, जो कि अतीत में तैयार सीपीयू है)।
यह कहना अधिक सटीक होगा कि कैश एक बफर का एक विशेष उपयोग पैटर्न है, जो एक ही डेटा के कई उपयोगों का अर्थ है। "बफर" के अधिकांश उपयोग का अर्थ है कि डेटा को एकल उपयोग के बाद सूखा या छोड़ दिया जाएगा (हालांकि यह जरूरी नहीं है), जबकि "कैश" का अर्थ है कि डेटा का कई बार पुन: उपयोग किया जाएगा। कैशिंग का अक्सर यह भी अर्थ है कि डेटा संग्रहीत किया जाता है क्योंकि यह एक साथ उपयोग भी किया जा रहा है, हालांकि यह जरूरी नहीं है (जैसा कि पूर्व-प्राप्त और पसंद है), जबकि बफरिंग का मतलब है कि डेटा को बाद में उपयोग के लिए संग्रहीत किया जा रहा है।
हालांकि कार्यान्वयन और उपयोग दोनों में एक बड़ा ओवरलैप है।
कैश और बफर के बीच एक महत्वपूर्ण अंतर है:
बफर प्राथमिक मेमोरी का एक हिस्सा है। वे प्राथमिक मेमोरी (RAM) से मौजूद और एक्सेस की गई संरचनाएं हैं।
दूसरी ओर, कंप्यूटर की मेमोरी पदानुक्रम में कैश एक अलग भौतिक मेमोरी है।
बफ़र को कभी-कभी बफ़र कैश भी कहा जाता है। यह नाम इस तथ्य पर जोर देता है कि बफर का उपयोग कैश के समान है, अर्थात डेटा स्टोर करने के लिए। जबकि अंतर इसके उपयोग के संदर्भ में निहित है।
बफ़र्स का उपयोग अस्थायी रूप से डेटा संग्रहीत करने के लिए किया जाता है, जबकि डेटा को एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में ले जाया जाता है। EX: जब एक वीडियो इंटरनेट से हमारे पीसी पर डिस्प्ले बफ़र्स के लिए ले जाया जाता है, तो वीडियो के फ्रेम को स्टोर करने के लिए उपयोग किया जाता है, जिसे अगले प्रदर्शित किया जाएगा। (इस प्रश्न को बढ़ाता है, जैसा कि वीडियो का उपयोग कर एक व्यावसायिक प्रक्रिया के दौरान वीडियो का उपयोग कर सकते हैं।) EX: एक अन्य उदाहरण परिदृश्य है जब हम अपनी फाइलों पर डेटा लिखते हैं। नए लिखित डेटा को सेकंडरी मेमोरी में तुरंत कॉपी नहीं किया जाता है। किए गए परिवर्तनों को बफर में संग्रहीत किया जाता है और फिर डिज़ाइन की गई नीति के अनुसार, परिवर्तन माध्यमिक मेमोरी (हार्ड डिस्क) में फ़ाइल में वापस परिलक्षित होते हैं।
दूसरी तरफ कैश प्राथमिक मेमोरी और प्रोसेसर के बीच उपयोग किया जाता है, रैम और प्रोसेसर के निष्पादन की गति के बीच की खाई को पाटने के लिए। इसके अलावा रैम तक पहुंच को कम करने के लिए सबसे अधिक बार एक्सेस किया गया डेटा कैश में संग्रहीत किया जाता है।
सामान्य बात: गणना और "मुख्य" भंडारण के बीच दोनों मध्यस्थ डेटा भंडारण घटक (सॉफ्टवेयर या हार्डवेयर) हैं।
मेरे लिए अंतर निम्नलिखित है:
बफर:
कैश: