Memory Management in Hindi – मेमोरी मैनेजमेंट क्या है?

Hello  दोस्तों ehindilearning.com मे आपका स्वागत है। आज के इस Article मे हम What is Memory Management in Hindi के बारे मे जानेंगे। Memory Management के बारे मे जानने से पहले हम यह जानेंगे कि आखिर Memory क्या होती है?

What is Memory in Hindi (मेमोरी क्या होती है?)

जब हम Computer मे कोई Input देते है तो हमारे द्वारा input मे दिया गया Data जहां पर सुरक्षित होता है उसे Memory कहते है। Computer मे मेमोरी CPU (Central Processing Unit) का एक महत्वपूर्ण भाग होती है जिसमे computer मे feed किए गए सारे data को सुरक्षित रखा जाता और उस data को बाद मे processing के लिए CPU के द्वारा इस्तेमाल किया जाता है।

यह दो प्रकार की होती है एक होती है Logical memory और दूसरी वाली Physical Memory होती है। Computer मे RAM (Random Access Memory) को हम Temporary Memory के तौर पर जानते है और जो computer की Hard disk को हम Physical memory के तौर पर जानते है।

What is Memory Management in Hindi (मेमोरी मैनेजमेंट क्या है?)

Memory Management एक process होती है जिसके माध्यम से Memory को control और coordinate किया जाता है। यह Operating System की functionality होती है जो कि primary memory को manage करती है और यह memory execution के दौरान किसी भी Process को main memory और disc के बीच backward और forward move करने का काम करता है।

मेमोरी मैनेजमेंट का काम Memory location को track करने का होता है चाहे फिर वह किसी process को allocate किया गया हो या यह free हो। Memory management यह भी decide करता है किस process को कितने समय पर कितनी memory देने की जरूरत है।

किसी भी Hardware मे Memory management मे वो सभी components शामिल होते है जो Physically किसी भी data को store करते है जैसे RAM, Chip और flash आधारित SSD (Solid-state drives). मेमोरी मैनेजमेंट किसी भी computer की memory के किसी भी portion मे उसकी request के हिसाब से program को allocate कर सके और जब वह program पूरा हो जाता है तो उस portion को reuse के लिए दोबारा allocate कर सके।

इसका computer system मे बहुत ही महत्वपूर्ण योगदान होता है क्योंकि इसकी मदद से हम एक समय मे एक से ज्यादा processes को memory पर run करा सकते है।

Also Read:- What is Memory Allocation in Hindi – Static and Dynamic Memory Allocation

Concept of Memory Management in Hindi

Contiguous Allocation

इसका मतलब है कि memory मे जो भी space उपलब्ध है उसको छोटे छोटे समान समान भागों मे divide किया जाता है और जो भी process इन भागों मे run करती है वह अपनी application को run करने के लिए विभिन्न partition का use करती है। जब भी कोई request प्राप्त होती है तो यह process उसके लिए space को allocate कर देती है इस प्रकार हर process के लिए space प्रदान कर दिया जाता है।

सीधे शब्दों मे कहे तो यह सारी प्रोसेस computer की memory मे allocate रहती है और जब भी memory को किसी भी process के लिए request आएगी तो वह उस process के लिए memory को उपलब्ध कर देगी। आपको इस process मे कभी दिक्कत का सामना भी करना पड़ सकता है जब किसी process के द्वारा memory के लिए request की जाती है लेकिन उस process को पूरा होने के लिए उतनी memory उपलब्ध नहीं होती है, इस problem को Memory Fragmentation कहा जाता है।

Memory fragmentation का मुख्य कारण यह है कि memory को बराबर और समान भागों मे बाँट दिया जाता है और जब कोई Process को पूरा होने के लिए अधिक memory की आवश्यकता होती है तो वह उस small area मे पूरी नहीं हो पाती है जिस कारण वह process पूरी नहीं हो पाती है। ऐसी ही कुछ problems है जिनका सामना हमको करना पड़ता है जब system के द्वारा memory allocation का काम किया जाता है:-

1:- Wasted Memory:- यह memory का वह भाग होता है जो की होने को तो unused होता है लेकिन इसे किसी भी process के लिए allocate नहीं किया जा सकता है।

2:- Time Complexity:- हर बार किसी न किसी process के लिए memory space को allocate और de-allocate करने मे time भी waste होता है।

Process Address Speech

