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 रणनीतियों की सीधी तुलना।
| Feature | Contiguous Allocation | Non-Contiguous Allocation |
|---|---|---|
| RAM Layout | हर program के लिए एक अकेला अटूट block | RAM में बिखरे टुकड़ों में बँटा |
| Fragmentation | external 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 को क्यों पसंद किया जाता है, कौन सी वजह सबसे सटीक है?
- यह address translation maps की ज़रूरत को पूरी तरह ख़त्म कर देता है
- यह programs के execution को continuous blocks से बहुत तेज़ बनाता है
- यह बिखरे मुफ़्त memory spaces को कुशलता से इस्तेमाल करता है और external fragmentation से बचता है
- यह 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 दर्द तोड़ता है!