क्या रैम के बिना एक कंप्यूटर है, लेकिन एक डिस्क के साथ, रैम के साथ एक के बराबर है?


18

मेमोरी का उपयोग कई चीजों के लिए किया जाता है, जैसा कि मैं समझता हूं। यह एक डिस्क-कैश के रूप में कार्य करता है, और इसमें प्रोग्राम के निर्देश, और उनके स्टैक और ढेर होते हैं। यहाँ एक सोचा प्रयोग है। अगर कोई कंप्यूटर को क्रंच करने के लिए लगने वाली गति या समय की परवाह नहीं करता है, तो स्मृति की नंगे न्यूनतम मात्रा क्या हो सकती है, यह मानते हुए कि एक बहुत बड़ी डिस्क है? क्या स्मृति के साथ दूर करना संभव है, और बस एक डिस्क है?

डिस्क-कैशिंग स्पष्ट रूप से आवश्यक नहीं है। यदि हम डिस्क पर स्वैप स्पेस सेट करते हैं, तो प्रोग्राम स्टैक और हीप को मेमोरी की आवश्यकता नहीं होती है। क्या ऐसी कोई चीज है जिसके लिए स्मृति का होना आवश्यक है?



3
इस प्रश्न के पीछे क्या विचार है?
यवेस डाएव

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

2
स्मृति ही स्मृति है स्मृति
memorydouard

8
यादृच्छिक-पता योग्य स्मृति, मेरे ज्ञान का सबसे अच्छा करने के लिए, कंप्यूटर के लिए एक आवश्यकता नहीं है। ट्यूरिंग मशीन से टेप यादृच्छिक-पता योग्य नहीं है। यदि आप चाहें तो प्रति ब्लॉक केवल एक बिट पढ़ने / लिखने से कुछ भी नहीं रोकता है।
.douard

जवाबों:


24

ज़रूर। सिद्धांत रूप में, उपयुक्त हार्डवेयर दिए जाने पर, आपके पास बस एक डिस्क हो सकती है, जिसमें सब कुछ डिस्क पर संग्रहीत होता है। किसी भी समय सीपीयू ने एक लोड या स्टोर इंस्ट्रक्शन किया, कुछ हार्डवेयर हो सकते हैं जो डिस्क को पढ़ने या लिखने में बदल जाते हैं। यह बेहद धीमी गति से होगा: एक चुंबकीय डिस्क पर, प्रत्येक खोज में लगभग 10ms लगते हैं, इसलिए आप लगभग 100 रैंडम-एक्सेस पढ़ सकते हैं और दूसरा लिख ​​सकते हैं।

कुछ प्रणालियों में फ्लैश मेमोरी-मैप उनके पते की जगह में होती है। फ्लैश मेमोरी गैर-वाष्पशील (लगातार) भंडारण प्रदान करती है। तो, कुछ मायनों में यह आपके उल्लेख के जैसा है - हालांकि उन प्रणालियों में आमतौर पर रैम भी होती है।


6
@MSalters एक अच्छी बात यह है कि अगर हम इसे RAM की तरह बनाने के लिए डिस्क (या इसके ऊपर लेयर एक्स्ट्रा हार्डवेयर) को मॉडिफाई करते हैं, तो हो सकता है कि हम इसे रैम कहें। समस्या यह है कि सवाल, "क्या स्मृति के साथ दूर करना संभव है, और बस एक डिस्क है" बहुत अस्पष्ट है। मेमोरी और डिस्क से हमारा क्या तात्पर्य है? क्या हमारा मतलब आधुनिक डेस्कटॉप पीसी में मौजूद है? तो जवाब है नहीं। क्या हमारा मतलब कुछ काल्पनिक मेमोरी और डिस्क से है? फिर उस मामले में दोनों के बीच का अंतर वैसे भी धुंधला होता है, और यह सवाल बराबर होता है कि "क्या यांत्रिक आधारित रैम वाला कंप्यूटर होना संभव है?"
जेबेंटली

1
एएस / 400 तरह के इस तरह के काम करता है। एक सिंगल-लेवल-स्टोरेज है, और केवल एक एड्रेस स्पेस है। प्लेटफ़ॉर्म फ़र्मवेयर द्वारा डिस्क और मेमोरी को सिंगल स्टोरेज एब्स्ट्रैक्शन में जोड़ दिया जाता है, ओएस खुद एक ही फ्लैट यूनिफ़ाइड स्टोरेज स्पेस देखता है। कोई संकेत नहीं हैं, केवल वस्तु संदर्भ हैं। ऑब्जेक्ट्स को मेमोरी से डिस्क पर ले जाया जाता है और प्लेटफॉर्म फर्मवेयर (पीसी-स्पीक में BIOS, एएस / 400-स्पीक में BIOS) द्वारा पारदर्शी रूप से वापस ले जाया जाता है। यदि आप डिस्क को हटाते हैं और आपके पास केवल RAM है या RAM को निकाला है और केवल डिस्क है तो इससे OS और अनुप्रयोगों पर कोई फर्क नहीं पड़ेगा।
जॉर्ग डब्ल्यू मित्तग