इसे हम logical address के set के रूप मे define कर सकते है। जब किसी भी program को मेमोरी allocate कर दी जाती है तो इसके बाद operating system का काम होता है की वह logical address को physical address मे change करे, यह address तीन प्रकार का होता है:-

1:- Symbolic Address:- यह address का वह प्रकार होता है जिसका इस्तेमाल Source code मे होता है इसमे variable name, instruction label जैसे symbols का इस्तेमाल होता है।

2:- Relative Address:- Relative address वह address होते है जिनको compilation के दौरान assign कर दिया जाता है। जब compiler के द्वारा address को compile किया जाता है तो उस समय compiler के द्वारा symbolic address को relative address मे change कर दिया जाता है।

3:- Physical Address:- फिज़िकल अड्रेस वह address होता है जिसे loader के द्वारा generate किया जाता है। जब किसी program को main memory मे load किया जाता है तब loader के द्वारा physical address को load किया जाता है। यहाँ पर logical address के set को logical address space के नाम से जाना जाता है और physical address के set को physical address space के नाम से जाना जाता है।

Virtual address से physical address मे runtime mapping का काम MMU (Memory Management Unit) के द्वारा किया जाता है जो की एक hardware device है। virtual address को physical address मे change करने के लिए MMU के द्वारा निम्नलिखित mechanism को follow किया जाता है:-

1:- सबसे पहले base register मे जो value होती है उसको user process के दौरान generate किए गए address मे add किया जाता है।

2:- user कभी भी Physical address के साथ deal नहीं करता है वह हमेशा virtual address के साथ deal करता है।          

Also Read:- What is Linux Operating System in Hindi – लिनक्स क्या है? पूरी जानकारी…

Static v/s Dynamic Loading

Dynamic या Static Loading का चुनाव उस समय होता है जब computer program को develop किया जा रहा होता है। अगर आप अपने Program को Statically Load करना चाहते है तो Compilation के दौरान पूरे program को external program module dependency के साथ ही compile और linking करनी होगी।

Linker का काम object program को दूसरे आवश्यक object module के साथ combine कर के एक absolute program बनाता है इस program मे logical address भी शामिल होता है।

अगर आप अपने program को dynamically load करना चाहते है तो आपका compiler सिर्फ उन ही programs को compile करेगा जिन programs को आप include करना चाहते है बाकी का काम execution के दौरान कर दिया जाएगा।

Static loading के दौरान absolute program और data मेमोरी मे execution की शुरुआत के order मे load होगा और जब program की dynamic loading की जाती है तब library के routine को disc मे relocatable form मे load कर दिया जाता है और उनको memory मे केवल तभी load किया जाता है जब किसी program को उनकी जरूरत होती है।

Dynamic v/s Static linking

जैसा की हम अभी पढ़ चुके है static linking का इस्तेमाल तब होता है जब linker उन सभी module को combine कर देता है जिनकी जरूरत किसी program को single executable program मे बदलने के लिए होती है जिससे कि किसी भी प्रकार की runtime dependency नहीं होती है।

जब dynamic linking का इस्तेमाल होता है तब program के साथ वास्तविक module या library को जोड़ना आवश्यक नहीं होता है बल्कि linking और compilation के समय dynamic module का reference प्रदान किया जाता है।

Swapping क्या है?

यह एक ऐसा प्रकार है जिसके माध्यम से किसी process को कुछ समय के लिए main memory से temporary memory मे swap कर दिया जाता है और उस memory को किसी अन्य process के लिए खाली कर दिया जाता है कुछ समय के बाद system दोबारा उस program को secondary memory से main memory मे swap कर देता है।

हालांकि swapping के कारण performance मे प्रभाव पड़ता है लेकिन इसकी मदद से multiple और बड़ी process को एक साथ चलाया जा सकता है इसलिए swapping को memory compaction की technique के रूप मे भी जाना जाता है।

इसके द्वारा एक process मे लिए गया समय इसके द्वारा process को main memory से secondary memory मे transfer करना और दोबारा उस उस program को secondary memory से main memory मे transfer करके उस process के द्वारा दोबारा main memory मे अपने लिए space को regain किया हुआ समय होता है।

Memory Allocation क्या होता है?

Main memory मुख्यतः दो प्रकार की होती है:-

Low Memory:- इस memory मे operating system स्थित रहता है।

High Memory:- user के द्वारा की जाने वाली सभी process इस भाग मे की जाती है।

