ऑपरेटिंग सिस्टम कैसे काम करते है : 10 कॉन्सेप्ट्स को आपको डेवलपर के रूप में जानना चाहिए

operating system kaise kaam karte hai

क्या आप बाइनरी बोलतो हो? क्या आप मशीन कोड समझ सकते है? अगर मैंने आपको 1 और 0 से भरा शीट दिया, तो क्या आप मुझे बता सकते है की इसका क्या अर्थ है? यदि आप किसी ऐसे देश में जाना चाहते थे, तो आप कभी ऐसी भाषा नहीं बोलते जो आपने कभी नहीं सुना है, या शायद आपने इसके बारे में सुना है लेकिन वास्तव में यह नहीं बोलते है, आपको कन्वर्सेशन (सवांद) करने में मदद करने के लिए आपको क्या चाहिए स्थानीय लोगो के साथ?
आपको एक ट्रांसलेटर की अवश्यकता होगी. आपका ऑपरेटिंग सिस्टम आपके PC में उस ट्रांसलेटर के रूप में कार्य करता है. यह उन 1s और Os, हां/नहीं, और मूल्यों को ऑन-ऑफ को एक Readable (पठनीय) भाषा में Changed (परिवर्तित) करता है जिसे आप समझेंगे. यह सब एक Streamlined Graphical User Interface, या GUI में करता है, की आप माउस के साथ घूम सकते है, चीजों पर क्लिक कर सकते है, उन्हें ले जा सकते है, और उन्हें अपनी आंखो के सामने होने जैसा लगते हैं. 

जबकि ज्ञान की सीमा और गहराई पर सवाल उठाया जा सकता है, बुनयादी सिद्धांतों से अधिक जानना महत्वपूर्ण हो सकता है कि आपका प्रोग्राम कितना अच्छा चलता है और यहां तक कि इसकी स्ट्रक्चर और फ्लो भी.

क्यों करे? जब आप कोई प्रोग्राम लिखते है और यह बहुत धीरे-धीरे चलता है, लेकिन आप अपने कोड के साथ कुछ भी गलत नहीं देखते हैं. तो आप सलूशन (समाधान) के लिए और कहां देखेंगे? यदि आप नहीं जानते है की ऑपरेटिंग सिस्टम कैसे काम करता है तो आप समस्या को डिबग करने में सक्षम कैसे होंगे? क्या आप बहुत सारी फाइलों तक पहुंच रहे हैं? मेमोरी और स्वैप से बाहर चलना उच्च उपयोग में हैं? लेकिन आप यह भी नहीं जानते की स्वैप क्या है! या I/O ब्लॉक्ड हैं? 

और आप एक मशीन के साथ कम्यूनिकेट करना चाहते हैं. आप स्थानीय रूप से या इन्टरनेट पर कैसे करते है? और क्या अंतर है? कुछ प्रोग्रामर एक Os को दुसरे पर क्योँ पसंद करते हैं? 

मैं कोर्स से अपने Takeaways (टेकअवे) शेयर करने के लिए इस पोस्ट का उपयोग करना चाहता हूं, यह 10 क्रिटिकल ऑपरेटिंग सिस्टम कॉन्सेप्ट्स हैं जिन्हें आपको सिखने की अवश्यकता है की क्या आप सॉफ्टवेयर विकसित करने में अच्छा होना चाहते है.

ऑपरेटिंग सिस्टम क्या है 

लेकिन सबसे पहले, डिफाइंड करें की एक ऑपरेटिंग सिस्टम क्या है. एक ऑपरेटिंग सिस्टम (Os) सॉफ्टवेयर का एक कलेक्शन  है जो कंप्यूटर का मैनेजमेंट करता है और प्रोग्राम्स के लिए सर्विसेज प्रोविडेस (प्रदान) करता है. विशेष रूप से, यह हार्डवेयर जटिलता को छुपता है, कम्प्यूटेशनल रिसोर्सेज का मैनेजमेंट करता है, और आइसोलेशन प्रोटेक्शन प्रदान करता है. सबसे महत्वपूर्ण बात यह है की इसे सीधे अंडरलाइंग हार्डवेयर तक विशेषाधिकार प्राप्त है.

Os के प्रमुख घटक फाइल सिस्टम, शेड्यूलर  और डिवाइस ड्राइवर है. आपने शयद पहले डेस्कटॉप (Windows, Mac, Linux) और एम्बेडेड (Android, iOS) ऑपरेटिंग सिस्टम दोनों का इस्तेमाल किया है.