इसके अलावा, मुझे लगता है कि HDDs जीवन बहुत कम हो जाएगा। और एक SSD के लिए और भी बदतर है। शायद यही कारण है कि एंड्रॉइड फोन में स्वैप नहीं है
Suici Doga

16

कम्प्यूटेबिलिटी के संदर्भ में, यह ज्ञात है कि हर आधुनिक दिन के कंप्यूटर को ट्यूरिंग मशीन द्वारा सिम्युलेटेड किया जा सकता है, जिसका एकमात्र भंडारण एक एकल, रैखिक टेप सेल है जिसे लिखा जा सकता है। यह मानते हुए कि आप असीमित मात्रा में डिस्क स्टोरेज जोड़ सकते हैं, केवल हार्ड ड्राइव वाला कंप्यूटर उतना ही शक्तिशाली है। तो निश्चित रूप से आप बिना मेमोरी के कंप्यूटर बना सकते हैं।

बेशक, "असीमित स्थान" हार्ड ड्राइव नहीं हैं, लेकिन न तो असीमित रैम है।

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


14

सवाल विशुद्ध रूप से अकादमिक नहीं है। यह ऐतिहासिक रिकॉर्ड की बात है कि जल्द से जल्द व्यावसायिक रूप से निर्मित कंप्यूटरों में से एक [क्षमा करें, मुझे याद नहीं है कि कौन से ऑफहैंड] के पास कोई रैम नहीं था - सभी कार्यक्रमों को सीधे चुंबकीय ड्रम [एक घूर्णन सिलेंडर] से निर्देश प्राप्त करके निष्पादित किया गया था। बाहरी सतह के साथ चुम्बकीय (डिस्क बाद में आए)]। यह तुलनात्मक रूप से धीमा था, लेकिन प्रतिस्पर्धा के मुकाबले बहुत सस्ता था। [यह 'ट्यूब' दिनों में वापस आ गया था]

दिलचस्प बात यह है कि यह अब एक अप्रचलित उपकरण के रूप में जाना जाता है, जिसे 'ऑप्टिमाइज़िंग असेंबलर' के रूप में जाना जाता है - अर्थात कोडांतरक न केवल मशीन निर्देश उत्पन्न करता है, इसने उन्हें ड्रम पर गैर-निरंतर रूप से लिखा है ताकि प्रत्येक निर्देश के लिए, समय की मात्रा कम हो सके ड्रम के अगले करने के लिए बारी बारी से इंतजार कर रहा है।


3
आप स्टेंटेक ज़ेबरा के बारे में सोच रहे होंगे - आर्काइव.कॉम.कॉम । 1967 में जब मैं विश्वविद्यालय गया, तब भी उनके पास सीएस विभाग में एक था।
डेविड मार्शल 16

3
दरअसल, मुझे लगता है कि मैं आईबीएम 1408 के बारे में सोच रहा हूं।
पीएम

8
मेल की कहानी भी देखें ( catb.org/jargon/html/story-of-mel.html ) जो एक प्रोग्रामर के बारे में है, जिसने रॉयल मैकबी एलपीजी -30 पर काम किया था, जिसमें एक ड्रम मेमोरी थी।
db48x

@ db48x: मैं भूल गया था कि कहानी कितनी शांत थी। मैंने शायद इसे 10 साल तक नहीं पढ़ा है।
पीटर कॉर्डेस

7

नहीं। डिस्क ड्राइव रैम की तरह रैंडम एड्रेसेबल नहीं हैं। इसके बजाय वे स्टोरेज डिवाइस को ब्लॉक कर रहे हैं। आप उनसे एक बाइट नहीं पढ़ सकते हैं या लिख ​​सकते हैं। और आपका CPU एक बार में एक पूरे सेक्टर को नहीं पढ़ सकता है, उन्हें उस यादृच्छिक अभिगम की आवश्यकता होती है। ऑपरेटिंग सिस्टम आपके द्वारा इस स्तर के विवरण को छिपाते हैं, लेकिन वे ऐसा करते हैं कि रैम में एक पूरे ट्रैक्टर को पढ़ते हैं, इसे संशोधित करते हैं, और इसे वापस लिखते हैं।

नतीजतन, आपको यादृच्छिक-एक्सेस भंडारण के एक ब्लॉक की आवश्यकता होती है। यह सीपीयू कैश हो सकता है, हालांकि, जो SRAM (एक तेज प्रकार की रैम) से बना है।