Operating System के द्वारा निम्नलिखित memory allocation mechanism का इस्तेमाल किया जाता है:-

Single Partition Allocation:- allocation के इस प्रकार मे relocation register scheme का इस्तेमाल किया जाता है जिसकी सहायता से processes के बीच operating system के code और data को एक दूसरे के साथ change होने से बचाया जा सकता है। relocation register मे छोटे physical address शामिल होते है जबकि limit register मे logical address की range शामिल होती है।

Multiple Register Allocation:- इस प्रकार के allocation मे main memory को कुछ fix size के partition मे divide कर दिया जाता है जिसमे प्रत्येक partition को एक process प्रदान की जाती है। जब कोई भी partition फ्री हो जाता है तो उस partition को नई process प्रदान कर दी जाती है यही process चलती रहती है।

Fragmentation क्या होता है?

जब किसी process को memory मे load किया जाता है या memory से remove किया जाता है तो जो free memory होती है वह छोटे छोटे भागों मे बंट जाती है क्योंकि यह बहुत ही छोटे छोटे भागों मे बंट जाती है इसलिए जब भी किसी process को allocate किया जाता है तो वह इन छोटे भागों मे पूरी नहीं हो पाती है और ये छोटे भाग unused रह जाते है। इसी problem को हम fragmentation कहते है।

यह दो प्रकार की होती है:-

Internal Fragment:- इस प्रकार के fragmentation मे memory blocks बड़ी process को assign कर दिए जाते है जिसके कारण अगर memory का कुछ हिस्सा unused रहता है लेकिन इसको किसी दूसरी process के द्वारा इस्तेमाल नहीं किया जा सकता है।

External Fragment:- इस प्रकार के fragmentation मे किसी भी process को करने के लिए memory तो पर्याप्त होती है लेकिन यह contiguous नहीं होती है जिस कारण इसका इस्तेमाल नहीं किया जा सकता है।

Paging क्या होती है?

किसी भी computer पर जितनी भी physical memory मौजूद होती है यह उस memory से ज्यादा memory को address कर सकता है। computer system की इस extra memory को Virtual Memory कहते है। paging की technique इस virtual memory के implementation मे महत्वपूर्ण भूमिका निभाती है।

यह एक memory management technique है जिसमे address space को समान size के blocks मे divide कर दिया जाता है जिन्हे हम pages कहते है। यहाँ पर process के size को pages के नंबर के हिसाब से measure किया जाता है। ठीक इसी तरह main memory को भी छोटे छोटे समान blocks मे divide कर दिया जाता है जिन्हे हम Frames कहते है।

जब system किसी भी page को कोई frame का allocation करता है तो यह logical address को physical address मे बदल देता है और program के execution के लिए page table मे entry कर देता है। जब कोई भी प्रोसेस execute हो जाती है तो इससे संबंधित pages को उपलब्ध memory frames मे load कर दिया जाता है।

जब आपके computer की RAM भर जाती है यानि कि उसमे कोई खाली Space नहीं होता है तब आपका operating system मेमोरी से सभी unwanted pages को secondary memory मे transfer कर देगा जिससे की RAM मे कुछ space फ्री हो जाएगा और जब उन pages की किसी भी process को आवश्यकता होगी यह उन्हे दोबारा secondary memory से main memory मे transfer कर देगा, पूरे execution के दौरान यह process चलती रहती है।

Segmentation क्या होता है?

यह भी memory management की एक technique है जिसमे प्रत्येक कार्य को अलग अलग साइज़ segments मे divide कर दिया जाता है। जब process का execution शुरू हो जाता है तो इससे संबंधित सेगमेंट्स non contiguous memory मे load कर दिया जाता है हालांकि प्रत्येक segment उपलब्ध memory के contiguous block मे load होता है।

Conclusion

आज के इस article के माध्यम से हमने आज के मेमोरी मैनेजमेंट क्या होता है? के बारे मे विस्तार से जाना। आशा है कि यह article आपके लिए helpful रहा होगा। अगर आपको यह article पसंद आया हो तो इसे अपने दोस्तों के साथ जरूर share कीजिए।

आप हमे comment के माध्यम से सुझाव दे सकते है। आप हमे email के माध्यम से follow भी कर सकते है जिससे कि हमारी नई article की जानकारी आप तक सबसे पहले पहुचे आप email के माध्यम से हमसे question भी पूछ सकते है।   

Leave a Comment