ऑपरेटिंग सिस्टम के तीन प्रमुख एलेमेंट्स है, (1) Abstractions (प्रोसेस, थ्रेड, फाइल, सॉकेट, मेमोरी), (2) Mechanisms (क्रिएट, शेड्यूल, ओपन, write (लिखना), allocate (आवंटित), (3) Policies (LRU, EDF).

दो ऑपरेटिंग सिस्टम डिज़ाइन सिद्धांत है : (1) Separation of mechanism and policy पॉलिसीस का समथर्न करने के लिए फ्लेक्सिबल तंत्र को लागु करके और (2) Optimization for common case : Os का उपयोग कहां किया जाएगा? यूजर्स उस मशीन पर एक्सीक्यूट करना चाहेगा.

आमतौर पर तीन प्रकार के ऑपरेटिंग सिस्टम आमतौर पर उपयोग किए जाते हैं. पहला मोनोलिथिक Os है, जहां पूरा Os कर्नेल स्पेस में काम कर रहा है और सुपरवाइजर मोड में अकेला है. दूसरा मोड्यूलर Os है, जिसमे सिस्टम कोर का कुछ हिस्सा मोड्यूल इंडिपेंडेंट फाइलों में स्थित होगा जिसे रन टाइम पर सिस्टम में जोड़ा जा सकता है. और तीसरा माइक्रो Os है, जहा  कर्नेल अलग प्रक्रियाओं में विभाजित है, जिसे सर्वर के रूप में जाना जाता है. कुछ कर्नेल स्पेस में चलते है और कुछ यूजर-स्पेस  में चलते हैं.

अब उन प्रमुख कॉन्सेप्ट्स में शामिल हों जिन्हें आपको अधिक विस्तार से समझने की अवश्यकता है.

1. प्रोसेसेज और प्रोसेस मैनेजमेंट 

एक प्रोसेस मूल रूप से परफॉर्म में एक प्रोग्राम है. एक प्रोसेस के परफॉरमेंस Sequential (अनुक्रमिक) फैशन में प्रोग्रेस जानी चाहिए. इसे सरल शब्दों में रखने के लिए, हम अपने कंप्यूटर प्रोग्राम को टेक्स्ट फाइल में लिखते है, और जब हम इस प्रोग्राम को एक्सीक्यूट करते है, तो यह एक प्रोसेस बन जाती है जो प्रोग्राम में Mentioned (उल्लेख) सभी प्रोग्राम्स को एक्सीक्यूट करती है.

जब कोई प्रोग्राम मेमोरी में लोड होता है और यह एक प्रोसेस बन जाता है. तो इसे चार वर्गों में विभाजित किया जा सकता है - स्टैक, Heap (हेअप), टेक्स्ट, और डाटा. निम्न मुख्य इमेज मेमोरी  के अंदर एक प्रोसेस का Simplified (सरलीकृत) लेआउट दिखती है.

Processes and Process Management

Stack : प्रोसेस स्टैक में टेम्पररी डेटा, जैसे मेथड/फंक्शन पैरामीटर्स, रिटर्न एड्रेस, और लोकल वेरिएबल्स शामिल है.

Heap : यह गतिशील रूप से Allocated Memory को अपने रन टाइम के दौरान एक प्रोसेस में  Allocated किया जाता है.

Text : इसमें प्रोग्राम काउंटर के मूल्य और प्रोसेस के रजिस्टरों की कंटेंट्स द्वारा Represented (प्रतिनिधित्व)  की जाने वाली वर्तमान गतिविधि शामिल है.

Data: इस सेक्शन में ग्लोबल और स्थैतिक चार शामिल हैं.

जब कोई प्रोसेस एक्सीक्यूट होती है, तो यह विभिन्न राज्यों के माध्यम से गुजरती है. ये स्टेप अलग-अलग ऑपरेटिंग सिस्टम में भिन्न हो सकते है, और इन राज्यों के नाम भी standardized (मानकीकृत) नहीं है. आम तौर पर, एक प्रोसेस में एक समय में निम्नलिखित पांच राज्यों में से एक हो सकता है:

Processes and Process Management


Start : प्रारंभिक स्थिति जब एक प्रक्रिया पहली बार शुरू / बनाई गई है.

Ready: प्रोसेसेज प्रोसेसर को सौपने की प्रतीक्षा कर रही है. तैयार प्रोसेसेज ऑपरेटिंग सिस्टम द्वारा Allocated प्रोसेसर  रखने की प्रतीक्षा कर रही है ताकि वे चल सकें.  स्टार्ट स्थिति के बाद इस स्थिति में एक प्रोसेस हो सकती है, या इसे चलाने के दौरान शेड्यूलर द्वारा कुछ अन्य प्रोसेस में असाइन करने के लिए बाधा उत्पन्न हो सकती है.

Running : Os शेड्यूलर द्वारा प्रोसेसर की प्रक्रिया को एक बार सौंपा गया है, प्रक्रिया स्थिति चलने के लिए सेट है और प्रोसेसर इसके इंस्ट्रक्शन Executed करता है.

Waiting : प्रोसेस वेटिंग स्थिति में जाती है अगर उसे रिसोर्सेज की वेटिंग करने की रिक्वायरमेंट्स होती है, जैसे यूजर्स इनपुट करना, या फाइल अवेलेबल होने का इंतजार करना.

Terminated  or Exit : प्रोसेस फिनिशेस (समाप्त) होने के बाद, या इसे ऑपरेटिंग सिस्टम द्वारा टर्मिनेटेड कर दिया जाता है इसे टर्मिनेटेड स्टेट में मूव्ड कर दिया जाता है जहां यह मुख्य मेमोरी से हटाया जाता है.
process control block in os

एक प्रोसेस कंट्रोल ब्लॉक प्रत्येक प्रोसेस के लिए ऑपरेटिंग सिस्टम द्वारा बनाए मैन्टैनेड डेटा स्ट्रक्चर है. PCB को एक इन्टिजर प्रोसेस ID (PID) द्वारा पहचाना जाता है.एक PCB निचे सूचीबद्ध अनुसार प्रोसेस का ट्रैक रखने के लिए आवश्यक सभी जानकारी रखता है:

 Process State : प्रोसेस की वर्तमान स्थिति - चाहे वह तैयार है, रनिंग में है, वेटिंग कर रही है या जो भी हो.

Process Privileges : सिस्टम रिसोर्सेज तक पहुंच को allow/disallow देने की रिक्वायर्ड है.

Process ID : ऑपरेटिंग सिस्टम में प्रत्येक प्रोसेस के लिए यूनिक पहचान है.

Pointer : मूल प्रोसेस के लिए एक पैरेंट.

Program Counter : प्रोग्राम काउंटर इस प्रोसेस के लिए अगले इंस्ट्रक्शन के एड्रेस पर एक सूचक है.

CPU Registers : विभिन्न CPU रजिस्ट्रार जहां चलने वाले स्टेट के लिए परफॉरमेंस के लिए प्रोसेसेज को स्टोर्ड करने के आवश्यकता होती है.

CPU Scheduling Information : प्रोसेस प्राथमिकता और अन्य शेड्यूलिंग जानकारी जो प्रोसेस को निर्धारित करने के लिए आवश्यक है.

Memory Management Information : ऑपरेटिंग सिस्टम द्वारा उपयोग की जाने वाली मेमोरी के आधार पर इसमें पेज टेबल, मेमोरी और सेगमेंट टेबले की जानकारी शामिल है.

Accounting Information : इसमें प्रोसेस इम्प्लेमेंटिंग, समय सीमा, execution ID आदि के उपयोग की जाने वाली CPU की अमाउंट शामिल है.

IO Status Information : इस प्रोसेस में Allocated I/O डिवाइस की एक लिस्ट शामिल है.

2. थ्रेड्स और concurrency

एक थ्रेड प्रोसेस कोड के माध्यम से परफॉरमेंस का प्रवाह है. इसका अपना प्रोग्राम काउंटर है जो अगले निर्देश को परफॉरमेंस करने के लिए निर्देश का ट्रैक रखता है. इसमें सिस्टम रजिस्ट्रार भी है जो वर्तमान कार्यशील वेरिएबल्स (चर) को पकड़ते है. और एक स्टैक जिसमे परफॉरमेंस हिस्ट्री होता है. 

अपने सहकर्मी थ्रेड के साथ एक थ्रेड शेयर कोड सेगमेंट, डेटा सेगमेंट और खुली फाइलों जैसी विभिन्न जानकारी. जब एक थ्रेड कोड सेगमेंट मेमोरी आइटम बदलता है, तो अन्य सभी थ्रेड इसे देखते है.


एक थ्रेड को हल्के वजन भी कहा जाता है. थ्रेड समानांतरता के माध्यम से एप्लीकेशन परफॉरमेंस में सुधार करने का एक तरीका प्रदान करते हैं. थ्रेड ओवरहेड को कम करके ऑपरेटिंग सिस्टम के परफॉरमेंस में सुधार के लिए एक सॉफ्टवेयर रिप्रेजेंट का प्रतिनिधित्व करते है. एक थ्रेड क्लासिकल प्रोसेस के बराबर है.

प्रत्येक थ्रेड बिल्कुल एक प्रोसेस से सम्बंधित है, और एक प्रोसेस के बाहर कोई थ्रेड मौजूद नहीं हो सकता है. प्रत्येक थ्रेड कंट्रोल के एक अलग फ्लो का प्रतिनिधित्व करता है. नेटवर्क सर्वर और वेब सर्वर को लागु करने में थ्रेड का सफलतापूर्वक उपयोग किया गया है. वे शेयर मेमोरी मल्टीप्रोसेसरों का अनुप्रयोगों के समान्तर परफॉरमेंस के लिए एक सूटेबल फाउंडेशन भी प्रदान करते है.

single threaded vs multithreaded


थ्रेड्स के फायदे :
  • वे कॉन्टेक्स्ट स्विचिंग समय को कम करते हैं.
  • उनका उपयोग एक प्रोसेस के भीतर Concurrency (संगामिति) प्रदान करता है.
  • वे कुशल संचार प्रदान करते है.
  • स्विच थ्रेड बनाने और कॉन्टेक्स्ट बनाने के लिए यह अधिक किफायती है.
  • थ्रेड मल्टीप्रोसेसर आर्किटेक्चर के बड़े पैमाने पर और एफिशिएंसी (दक्षता) के उपयोग की अनुमति देते है.

निम्नलिखित दो तरीकों से थ्रेड लागु किए गए है:
  • यूजर लेवल थ्रेड्स : यूजर्स-मैनेज्ड  थ्रेड्स.
  • कर्नेल लेवल थ्रेड्स : ऑपरेटिंग सिस्टम-मैनेज्ड थ्रेड कर्नेल पर काम कर रहे है, एक ऑपरेटिंग सिस्टम कोर.

यूजर लेवल थ्रेड्स 

इस मामले में, थ्रेड प्रबंधन कर्नल थ्रेड के अस्तित्व से अवगत नहीं है. थ्रेड लाइब्रेली में थ्रेड परफॉरमेंस को शेड्यूल करने के लिए, और थ्रेड कॉन्टेक्स्ट को सेविंग और रीस्टोरिंग करने के लिए थ्रेड के बीच मैसेज और डेटा को पासिंग करने के लिए थ्रेड बनाने और नष्ट करने के लिए कोड शामिल है. एप्लीकेशन एक थ्रेड से शुरू होता है.

Diagram

लाभ :
  • थ्रेड स्विचिंग को कर्नेल मोड़ विशेषाधिकारों की आवश्यकता नहीं है.
  • यूजर्स लेवल थ्रेड किसी भी ऑपरेटिंग सिस्टम पर चला सकते है.
  • शेड्यूलिंग यूजर्स थ्रेड में एप्लीकेशन इंडिविजुअल (विशिष्ट) हो सकती है.
  • यूजर्स लेवल थ्रेड बनाने और मैनेज करने के लिए फ़ास्ट है.

नुकसान :

  • एक टिपिकल ऑपरेटिंग सिस्टम में, अधिकांश सिस्टम कॉल ब्लॉकिंग हो रहे है.
  • मल्टीथ्रेडेड अनुप्रयोग मल्टीप्रोसेसिंग का लाभ नहीं उठा सकता है.

कर्नल लेवल थ्रेड 

इस मामले में, कर्नेल द्वारा थ्रेड मैनेजमेंट किया जाता है. एप्लीकेशन क्षेत्र में कोई थ्रेड मैनेजमेंट कोड नहीं है. कर्नेल थ्रेड सीधे ऑपरेटिंग सिस्टम द्वारा सपोर्टेड है. किसी भी एप्लीकेशन को मल्टीथ्रेडेड करने के लिए प्रोग्राम किया जा सकता है. किसी एप्लीकेशन के भीतर सभी थ्रेड एक ही प्रक्रिया में सपोर्टेड है.

कर्नेल पूरी तरह से प्रोसेस के लिए कॉन्टेक्स्ट इनफार्मेशन को बनाए रखता है और प्रोसेस के भीतर इंडिविजुअल के थ्रेड के लिए. कर्नेल द्वारा शेड्यूलिंग थ्रेड आधार पर किया जाता है. कर्नेल स्पेस में थ्रेड सृज़न, शेड्यूलिंग और मैनेजमेंट करता है. कर्नेल थ्रेड आमतौर पर यूजर्स थ्रेड की तुलना बनाने में और मैनेज करने लिए धीमे होते है.


kernel level threads

लाभ 
  • कर्नेल कई प्रोसेसेज पर एक ही प्रोसेस से कई थ्रेड शेड्यूल कर सकते है.
  • यदि किसी प्रोसेस में एक थ्रेड ब्लॉक्ड है, तो कर्नेल एक ही प्रोसेस के दुसरे थ्रेड को शेड्यूल कर सकता है.
  • कर्नेल रूटीन्स खुद को बहुप्रचारित किया जा सकता है.
नुकसान 
  • कर्नेल थ्रेड आमतौर पर यूजर्स थ्रेड की तुलना में बनाने और मैनेज करने के लिए धीमे होते हैं.
  • एक ही प्रोसेस में एक थ्रेड से दुसरे में कंट्रोल और ट्रान्सफर कर्नेल में एक मोड स्विच की आवश्यकता होती है.

3. शेड्यूलिंग 

शेड्यूलिंग की प्रोसेस, प्रोसेस मेनेजर की रेस्पोंसिबिलिटी (जिम्मेदारी) है जो CPU से चल रही प्रोसेस को हटाने और किसी विशेष प्रोसेस के आधार पर प्रोसेस के सिलेक्शन हैंडल्स (संभालने) में मदद करती है.

प्रोसेस शेड्यूलिंग एक मल्टीप्रोग्रामिंग ऑपरेटिंग सिस्टम का एक अनिवार्य हिस्सा है. ये ऑपरेटिंग सिस्टम एक समय में एक से अधिक प्रोसेस Executable मेमोरी में लोड होने की अनुमति देते है, और लोड की गई प्रोसेस टाइम मल्टीप्लेक्सिंग का उपयोग करके CPU को शेयर करती है.

Os Process Scheduling Queues में सभी प्रोसेस कंट्रोल ब्लॉक्स (PCBs) रखता है. Os प्रत्येक प्रोसेस स्टेट के लिए एक अलग Queue (पंक्ति) बनाए रखता है, और उसी execution स्थिति में सभी प्रोसेसेज के PCBs एक ही Queue (पंक्ति) में रखे जाते है. जब प्रोसेस की स्थिति बदल जाती है, तो इसका PCBs अपनी वर्तमान Queue (पंक्ति) से अनलिंक हो जाता है और इसकी नई स्थिति कतार में मूव्ड हो जाता है.

ऑपरेटिंग सिस्टम निम्न महत्वपूर्ण प्रोसेस शेड्यूलिंग कतार बनाए रखता है:
  • जॉब queue :  यह पंक्ति सिस्टम में सभी प्रोसेसेज को रखती है.
  • रेडी queue :  यह पंक्ति मुख्य मेमोरी, तैयार और एक्सीक्यूट करने की प्रतीक्षा में रहने वाली सभी प्रोसेसेज का एक सेट रखती है. इस पंक्ति में हमेशा एक नई प्रोसेस डाली जाती है.
  • डिवाइस queues : डिवाइस की अनुपलब्धता के कारण ब्लॉक्ड प्रोसेस इस पंक्ति का गठन करती है.
Process


Os प्रत्येक पंक्ति (FIFO, राउंड रोबिन,प्रायोरिटी, इत्यादि) को मैनेज करने के लिए विभिन्न नीतियों का उपयोग कर सकता है. Os शेड्यूलर निर्धारित करता है की रेडी और रन पंक्ति के बिच प्रोसेसेज को कैसे मूव किया जाये, जिसमें केवल सिस्टम पर प्रति प्रोसेसर कोर में एक एंट्री हो सकती है. उपरोक्त डायग्राम में, इसे CPU के साथ मर्गेड (विलय) कर दिया है.

दो-स्टेट प्रोसेस मॉडल्स चल रहे और नॉन-रनिंग स्टेट को refer (रेफेर) करते है:

  • रनिंग : जब एक नई प्रोसेस बनाई जाती है, तो यह चलती स्थिति में सिस्टम में इंटर करती है.
  • नॉट रनिंग : रनिंग प्रोसेसेज पंक्ति में रखी जाती है, जो उनकी बारी को एक्सीक्यूट करने प्रतीक्षा करती है. पंक्ति में प्रत्येक एंट्री एक पर्टिकुलर प्रोसेस के लिए एक पॉइंटर है. पंक्ति एक लिंक्ड लिस्ट का उपयोग करके लागु लिया जाता है. डिस्पैचर (प्रेषक) का उपयोग निम्नानुसार किया जाता है. अगर प्रोसेस पूरी हो गई है या अबोर्टेड (निरस्त) कर दी गई है, तो प्रोसेस को त्याग दिया जाता है. किसी भी मामले में, डिस्पैचर(प्रेषक) तब पंक्ति से एक्सीक्यूट करने के लिए एक प्रोसेस का सेलेक्ट करता है. 

developers context switching

एक कॉन्टेक्स्ट स्विच वह मैकेनिज्म (तंत्र) है जो प्रोसेस कंट्रोल ब्लॉक में CPU के स्टेट या कॉन्टेक्स्ट को स्टोर्स करता है और रिस्टोर करता है. यह एक प्रोसेस एक्सीक्यूट को बाद में उसी पॉइंट से फिर से स्टार्ट करने के अनुमति देता है. इस तकनीक का उपयोग करते हुए, एक कॉन्टेक्स्ट स्विचर मल्टीप्ल प्रोसेस को एक सिंगल CPU शेयर करने में सक्षम बनाता है. कॉन्टेक्स्ट स्विचिंग एक मल्टीटास्किंग ऑपरेटिंग सिस्टम की एक आवश्यक विशेषता है. 

जब शेड्यूलर CPU को एक प्रोसेस को दुसरे प्रोसेस में एक्सीक्यूट करने से स्विच करता है, तो वर्तामान रनिंग प्रोसेस से स्टेट प्रोसेस कंट्रोल ब्लॉक में स्टोर होता है. इसके बाद, अगली प्रोसेस ले लिए स्टेट अपने PCB से लोड किया जाता है. उस पॉइंट पर सेकंड प्रोसेस कॉन्टेक्स्ट स्टार्ट कर सकती है.

कॉन्टेक्स्ट स्विच कम्प्यूटेशनल इंटेंसिव है. क्योकि रजिस्टर और मेमोरी स्टेट्स को Save और रिस्टोर्ड किया जाना चाहिए. कॉन्टेक्स्ट स्विचिंग टाइम की अमाउंट से बचने के लिए, कुछ हार्डवेयर सिस्टम प्रोसेसर रजिस्टरों के दो या अधिक sets (सेटों) को एम्पलॉय (नियोजक) करते है.

जब प्रोसेस स्विच की जाती है. तो निम्नलिखित जानकारी के बाद उपयोग के लिए स्टोर्ड की जाती है: प्रोग्राम काउंटर, शेड्यूलिंग इनफार्मेशन, बेस और लिमिट रजिस्टर वैल्यू, वर्तमान में used (प्रयुक्त) रजिस्टर, चेंज्ड स्टेट, I/O स्टेट इनफार्मेशन, और एकाउंटिंग इनफार्मेशन.

4. मेमोरी मैनेजमेंट

मेमोरी मैनेजमेंट एक ऑपरेटिंग सिस्टम की कार्यक्षमता है जो प्राइमरी मेमोरी को हैंडल्स करता है या  मैनेज करता है. यह कॉन्टेक्स्ट के दौरान मुख्य मेमोरी और डिस्क के बीच प्रोसेसेज को आगे और आगे ले जाता है.

मेमोरी मैनेजमेंट प्रत्येक मेमोरी लोकेशन का ट्रैक रखता है, भले ही इसे कुछ प्रोसेस या फ्री में allocated (आवंटित) किया गया हो. यह चेक करता है की प्रोसेसेज को कितनी मेमोरी allocated (आवंटित) की जानी है. यह तय करता है है की किस समय प्रोसेस को मेमोरी मिलेगी. और यह तब भी ट्रैक करता है जब भी मेमोरी फ्री हो जाती है या allocated (आवंटित) हो जाती है, और स्थिति को संगत रूप से अपडेट करता है.


swift retain cycle

प्रोसेस एड्रेस स्पेस लॉजिकल एड्रेस का सेट जो एक प्रोसेस को इसके कोड में रेफरेन्सेस करता है. उदाहरण के लिए, जब 32-बिट एड्रेसिंग उपयोग में है, तो एड्रेस 0 से 0x7fffffff तक हो सकते है; 2 गीगाबाइट के कुल थ्योरेटिकल साइज़ के लिए, ¹²³ पॉसिबल संख्या है.

ऑपरेटिंग सिस्टम प्रोग्राम में मेमोरी allocation के समय फिजिकल एड्रेस को मैप करने का ख्याल रखता है. मेमोरी के पहले और उसके बाद में allocated किए जाने वाले प्रोग्राम में तीन प्रकार के एड्रेस उपयोग किए जाते है.

  • सिंबॉलिक एड्रेस : सोर्स कोड में उपयोग किए गए एड्रेस. वेरिएबल नेम, कांस्टेंट, और इंस्ट्रक्शन लेबल्स सिंबॉलिक एड्रेस स्पेस के मूल एलेमेंट्स है.
  • रिलेटिव एड्रेस : कंपाइलेशन (संकलन) के टाइम, एक  कम्पाइलर सिंबॉलिक एड्रेस को रिलेटिव एड्रेस में कन्वर्ट  करता है.
  • फिजिकल एड्रेस : लोडर उस टाइम उन एड्रेस को उत्पन्न करता है जब एक प्रोग्राम मुख्य मेमोरी में लोड होता है.

वर्चुअल और फिजिकल एड्रेस Compile-time एड्रेस बिन्डिंग स्कीम में सामान है. वर्चुअल और फिजिकल एड्रेस execution-time एड्रेस बिन्डिंग स्कीम में भिन्न होते है.

किसी प्रोग्राम द्वारा जनरेटेड सभी लॉजिकल एड्रेस का सेट लॉजिकल एड्रेस स्पेस के रूप में जाना जाता है. इन लॉजिकल एड्रेस से वर्चुअल और फिजिकल एड्रेस का सेट फिजिकल एड्रेस स्पेस के रूप में जाना जाता है.

5. इंटर-प्रोसेस कम्युनिकेशन 


दो प्रकार के प्रोसेस है: इंडिपेंडेंट और cooperating (सहयोगी).एक इंडिपेंडेंट प्रोसेस अन्य प्रोसेस के परफॉरमेंस से प्रभावित नहीं होती है, जबकि एक सहकारी प्रोसेस अन्य परफोर्मेंस प्रोसेस से प्रभावित हो सकती है.

आप सोच सकते है की उन प्रोसेसेज, जो इंडिपेंडेंट रूप से चल रहे है, बहुत कुशलतापूर्वक परफॉरमेंस करेंगे. लेकिन हकीकत में, ऐसी कई स्थितियां है जब कम्प्यूटेशनल स्पीड, प्रोसेस और मॉड्यूलरीटी बढ़ाने के लिए एक प्रोसेस सहकारी प्रकृति का उपयोग किया जा सकता है. इंटर-प्रोसेस कम्युनिकेशन (IPC) एक मैकेनिज्म है जो प्रोसेसेज को एक-दुसरे के साथ कम्यूनिकेट करने और उनके कार्यों को सिंक्रोनाइज करने की अनुमति देता है. इन प्रोसेसेज के बीच कम्यूनिकेशन को उनके बीच सहयोग की विधि के रूप में देखा जा सकता है. 

प्रोसेसेज एक दुसरे के साथ दो तरीको से कम्यूनिकेट कर सकती है: शेयर्ड मेमोरी और पार्सिंग मैसेज.

शेयर मेमोरी मेथड 

मान लें की दो प्रोसेसेज है: प्रोडूसर और उपभोक्ता. प्रोडूसर कुछ आइटम produces (उत्पन्न) करता है. दो प्रोसेस एक सामान्य स्पेस या मेमोरी लोकेशन शेयर करती हैं जिसे "बफर" कहा जाता है, जहा प्रोडूसर द्वारा उत्पादित आइटम स्टोर किया जाता है. और जहा उपभोक्ता अवश्यकतानुसार आइटम का उपभोग करता है.

इस समस्या के दो वर्शन है : पहला व्यक्ति आसंबद्ध बफर प्रॉब्लम के रूप में जाना जाता है, जिसमे प्रोडूसर आइटम बनाने पर रख सकता है और बफर के साइज़ पर कोई सीमा नहीं है.दुसरे को बाध्य बफर प्रॉब्लम के रूप में जाना जाता है, जिसमे प्रोडूसर कुछ निश्चित आइटम्स तक उत्पादन कर सकता है, और इसके बाद उपभोक्ता उपभोग करने के लिए इंतजार करना शुरु कर देता है.


Shared Memory Method


Bounded(बाध्य) बफर प्रॉब्लम में, प्रोडूसर और Consumer(उपभोक्ता) कुछ सामान्य मेमोरी शेयर करेंगे. फिर प्रोडूसर आइटम्स का उत्पादन शुरु कर देंगे. यदि उत्पादित आइटम्स की कुल संख्या बफर के साइज़ के बराबर होती है, तो प्रोडूसर उपभोक्ता द्वारा उपभोग किए जाने तक प्रतीक्षा करेंगे.

इसी प्रकार, उपभोक्ता पहले आइटम की उपलब्धता के लिए जाचं करता है, और यदि कोई आइटम उपलब्ध नहीं है, तो उपभोक्ता प्रोडूसर को इसका produce(उत्पादन) करने की प्रतीक्षा करेगा. यदि सामान उपलब्ध है, उपभोक्ता उन्हें उपभोग करेगा.

मैसेज पार्सिंग मेथड

इस विधि में, प्रोसेस किसी भी प्रकार की मेमोरी शेयर के बिना एक-दुसरे के साथ कम्यूनिकेट करती है. यदि दो प्रोसेसेज P1 और P2 एक दुसरे के साथ कम्यूनिकेट करना चाहते है, तो वे निम्नानुसार आगे बढ़ते है:

  • एक कम्युनिकेशन लिंक स्थापित करें (यदि कोई लिंक पहले से मौजूद है, तो इसे फिर से स्थापित करने की आवश्यकता नहीं है.)
  • मूल primitives का उपयोग का मैसेज का आदान-प्रदान शुरू करें. हमें कम से कम दो प्राइमेटिव की आवश्यकता है: send (मैसेज, डेस्टिनेशन) या send (मैसेज) और receive (मैसेज, होस्ट) या receive (मैसेज)

मैसेज का साइज़ फिक्स्ड(तय) वेरिएबल किया जा सकता है. यदि यह फिक्स साइज़ है, तो Os डिज़ाइनर के लिए यह आसन है लिकिन प्रोग्रामर के लिए complicated(जटिल)है. यदि यह एक वेरिएबल साइज़ है, तो प्रोग्रामर के लिए यह आसन है लिकिन Os डिज़ाइनर के लिए जटिल है. एक मानक मैसेज में दो भाग होते है: एक header(हैडर) और एक body(बॉडी).

Message passing
हैडर का उपयोग मैसेज साइज़, डेस्टिनेशन ID, सोर्स ID, मैसेज लेंथ(लम्बाई) और कंट्रोल इनफार्मेशन को स्टोरिंग (संग्रहित) करने के लिए किया जाता है. कंट्रोल इनफार्मेशन में इनफार्मेशन होती है जैसे की अगर यह बफर स्पेस, सीक्वेंस नंबर और इसकी प्रायोरिटी से बहार हो जाता है तो क्या करना है. आमतौर पर, मैसेज FIFO Style(शैली) का उपयोग करके भेजा जाता है.

6. इनपुट/आउटपुट मैनेजमेंट 

एक ऑपरेटिंग सिस्टम की इम्पोर्टेन्ट जॉब्स में से एक माउस, कीबोर्ड, टच पैड, डिस्क ड्राइव, डिस्प्ले एडाप्टर, USB डिवाइस, बिट मैप किए गए स्क्रीन, एलईडी, एनालॉग सहित विभिन्न इनपुट/आउटपुट (I/O) डिवाइसों मैनेजमेंट करना. टू-डिजिटल कनवर्टर, ऑन/ऑफ स्विच, नेटवर्क कनेक्शन, ऑडियो I/O, प्रिंटर, आदि.


parallel


एक I/O सिस्टम को एक एप्लीकेशन I/O रिक्वायर्ड लेने और उसे फिजिकल डिवाइस पर भेजने की अवश्यकता होती है, फिर डिवाइस से जो प्रतिक्रिया वापस आती है उसे ले लें और इसे एप्लीकेशन पर भेजें. I/O डिवाइस के दो कैटेगरी में विभाजित किया जा सकता है:
  • ब्लॉक डिवाइस : एक ब्लॉक डिवाइस वह है जिसके साथ ड्राइवर डेटा के पुरे ब्लॉक भेजकर कम्यूनिकेट करता है. उदाहरण के लिए, हार्ड डिस्क, USB कैमरे, डिस्क-ऑन की, आदि.
  • करैक्टर डिवाइस : एक करैक्टर डिवाइस वह होता है जिसके साथ ड्राइवर सिंगल अक्षरों (बाइट्स, ओक्टेस्ट)भेजकर और रिसीविंग(प्राप्त) करके कम्यूनिकेट करता है. उदाहरण के लिए, सीरियल पोर्ट, पैरेलल पोर्ट्स, साउंड कार्ड्स, आदि.
CPU के पास I/O डिवाइस से इनफार्मेशन पास करने का एक तरीका होना चाहिए. CPU और डिवाइस के कम्यूनिकेट करने के लिए तीन एप्रोच अवेलेबल हैं. 

1. स्पेशल इंस्ट्रक्शन I/O

यह CPU इंस्ट्रक्शन का उपयोग करता है जो विशेष रूप से I/O डिवाइसों को कंट्रोल करने के लिए बनाए जाते है. ये इंस्ट्रक्शन आम तौर पर डेटा को I/O डिवाइस पर भेजने या I/O डिवाइस से रीड करने की अनुमति देते हैं.

2. मेमोरी-मैप्ड I/O

मेमोरी-मैप्ड किए गए I/O का उपयोग करते समय, वही एड्रेस प्लेस मेमोरी और I/O डिवाइस द्वारा शेयर किया जाता है. डिवाइस सीधे कुछ मैंन मेमोरी एड्रेस से जुड़ा हुआ है ताकि I/O डिवाइस CPU के माध्यम से बिना मेमोरी डेटा को ब्लॉक में मूव्ड कर सके.


input output management in operating system

मेमोरी मैप्ड किए गए I/O का उपयोग करते समय, Os मेमोरी में बफर Allocated करता है और CPU को डेटा भेजने के लिए उस बफर का उपयोग करने के लिए I/O डिवाइस को इन्फॉर्म करता है. I/O डिवाइस CPU के साथ असीमित रूप से वर्क करता है, और समाप्त होने पर CPU को Obstructed (बाधित) करता है.

इस मेथड का एडवांटेज यह है की मेमोरी का उपयोग करने वाले प्रत्येक निर्देश का उपयोग I/O डिवाइस में हेरफेर करने के लिए किया जा सकता है. मेमोरी-मैप्ड किए गए I/O का प्रयोग डिस्क और कम्यूनिकेट इंटरफ़ेस जैसे हाई स्पीड वाले I/O डिवाइस के लिए किया जाता है.

3. डायरेक्ट मेमोरी एक्सेस (DMA)

कीबोर्ड जैस स्लो डिवाइस प्रत्येक बाइट ट्रान्सफर होने के बाद मैंन CPU में बाधा जनरेट करेंगे. यदि एक हाई डिवाइस, जैसे डिस्क, ने प्रत्येक बाइट के लिए बाधा उत्पन्न की है, तो ऑपरेटिंग सिस्टम इन बाधाओं को संभालने में अपना अधिकांश समय स्पेंड करेगा. तो एक टिपिकल कंप्यूटर इस ओवरहेड को कम करने के लिए डायरेक्ट मेमोरी एक्सेस (DMA) हार्डवेयर का उपयोग करता है.

डायरेक्ट मेमोरी एक्सेस (DAM) का मतलब है की CPU I/O मोड्यूल अथॉरिटी को बिना किसी भागीदारी के मेमोरी से read या write के लिए ग्रांट्स देता है. DMA मोड्यूल मैंन मेमोरी और I/O डिवाइस के बीच डेटा के आदान-प्रदान को कंट्रोल करता है. CPU केवल ट्रान्सफर की शुरुआत और अंत में शामिल है और पुरे ब्लॉक को ट्रान्सफर करने के बाद ही interrupted (बाधित) है.


डायरेक्ट मेमोरी एक्सेस को DMA कंट्रोलर (DMAC) नामक विशेष हार्डवेयर की आवश्यकता होती है जो डेटा ट्रान्सफर का मैनेज करता है और सिस्टम बस तक पहुंच को मीडिएटर करता है. कंट्रोलर्स को सोर्स और डेस्टिनेशन पॉइंटर्स (डेटा को Read/Write के लिए) के साथ प्रोग्राम किया जाता है. ट्रान्सफर बाइट की नंबर को ट्रैक करने के लिए काउंटर, और विभिन्न सेटिंग्स. इनमें I/O और मेमोरी टाइप और CPU साइकल्स के लिए बाधाओं और स्टेट्स शामिल हैं.

7. वर्चुअलाजेशन 

वर्चुअलैजेशन टेक्नोलॉजी है जो आपको एक सिंगल, फिजिकल हार्डवेयर सिस्टम में कई सिमुलेट वातावरण या डेडिकेटेड रिसोर्सेज बनाने की अनुमति देती है. 

एक हाइपरविजर नेम्स सॉफ्टवेयर सीधे उस हार्डवेयर से जुड़ता है और आपको एक सिस्टम को अलग-अलग, distinct (विशिष्ट) और सिक्योर वातावरण में विभाजित करने की अनुमति देता है जिसे वर्चुअल मशीन (VMs) कहा जाता है, ये VMs हार्डवेयर से मशीन के संसाधनों को अलग करने और उन्हें सूटेबल रूप से डिस्ट्रिब्यूटेड करने की हाइपरविजर एबिलिटी पर भरोसा करते  हैं.
हाइपरविजर से लैस ओरिजिनल, फिजिकल मशीन को होस्ट कहा जाता है, जबकि कई VMs जो अपने रिसोर्सेज का उपयोग करते हैं उन्हें गेस्ट्स कहा जाता है. ये  गेस्ट्स कंप्यूटिंग रिसोर्सेज का इलाज करते हैं- जैसे CPU, मेमोरी, और स्टोरेज - रिसोर्सेज के एक हैंगर के रूप में जिन्हें आसानी से relocated किया जा सकता है. ऑपरेटर्स CPU, मेमोरी, स्टोरेज, और अन्य रिसोर्सेज के वर्चुअल उदाहरण को कंट्रोल्स कर सकते हैं ताकि गेस्ट्स को उनके लिए आवश्यक रिसोर्सेज को प्राप्त कर सके.

आदर्श रूप में, सभी संबंधित VMs एक वेब-आधारित वर्चुअलैजेशन मैनेजमेंट कंसोल के माध्यम से मैनेज होते है, जो चीजों को स्पीड देता है. वर्चुअलैजेशन आपको VMs को देने के लिए प्रोसेसिंग पॉवर, स्टोरेज और मेमोरी को डिक्टेट करने देता है, और वातावरण बेहतर प्रोटेक्टेड होते है क्योकि VMs को उनके सहायक हार्डवेयर और एक दुसरे से अलग किया जाता है.

industrial virtualization


सीधे शब्दों में कहे, वर्चुअलैजेशन उन Underused (अंतनिर्हित) हार्डवेयर और रिसोर्सेज को बनता है जिन्हें आपको अंडरवर्ड हार्डवेयर से चाहिए.

वर्चुअलैजेशन के प्रकार:
  1. डेटा वर्चुअलैजेशन : डेटा जो फैला हुआ है उसे एक सोर्स में कंसोलिडेटेड किया जा सकता है. डेटा वर्चुअलैजेशन कंपनियों को गतिशील आपूर्ति के रूप में डेटा का इलाज करने की अनुमति देता है- प्रोसेसिंग क्षमताओं को प्रदान करना जो कई सोर्सेज को समायोजित कर सकते है और यूजर्स आवश्यकताओं के अनुसार डेटा बदल सकते है. डेटा वर्चुअलैजेशन टूल कई डेटा सोर्सेज के रूप में एग्रीड जाने की अनुमति देते है. वे आवश्यक डेटा - आवश्यक रूप में - किसी भी एप्लीकेशन या यूजर्स के लिए सही टाइम पर डिस्ट्रिब्यूटेड करते है.
  2. डेस्कटॉप वर्चुअलैजेशन : ऑपरेटिंग सिस्टम वर्चुअलैजेशन के साथ आसानी से उलझन में - जो आपको एक ही मशीन पर मल्टीप्ल ऑपरेटिंग सिस्टम को तैनात करने की अनुमति देता है - डेस्कटॉप वर्चुअलैजेशन एक सेंट्रल एडमिनिस्ट्रेटर ( या ऑटोमेटेड एडमिनिस्ट्रेटर टूल ) को एक साथ सैकड़ो फिजिकल मशीनों पर सिमुलेटेड डेस्कटॉप वातावरण को देप्लोय करने की अनुमति देता है. ट्रेडिशनल डेस्कटॉप वातावरण के विपरीत जो प्रत्येक मशीन पर फिजिकल रूप से इन्सटाल्ड ( स्थापित), कॉन्फिगर, और अपडेट किए जाते है, डेस्कटॉप वर्चुअलैजेशन एडमिन को भी वर्चुअल डेस्कटॉप पर बड़े configurations, अपडेट और सिक्यूरिटी जाँच करने की अनुमति देता है.
  3. सर्वर वर्चुअलैजेशन : सर्वर कंप्यूटरों को स्पेसिफिक कार्यों की एक हाई वॉल्यूम को वास्तव में अच्छी तरह से प्रोसेस्ड करने के लिए डिज़ाइन किए गए है, इसलिए लैपटॉप और डेस्कटॉप जैसे अन्य कंप्यूटर - अन्य कई प्रकार के कार्य कर सकते हैं. किसी सर्वर को वर्चुअलाइज करना इसे उन स्पेसिफिक कार्यों में से अधिक करने देता है और इसमें पार्टिशनिंग करना शामिल है ताकि कंपोनेंट्स का उपयोग कई कार्यों को पूरा करने के लिए किया जा सके.
  4. ऑपरेटिंग सिस्टम वर्चुअलाइजेशन : ऑपरेटिंग सिस्टम वर्चुअलैजेशन कर्नेल पर होता है - ऑपरेटिंग सिस्टम के सेंट्रल टास्क मेनेजर. लिनक्स और विंडोज वातावरण को Side by Side चलाने के लिए यह एक उपयोगी तरीका है. एंटरप्राइज वर्चुअल ऑपरेटिंग सिस्टम को कंप्यूटर पर भी Push (धक्का) दे सकते है, जो: (1) थोक हार्डवेयर लागत को कम करता है, क्योकि कंप्यूटरों को ऐसी हाई आउट ऑफ द बॉक्स कैपबिलिटी (क्षमताओं) की आवश्यकता नहीं होती है, (2) सिक्यूरिटी बढ़ता है, क्योकि सभी वर्चुअल उदाहरण हो सकते हैं मोनीटोरेड और आइसोलेटेड और (3) सॉफ्टवेयर अपडेट जैसे IT सर्विस पर बताये गए टाइम.
  5. नेटवर्क फंक्शन वर्चुअलैजेशन :  नेटवर्क फंक्शन वर्चुअलैजेशन (NFV) नेटवर्क के प्रमुख कार्यों को अलग करता है (जैसे डायरेक्टरी सर्विसेज, फाइल शेयरिंग, और IP कॉन्फिगरेशन) ताकि उन्हें वातावरण के बीच डिस्ट्रिब्यूटेड किया जा सके. एक बार सॉफ्टवेयर फंक्शन उन फिजिकल मशीनों से इंडिपेंडेंट होते हैं जिन्हें वे एक बार रहते थे, स्पेसिफिक कार्यों को एक नए नेटवर्क में एक साथ पैक किया जा सकता है और पर्यावरण को सौंपा जा सकता है. वर्चुअलैजेशन नेटवर्क फिजिकल डिस्ट्रिब्यूटेड की नंबर को कम करता है - जैसे स्विचेस , राऊटर, सर्वर, केबल्स, और हब्स - जिन्हें मल्टीप्ल, इंडिपेंडेंट नेटवर्क बनाने के लिए आवश्यक है, और यह दुरसंचर इंडस्ट्री में विशेष रूप में पॉपुलर है.

8. डिस्ट्रिब्यूटेड फाइल सिस्टम 

एक डिस्ट्रिब्यूटेड फाइल सिस्टम एक क्लाइंट/सर्वर - बेस्ड एप्लीकेशन अनुप्रयोग है जो क्लाइंट को सर्वर पर स्टोर्ड डेटा तक प्रोसेस और एक्सेस करने की अनुमति डेटा है जैसे की यह अपने कंप्यूटर पर था. जब कोई यूजर पर फ़ाइल एक्सेस करता है, तो सर्वर यूजर को फाइल की एक कॉपी भेजता है, जिसे डेटा प्रोसेस्ड होने पर यूजर के कंप्यूटर पर कैश किया जाता है और फिर सर्वर पर वापस कर दिया जाता है.

आदर्श रूप से, एक डिस्ट्रिब्यूटेड फाइल सिस्टम वक्तिगत सर्वर की फाइल और डायरेक्टरी सर्विसेज को ग्लोबल डायरेक्टरी में इस तरह से व्यवस्थित करता है की रिमोट डेटा एक्सेस लोकेशन - स्पेसिफिक नहीं है लेकिन किसी भी क्लाइंट के समान है. सभी फाइलें ग्लोबल फाइल सिस्टम के सभी यूजर के लिए इजी है और आर्गेनाइजेशन श्रेणीबद्ध और डायरेक्टरी आधारित है.

Distributed File Systems


चूँकि एक से अधिक क्लाइंट एक ही डेटा को एक साथ एक्सेस कर सकते है, इसलिए सर्वर को अपडेट मैनेज्ड  करने के लिए एक मैकेनिज्म होना चाहिए (जैसे एक्सेस के टाइम के बारे में जानकारी बनाए रखना ) ताकि क्लाइंट को हमेशा डेटा का कर्रेंट वर्ज़न प्राप्त हो और डेटा कांफ्लिक्ट्स हो उठो मत डिस्ट्रिब्यूटेड फाइल सिस्टम एक्सेस विफलताओं के खिलाफ सुरक्षा के लिए आमतौर पर फाइल या डेटाबेस रेप्लिकेशन (मल्टीप्ल सेर्वेरों पर डेटा की कॉपी वितरित) का उपयोग करते हैं.

सन माइक्रोसिस्टम नेटवर्क फाइल सिस्टम (NFS), नोवेल नेटवेयर, माइक्रोसॉफ्ट की डिस्ट्रिब्यूटेड फाइल सिस्टम, और IBM's के DFS डिस्ट्रिब्यूटेड फाइल सिस्टम के कुछ उदाहरण है.

9. डिस्ट्रिब्यूटेड शेयर्ड मेमोरी 

डिस्ट्रिब्यूटेड शेयर्ड मेमोरी (DSM) एक डिस्ट्रिब्यूटेड ऑपरेटिंग सिस्टम का रिसोर्स मैनेजमेंट कॉम्पोनेन्ट है जो डिस्ट्रिब्यूटेड सिस्टम में शेयर मेमोरी मॉडल लागु करता है, जिसमे शारीरिक रूप से शेयर्ड मेमोरी नहीं होती है. शेयर्ड मेमोरी एक वर्चुअल एड्रेस स्पेस प्रदान करती है जिसे डिस्ट्रिब्यूटेड सिस्टम में सभी कंप्यूटर्स के बिच शेयर्ड किया जाता है.


Distributed Shared Memory


DSM में, डेटा को वर्चुअल मेमोरी एक्सेस करने के तरीके के समान शेयर्ड स्पेस से एक्सेस किया जाता है. सेकेंडरी और मैंन मेमोरी के साथ-साथ, विभिन्न नोड्स की डिस्ट्रिब्यूटेड मुख्य यादों के बिच डेटा चलता है. मेमोरी में पेज की ओनरशिप प्रे-डिफाइंड स्टेट में शुरु होती है लेकिन नार्मल ऑपरेशन के दौरान परिवर्तन होता है. किसी विशेष प्रोसेस के उपयोग के कारण डेटा एक नोड से दुसरे प्लेस पर जाने पर ओनरशिप में मूव होता है.

डिस्ट्रिब्यूटेड शेयर्ड मेमोरी के लाभ :
  • डेटा मूवमेंट हाईड और डेटा शेयर्ड करने के लिए एक सरल abstraction (अमूर्त ) प्रोवाइड करें. प्रोग्रामर को  मैसेज पास करने वाले मॉडल का उपयोग करते समय मशीनों के बिच मेमोरी ट्रान्सफर के बारे में चिंता करने की आवश्यकता नहीं है.
  • डिस्ट्रिब्यूटेड एप्लीकेशन के लिए अल्गोरिथम डेवलपमेंट को सरल बनाने, रिफरेन्स द्वारा काम्प्लेक्स स्ट्रक्चर को पासिंग करने की अनुमति देता है.
  • डेटा के टुकड़े की बजाय रिफरेन्स डेटा वाले पुरे पेज को मूव करके "लोकेलिटी की रिफरेन्स" का लाभ उठाता है. 
  • मल्टीप्रोसेसर सिस्टम के तुलना में बिल्ड करने के लिए सस्ता. सामान्य हार्डवेयर का उपयोग करके आइडियाज का Implemented (कार्यान्वित) किया जा सकता है और प्रोसेसर को शेयर मेमोरी को जोड़ने के लिए कुछ काम्प्लेक्स की आवश्यकता नहीं होती है.
  • सभी नोड्स की सभी फिजिकल मेमोरी को जोड़कर, बड़े मेमोरी साइज़ प्रोग्राम के लिए अवेलेबल है. ट्रेडिशनल डिस्ट्रिब्यूटेड सिस्टम्स की तरह स्वैपिंग के कारण या बड़े मेमोरी डिस्क लेटेंसी नहीं लेगी.
  • नोड्स की अनलिमिटेड नंबर का उपयोग किया जा सकता है. मल्टीप्रोसेसर सिस्टम के विपरीत जहां एक सामान्य बस के माध्यम से मैंन मेमोरी का उपयोग किया जाता है, इस प्रकार मल्टीप्रोसेसर सिस्टम के साइज़ को सिमित करता है.
  • शेयर्ड मेमोरी मल्टीप्रोसेसर के लिए लिखे गए प्रोग्राम DSM सिस्टम पर चलाये जा सकते हैं. 
दो अलग-अलग तरीके हैं जिनसे नोड्स को सूचित किया जा सकता है की कौन सा पेज है: अमान्यता और ब्रॉडकास्ट. अमान्यता एक ऐसी विधि है जो किसी पेज को अमान्य करती है जब कुछ प्रोसेस उस पेज तक write करने के लिए कहती है और उसका नया मालिक बन जाती है. इस तरह अगली बार जब कोई अन्य प्रोसेस उस पेज की एक कॉपी को read या write का प्रयास करती है, जिसे उसने सोचा था, तो पेज अवेलेबल नहीं होगा और प्रोसेस को उस पेज तक पहुंच का पुनः रिक्वेस्ट करना होगा. जब कोई प्रोसेस write करता है तो ब्राडकास्टिंग ऑटोमेटिकली रूप से मेमोरी पेज की सभी पेजेज को अपडेट कर देगा. इसे write-update भी कहा जाता है. यह मेथड लागु करने के लिए बहुत कम स्किल्ड (कुशल) है क्योकि अमान्यता मैसेज के बजाय एक नया वैल्यू भेजा जाना है.

10. क्लाउड कंप्यूटिंग 

अधिक से अधिक, हम क्लाउड पर जाने वाली टेक्नोलॉजी देख रहे हैं. यह सिर्फ एक तरंग नहीं है - ट्रेडिशनल सॉफ्टवेयर मॉडल से इन्टरनेट पर बदलाव ने पीछे 10 वर्षो में तेजी से गति प्राप्त की है. आगे देखकर, क्लाउड कंप्यूटिंग के अगले दशक में मोबाइल डिवाइस के माध्यम से हर जगह सहयोग करने के नए तरीकों का वादा किया गया है.

तो क्लाउड कंप्यूटिंग क्या है? अनिवार्य रूप से, क्लाउड कंप्यूटिंग कंप्यूटर प्रोग्रामों का आउटसोर्सिंग का एक प्रकार है. क्लाउड कंप्यूटिंग का उपयोग करते हुए, यूजर "क्लाउड" में बाहरी पार्टी द्वारा होस्ट किए जाने पर सॉफ्टवेयर और एप्लीकेशन तक पहुंचने में सक्षम होते हैं. इसका मतलब है की उन्हें स्टोरेज और पॉवर जैसे चीजों के बारे में चिंता करने की जरुरत नहीं है, वे बस अंतिम परिणाम का आनंद ले सकते हैं.

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


 Cloud Computing

क्लाउड कंप्यूटिंग के साथ, आप उन सिरदर्द को खत्म करते हैं जो आपके डेटा को स्टोर करने के साथ आते है, क्योकिं आप हार्डवेयर और सॉफ्टवेयर का मैनेजिंग नहीं कर रहे हैं - जो सेल्सफोर्स और AWS जैसे अनुभवी विक्रेता की जिम्मेदारी बन जाती है. शेयर इन्फ्रास्ट्रक्चर सरंचना का अर्थ है की यह यूटिलिटी की तरह काम करता है: आप केवल वाही भुगतान करते हैं जो आपको चाहिए, अपग्रेड आटोमेटिक हैं. और उपर या निचे स्केल करना आसान है. 

क्लाउड-आधारित ऐप्स दिन या सप्ताह में चल सकते है और चला सकते हैं, और उनकी लागत कम होती है. क्लाउड ऐप के साथ, आप बस एक ब्राउज़र ओपन करें, और उसे लॉग इन करें, ऐप को कस्टमाइज करें और इसका उपयोग शुरू करें, क्लाउड बिज़नेस में सभी प्रकार के ऐप्स चला रहे हैं, जैसे कस्टमर रिलेशनशिप मैनेजमेंट (CRM), HR, एकाउंटिंग, और भी बहुत कुछ.

क्लाउड कंप्यूटिंग पॉपुलैरिटी में बढ़ती जा रही है, इसलिए हजारों कंपनियां अपने क्लाउड प्रोडक्ट और सर्विस को "क्लाउड कंप्यूटिंग" के रूप में पुनः ब्रांड कर रही हैं. cloud offerings का मूल्यांकन करते समय हमेशा गहरी dig (खुदाई) करें. और ध्यान रखें की यदि आपको हार्डवेयर और सॉफ्टवेयर खरदीने और मैनेज करना है, तो क्या आप वास्तव में क्लाउड कंप्यूटिंग नहीं बल्कि एक false (झुटा) क्लाउड देख रहे हैं.

आखरी शब्द 

ऑपरेटिंग सिस्टम एक "मस्तिष्क" है जो इनपुट, प्रोसेसिंग और आउटपुट को मैनेज करता है, अन्य सभी डिसिप्लिन्स ऑपरेटिंग सिस्टम के साथ बातचीत करते हैं. ऑपरेटिंग सिस्टम कैसे काम करता है इसकी समझ में मूल्यवान अंतदृष्टी प्रदान करेगी की अन्य टॉपिक्स कैसे काम करते हैं, क्योकि उन डिसिप्लिन्स के साथ आपकी बातचीत ऑपरेटिंग सिस्टम द्वारा मैनेज्ड की जाती है. 

To Top