यह केवल डिस्क नहीं है। फ्लैश मेमोरी ब्लॉकों से निर्मित डिज़ाइन द्वारा होती है, जो इसकी कम कीमत की कुंजी है। यहां तक ​​कि इसमें सामान्य डिस्क क्षेत्रों की तुलना में बहुत बड़े ब्लॉक हैं, लेकिन यह ओएस से छुपाने के लिए आंतरिक रूप से रैम का उपयोग करता है।

आप लगातार भंडारण कर सकते हैं जो कि सीपीयू द्वारा सीधे उपयोग करने योग्य है। EEPROM भंडारण इस श्रेणी में आएगा (इलेक्ट्रॉनिक रूप से इरेज़ेबल प्रोग्रामेबल "रीड-ओनली" मेमोरी - हालाँकि "रीड-ऑप्टिमाइज़्ड" एक तथ्यात्मक रूप से बेहतर विवरण होगा)।


5
मुझे लगता है कि आपका "नहीं" होना चाहिए "हाँ, लेकिन इसके लिए कस्टम निर्मित डिस्क की आवश्यकता होगी"।
तायमीर

3
आप निश्चित रूप से दोनों पर एक बाइट पढ़ सकते हैं। क्या आप ऐसा नहीं कर सकते एक एकल बाइट लिखते हैं, क्योंकि है राईट एक साथ समूची ब्लॉक लेखन की जरूरत है। हालांकि सिद्धांत रूप में कोई कारण नहीं है कि आप मूल ब्लॉक से अनमॉडिफाइड डेटा को एक नए ब्लॉक में कॉपी करके, जहां आवश्यक हो, नए डेटा को लिखने और फिर इसे मूल ब्लॉक में कॉपी करके ब्लॉक नहीं कर सकते। आप अपनी डिस्क को बहुत जल्दी से पहन लेंगे, लेकिन यह ओपी के प्रश्न से वैसे भी अपरिहार्य है।
ग्राहम

3
और "ब्लॉकिंग" भौतिक डिस्क स्थान के कुशल उपयोग के लिए किया जाता है: आपको ब्लॉक की पहचान करने के लिए "वास्तविक" डेटा के प्रत्येक टुकड़े के आसपास जगह की आवश्यकता होती है, ब्लॉक आदि के बीच "गार्ड" स्थान प्रदान करें। कोई तकनीकी कारण नहीं है कि ब्लॉक एक क्यों नहीं हो सकता है बाइट लंबी (लेकिन गति क्षमता के रूप में और भी गिर जाएगी)।
ट्रिपहाउंड

6
वास्तव में, यहां तक ​​कि वर्तमान रैम वास्तव में बाइट-पता करने योग्य नहीं है - DDR3 फटने में काम करता है और न्यूनतम पढ़ने / लिखने का आकार 8 64-बिट शब्द है (अर्थात 64 बाइट्स); मैं एक विशेषज्ञ नहीं हूं, लेकिन मैं शर्त लगा सकता हूं कि गठबंधन की आवश्यकता भी है। यह सब पुराने डिस्क के लिए इतना भिन्न नहीं है, जहां ब्लॉक आकार 512 बाइट्स के क्रम में था, इसलिए मैं कहूंगा कि ये अंतर ज्यादातर ऐतिहासिक हैं, लाइन वास्तव में धुंधला हो रही है।
मट्टियो इटालिया

1
(यह भी, एक पूरे ब्लॉक का उपयोग करने के लिए आपको कुछ भी नहीं रोकता है - जो भी आकार है - बस एक बाइट को धारण करने के लिए - थोड़ा अक्षम है लेकिन जब तक मैं डिस्क्स का भुगतान नहीं कर रहा हूं, यह ठीक है)
माटेइटो इटालिया

1

जब आप वर्चुअल मेमोरी का उपयोग करते हैं और पृष्ठ दोषों को संभालने की आवश्यकता होती है, तो बहुत कम से कम अपवाद हैंडलर पृष्ठ दोष को संभालने के लिए, डिस्क ड्राइवर जो हार्ड ड्राइव से डेटा पढ़ता है और पहले डिस्क पर गंदे पृष्ठ लिखता है, और पृष्ठ तालिकाओं की आवश्यकता होती है हर समय RAM में रहना। क्योंकि अगर वे RAM में नहीं हैं, तो आप उन्हें वापस RAM में स्वैप नहीं कर सकते। साथ ही आपको कम से कम एक पेज रैम के लिए जगह चाहिए।

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


