Contiguous and Non-Contiguous Memory Allocation

Contiguous allocation एक program को RAM के एक अटूट block में रहने के लिए मजबूर करता है, जबकि non-contiguous allocation इसे बिखरी जगहों में फिट करने के लिए टुकड़ों में तोड़ देता है।

10 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

भरी पर ख़ाली Lab

कल्पना कीजिए एक group project के लिए 5 दोस्तों के साथ LabOne server room में पहुँचना। कमरे भर में 10 ख़ाली seats बिखरी हैं, पर कोई 5 seats एक अकेली पंक्ति में साथ नहीं हैं। lab assistant आपको बताता है कि आपका group काम नहीं कर सकता जब तक आप सब एक निरंतर line में साथ-साथ न बैठें। आप इंतज़ार में फँसे हैं, भले lab में कुल जगह भरपूर है। एक operating system इस बिल्कुल सिरदर्द का सामना कैसे करता है जब 30 students एक ही समय पर अपना code चलाने की कोशिश करें?

Theory

Cinema Hall बनाम बिखरा Cafeteria

contiguous allocation को एक व्यस्त cinema hall में एक परिवार के लिए tickets book करने की तरह सोचिए: सबको लगातार seat numbers में साथ बैठना होगा। अगर seats का एक अटूट block ग़ायब है, परिवार को लौटा दिया जाता है। non contiguous allocation एक group के एक college cafeteria में घुसने जैसा है। आप बँट जाते हैं, अलग tables पर कोई भी बेतरतीब ख़ाली कुर्सियाँ पकड़ लेते हैं, और अपने mobile phones से जुड़े रहते हैं। group फिर भी खा लेता है, चाहे वे कहीं भी बैठें।

Theory

Allocation Schemes परिभाषित करना

एक operating system में, contiguous memory allocation के लिए ज़रूरी है कि हर process physical memory addresses का एक अकेला, अटूट block घेरे। program को सौंपे गए RAM addresses लगातार होते हैं। दूसरी ओर, non contiguous memory allocation एक process को कई छोटे टुकड़ों में बाँटने और physical RAM में कहीं भी बिखरे उपलब्ध slots में रखने की अनुमति देता है। operating system हर टुकड़ा कहाँ छुपा है यह track करने के लिए एक भीतरी lookup map इस्तेमाल करता है।

At a glance

LabOne पर contiguous और non-contiguous memory allocation रणनीतियों की सीधी तुलना।

FeatureContiguous AllocationNon-Contiguous Allocation
RAM Layoutहर program के लिए एक अकेला अटूट blockRAM में बिखरे टुकड़ों में बँटा
Fragmentationexternal fragmentation से भारी नुक़सान झेलता हैमुख्यतः छोटी internal fragmentation का सामना करता है
Execution Speedतेज़ क्योंकि addresses क्रमिक होते हैंaddress translation overhead के कारण धीमा
Tracking Overheadसरल: सिर्फ़ start address और limit चाहिएजटिल: page tables या segment tables चाहिए

Theory

RAM Allocation की दुविधा

हमारे LabOne server पर एक scenario ट्रेस करते हैं। RAM में तीन मुफ़्त slots हैं: एक 20 MB block, एक 30 MB block, और एक 10 MB block, सक्रिय programs से अलग किए हुए। एक student 45 MB memory माँगती एक script चलाना चाहता है। contiguous नियमों के तहत, OS 45 MB या ज़्यादा का एक अकेला block खोजता है। चूँकि सबसे बड़ा block सिर्फ़ 30 MB है, script block हो जाती है। non contiguous नियमों के तहत, OS script को छोटे टुकड़ों में बाँटता है ताकि 20 MB और 30 MB slots भरे, इसे सफलतापूर्वक load करते हुए।

Quiz

अगर एक university exam पूछे कि आधुनिक operating systems में non-contiguous allocation को क्यों पसंद किया जाता है, कौन सी वजह सबसे सटीक है?

  1. यह address translation maps की ज़रूरत को पूरी तरह ख़त्म कर देता है
  2. यह programs के execution को continuous blocks से बहुत तेज़ बनाता है
  3. यह बिखरे मुफ़्त memory spaces को कुशलता से इस्तेमाल करता है और external fragmentation से बचता है
  4. यह LabOne पर कई student processes को एक साथ चलने से रोकता है
Show the answer

यह बिखरे मुफ़्त memory spaces को कुशलता से इस्तेमाल करता है और external fragmentation से बचता है

Non-contiguous allocation OS को मुफ़्त RAM के छोटे, बिखरे pockets इस्तेमाल करने देता है जो वरना बर्बाद हो जाते। हालाँकि यह कुछ tracking overhead लाता है, यह external fragmentation की समस्या को ख़ूबसूरती से सुलझाता है।

Watch out

Fragmentation की ग़लतफ़हमी

semester exams में एक classic जाल यह लिखना है कि non contiguous allocation सभी प्रकार की fragmentation ख़त्म कर देता है। यह आपके marks ले लेगा। हालाँकि यह बिखरे blocks इस्तेमाल करके external fragmentation पूरी तरह ख़त्म करता है, यह अब भी individual allocated chunks या pages के अंदर internal fragmentation लाता है। memory सवालों का जवाब देते समय हमेशा बताइए कि किस प्रकार की fragmentation घटती या पैदा होती है।

Think first

Address Translation का विश्लेषण

अगर operating system एक program को physical RAM के अलग हिस्सों में बिखेरता है, CPU को कैसे पता चलता है कि अगला instruction कहाँ खोजें? जवाब प्रकट करने से पहले शामिल hardware घटक को याद करने की कोशिश कीजिए।

Show the answer

CPU हमेशा logical addresses generate करता है। जब non-contiguous allocation इस्तेमाल होता है, hardware Memory Management Unit एक भीतरी lookup table, जैसे एक page table या segment table, इस्तेमाल करता है ताकि क्रमिक logical address को execution के दौरान तुरंत बिखरे physical coordinates में अनुवादित करे।

Theory

बाद के Semesters में Paging और Pointers

आप इस बिल्कुल concept को Unit 2 में पूर्ण operational mechanisms में फैलते देखेंगे जब हम Paging और Segmentation पढ़ते हैं। इसके अलावा, Semester 3 में, जब आप pointers इस्तेमाल करते हुए dynamic memory allocation के साथ जटिल C++ programs लिखते हैं, आप अंतर्निहित operating system kernel द्वारा manage की गई एक non contiguous memory structure के साथ सीधे बातचीत कर रहे हैं।

Summary

Key takeaways

  • Contiguous allocation एक process को memory addresses के एक अकेले, लगातार block में store करता है।
  • Non-contiguous allocation एक process को बिखरे RAM slots में स्थित छोटे chunks में तोड़ता है।
  • Contiguous systems सरल और तेज़ हैं पर भारी external fragmentation बर्बादी पैदा करते हैं।
  • Non-contiguous systems memory उपयोग अधिकतम करते हैं पर translation tables और hardware overhead माँगते हैं।
  • आधुनिक systems दर्जनों student programs को एक साथ चलाने के लिए non-contiguous methods पर निर्भर करते हैं।
  • Memory hook: Contiguous एक बड़ी chain है, non-contiguous दर्द तोड़ता है!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from File and Memory Management

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Contiguous and Non-Contiguous Memory Allocation · Operating System · Gri-Learn