IIRC, x86 में एक मोड है जहां यह मुख्य मेमोरी के रूप में आंतरिक कैश का उपयोग करता है । Electronics.stackexchange.com/questions/16485/… में कुछ विवरण हैं। मुझे लगता है कि इसे कभी-कभी "नो फिल मोड" कहा जाता है, अर्थात सीपीयू वास्तव में बाहरी मेमोरी से कैश लाइनों को भरने की कोशिश नहीं करता है। यह हार्ड ड्राइव I / O के लिए DMA का उपयोग करने से पहले हो सकता है, क्योंकि "सिस्टम एजेंट" LMA को L3 कैश में नहीं दे सकता है। यह L4 eDRAM के साथ एक स्काइलेक पर काम कर सकता है, क्योंकि यह मेमोरी-साइड कैश (ब्रॉडवेल के विपरीत) के रूप में स्थापित है जो DMA सहित सब कुछ कैश कर सकता है । प्रोग्राम-IO अभी भी डिस्क के लिए काम करेगा।
पीटर कॉर्डेस

बेशक, उस समय आप 128MiB RAM के साथ एक सिस्टम-ऑन-चिप चला रहे हैं, जो 15 साल पहले एक सभ्य राशि थी। केवल L3 SRAM कैश के साथ, यह अभी भी एक डेस्कटॉप चिप में 4 से 8MiB है, जो शायद एक बहुत छीन-डाउन लिनक्स के लिए पर्याप्त है, लेकिन आसानी से डॉस के लिए पर्याप्त है। यदि आपका अधिकांश कोड ROM में है, RAM में नहीं है, तो यह ठीक है।
पीटर कॉर्ड्स 10

1

यह वैचारिक रूप से संभव है। RAM सिर्फ एक कैशिंग स्तर है। आधुनिक कंप्यूटर में कई कैशिंग स्तर हैं (देखें CPU का L1, L2, L3 .. कैश, निश्चित रूप से, राम, स्वैप क्षेत्र-जो कि RAM के रूप में उपयोग की जाने वाली डिस्क का एक तार्किक खंड है ...), यदि आप डालते हैं। या एक जोड़ें, मशीन काम करेगा। उदाहरण के लिए, एक उबंटू लाइव सीडीएचडी के कैशिंग स्तर का उपयोग नहीं कर सकता है। हालांकि, मुझे नहीं लगता कि कोई भी ओएस है जो रैम स्तर की अनुपस्थिति का समर्थन कर सकता है।


1
यह ओएस नहीं है, लेकिन हार्डवेयर जिसे राम में होने के लिए निर्देशों की आवश्यकता होती है (वास्तव में, पता स्थान पर मैप किया गया है)।
.ngel

@ अँगेल वास्तव में आधुनिक ओएस में आवश्यक है कि पाठ (निर्देश), bss, स्टैक और हीप को प्रोग्राम को निष्पादित करने के लिए मेमोरी में लोड किया जाए? क्या वे स्वैप (डिस्क) पर नहीं हो सकते? लिनक्स में, कहते हैं।
तोश

1
हम कंप्यूटर विज्ञान या कंप्यूटर इंजीनियरिंग के बारे में बात कर रहे हैं? मुझे ओएस के कार्यान्वयन का पता नहीं है, न ही हार्डवेयर स्तर का, मैं केवल चर्च-ट्यूरिंग थीसिस पर आधारित हूं। हो सकता है कि बाजार में उपलब्ध मौजूदा हार्डवेयर का उपयोग करना या मौजूदा ओएस का उपयोग करना असंभव हो, लेकिन यह एक सैद्धांतिक परिदृश्य में संभव हो सकता है।
Picci

1
@ तो यह OS की नहीं बल्कि हार्डवेयर की समस्या है। आपका CPU निर्देश सूचक द्वारा इंगित मेमोरी पते पर स्थित एक निर्देश को निष्पादित करता है। तो बस एक डिस्क काम नहीं करेगा (आपके हार्डवेयर में बदलाव किए बिना)। आपके प्रश्न का उत्तर देते हुए, सभी अनुभाग को मेमोरी में लोड करने की आवश्यकता नहीं होगी, वास्तव में ओएस केवल उन्हें लोड कर सकता है जब प्रोग्राम उन्हें एक्सेस करने का प्रयास करता है। एक चरम काउंटर उदाहरण के रूप में, आप एक प्रोग्रामर का उपयोग करके "डिस्क से" प्रोग्राम चला सकते हैं जो एक बार में एक शब्द पढ़ता है * hdd से। लेकिन आपकी मेमोरी में रहने की आवश्यकता होगी, इसलिए आपको अभी भी कुछ रैम की आवश्यकता होगी ।
.ngel

1
क्षमा करें, @ टिप्पणी: "आपके एमुलेटर को मेमोरी में होना आवश्यक है"।
Ángel

-1

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


CS.SE में आपका स्वागत है! क्या आप अपने दावे को सही ठहरा सकते हैं कि अधिक पढ़ा-लिखा ओवरहेड लगातार सिस्टम क्रैश की संभावना को बढ़ाता है? यह मेरे लिए सही नहीं लगता है।
DW

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

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