मैं जानना चाहूंगा कि OS कैसे संक्षेप में काम करता है :
- बुनियादी घटकों पर बनाया गया है
- वे घटक एक साथ कैसे काम करते हैं
- क्या यूनिक्स यूनिक्स बनाता है
- क्या यह विंडोज जैसे अन्य ओएस से अलग है
मैं जानना चाहूंगा कि OS कैसे संक्षेप में काम करता है :
जवाबों:
UNIX प्रणाली में कई भाग, या परतें होती हैं जैसा कि मैं उन्हें कॉल करना चाहूंगा।
एक प्रणाली शुरू करने के लिए, बूट लोडर नामक एक प्रोग्राम हार्ड डिस्क विभाजन के पहले सेक्टर में रहता है। यह सिस्टम द्वारा शुरू किया गया है, और बदले में यह ऑपरेटिंग सिस्टम कर्नेल का पता लगाता है, और इसे लोड करता है।
लेयरिंग
द कर्नेल। यह केंद्रीय कार्यक्रम है जो बूट लोडर द्वारा शुरू किया गया है। यह सिस्टम (डिस्क, मेमोरी, वीडियो, साउंड) के लिए बुनियादी हार्डवेयर इंटरैक्शन करता है और एक वर्चुअल वातावरण प्रदान करता है जिसमें यह प्रोग्राम शुरू कर सकता है। कर्नेल उन सभी ड्राइवरों को भी जहाज करता है जो हार्डवेयर उपकरणों के बीच सभी छोटे अंतरों से निपटते हैं। बाहरी दुनिया (उच्चतर परतों) के लिए, उपकरणों के प्रत्येक वर्ग को उसी अनुरूप तरीके से व्यवहार करना दिखाई देता है - जो बदले में, कार्यक्रमों का निर्माण कर सकता है।
बैकग्राउंड सबसिस्टम। बस नियमित कार्यक्रम हैं, जो सिर्फ आपके रास्ते से बाहर रहते हैं। वे रिमोट लॉगिन जैसी चीजों को संभालते हैं, एक केन्द्रित संदेश बस प्रदान करते हैं, और हार्डवेयर / नेटवर्क घटनाओं के आधार पर कार्य करते हैं। उदाहरण के लिए, ब्लूटूथ खोज, वाईफाई प्रबंधन, आदि। कोई भी नेटवर्क सेवाएं (फ़ाइल सर्वर, प्रिंट सर्वर, वेब सर्वर) भी इस स्तर पर रहती हैं। UNIX प्रणालियों में, ये सभी केवल सामान्य कार्यक्रम हैं।
कमांड लाइन उपकरण। ये सभी छोटे प्रोग्राम हैं जिन्हें टेक्स्ट एडिटिंग, फाइल्स डाउनलोड करने या सिस्टम को मैनेज करने जैसे कामों के लिए शुरू किया जा सकता है। इस बिंदु पर, UNIX प्रणाली सिस्टम प्रशासक के लिए पूरी तरह से प्रयोग करने योग्य है। विंडोज में, यह परत वास्तव में अब मौजूद नहीं है।
ग्राफिकल यूजर इंटरफेस। ये भी केवल कार्यक्रम हैं, फर्क सिर्फ इतना है कि वे पाठ लिखने के बजाय स्क्रीन पर खिड़कियां खींचते हैं। यह सिस्टम को नियमित उपयोगकर्ताओं के लिए उपयोग करना आसान बनाता है।
कोई भी सेवा या कार्यक्रम नीचे से ऊपर तक जाएगा।
पुस्तकालय - सामान्य मंच
प्रोग्राम बहुत सी सामान्य चीजें करते हैं जैसे खिड़की दिखाना, स्क्रीन पर सामान खींचना या फाइल डाउनलोड करना। ये चीजें कई कार्यक्रमों के लिए समान हैं, इसलिए उस कोड को अलग-अलग "लाइब्रेरी" फाइलों ( .so
फाइलों - अर्थ साझा वस्तु) में डाल दिया जाता है । पुस्तकालय को सभी कार्यक्रमों में साझा किया जा सकता है।
हर कल्पनीय चीज के लिए, एक पुस्तकालय है। PNG फ़ाइलों को पढ़ने / लिखने के लिए एक है। JPEG फ़ाइलों के लिए एक है, XML पढ़ने के लिए, एन्क्रिप्शन के लिए, वीडियो प्लेबैक के लिए, और इसी तरह।
लिनक्स पर, एप्लिकेशन डेवलपर्स के लिए सामान्य पुस्तकालय क्यूटी और जीटीके हैं। इन पुस्तकालयों में निचले स्तर के पुस्तकालयों का उपयोग उनकी विशिष्ट आवश्यकताओं के लिए आंतरिक रूप से किया जाता है, जबकि एप्लिकेशन डेवलपर्स के लिए एक अच्छा सुसंगत और संक्षिप्त तरीके से अपनी कार्यक्षमता को उजागर करते हुए अनुप्रयोगों को और भी तेज बनाने के लिए।
लाइब्रेरी एप्लिकेशन प्लेटफ़ॉर्म प्रदान करती है, जिस पर प्रोग्रामर एक ऑपरेटिंग सिस्टम के लिए अंतिम उपयोगकर्ता एप्लिकेशन का निर्माण कर सकते हैं। अधिक उच्च गुणवत्ता वाली लाइब्रेरी जो एक सिस्टम प्रदान करती है, एक सुंदर प्रोग्राम बनाने के लिए एक प्रोग्रामर को कम कोड लिखना पड़ता है।
कुछ पुस्तकालयों का उपयोग विभिन्न ऑपरेटिंग सिस्टमों में किया जा सकता है (उदाहरण के लिए, क्यूटी है), कुछ वास्तव में विशेष रूप से एक ऑपरेटिंग सिस्टम में बंधे हैं। यह आपके प्रोग्राम को केवल उस प्लेटफॉर्म पर चलाने में सक्षम होने के लिए प्रतिबंधित करेगा।
अंतःप्रक्रम संचार
एक ऑपरेटिंग सिस्टम का एक तीसरा कोना टुकड़ा है, जिस तरह से प्रोग्राम एक दूसरे के साथ संवाद कर सकते हैं। ये इंटर प्रोसेस कम्यूनिकेशन (IPC) माचनिज्म हैं। ये कई स्वादों में मौजूद हैं, जैसे साझा मेमोरी का एक टुकड़ा, या डेटा का आदान-प्रदान करने के लिए दो कार्यक्रमों के बीच एक छोटा चैनल स्थापित किया गया है। एक केंद्रीय संदेश बस भी है जिस पर प्रत्येक कार्यक्रम एक संदेश पोस्ट कर सकता है, और एक प्रतिक्रिया प्राप्त कर सकता है। यह वैश्विक संचार के लिए उपयोग किया जाता है, जहां यह अज्ञात है कि कौन सा कार्यक्रम प्रतिक्रिया दे सकता है।
लाइब्रेरी से लेकर ऑपरेटिंग सिस्टम तक
पुस्तकालयों, आईपीसी और जगह में गिरी के साथ, प्रोग्रामर सिस्टम सेवाओं, उपयोगकर्ता प्रशासन, कॉन्फ़िगरेशन, प्रशासन, कार्यालय कार्य, मनोरंजन, आदि के लिए सभी प्रकार के अनुप्रयोगों का निर्माण कर सकते हैं। यह संपूर्ण सूट बनाता है जिसे नौसिखिए उपयोगकर्ता "ऑपरेटिंग सिस्टम" के रूप में पहचानते हैं। "।
UNIX / Linux सिस्टम में, सभी सेवाएँ सिर्फ प्रोग्राम हैं। सभी सिस्टम एडमिन टूल सिर्फ प्रोग्राम हैं। वे सभी अपना काम करते हैं, और उन्हें एक साथ जंजीर बनाया जा सकता है। मैंने http://codStreetain.com/linux/sysadmin/ पर कई बड़े कार्यक्रमों को संक्षेप में प्रस्तुत किया है
विंडोज के साथ विशिष्ट भागों
UNIX मुख्य रूप से कार्यक्रमों, फाइलों और प्रतिबंधित अनुमतियों की एक प्रणाली है। बहुत सी जटिलताओं से बचा जाता है, जिससे यह एक शक्तिशाली प्रणाली बन जाती है जबकि ऐसा लगता है कि यह एक आसान काम है।
विस्तार से, ये ऐसे सिद्धांत हैं जो UNIX / Linux सिस्टम में पाए जा सकते हैं:
जानकारी तक पहुंचने के लिए समान तरीके हैं। ("सब कुछ सिर्फ एक फ़ाइल है")। आप एक फ़ाइल, नेटवर्क सॉकेट, आईपीसी चैनल, कर्नेल पैरामीटर और ब्लॉक डिवाइस को एक फ़ाइल के रूप में खोल सकते हैं। इसलिए / / dev, / sys और / proc में आभासी फाइल सिस्टम की उपस्थिति। एकमात्र एपीआई जिसकी आपको कभी आवश्यकता होती है open
, read
और close
।
अंतर्निहित प्रणाली पारदर्शी है। प्रत्येक कार्यक्रम समान नियमों के तहत संचालित होता है। विंडोज के विपरीत, "कंसोल प्रोग्राम", "गिनी प्रोग्राम" या "बैकग्राउंड सर्विस" के बीच कोई कृत्रिम अंतर नहीं है। वे सभी केवल कार्यक्रम हैं, जो अलग-अलग चीजें करने के लिए होते हैं। वे सभी एक ही तरीके से देखे, विश्लेषण और डिबग किए जा सकते हैं।
सेटिंग्स पठनीय, संपादन योग्य हैं, और टिप्पणियों के साथ एनोटेट किया जा सकता है। उनके पास आमतौर पर एक INI- शैली प्रारूप होता है, लेकिन उस एप्लिकेशन की आवश्यकताओं के लिए एक कस्टम प्रारूप का उपयोग कर सकते हैं। क्योंकि वे केवल फाइलें हैं, उन्हें अन्य प्रणालियों में कॉपी किया जा सकता है, संग्रहीत किया जा सकता है या मानक टूल के साथ बैकअप किया जा सकता है।
कोई बड़ा "यह सब एक बार करें" अनुप्रयोगों में। मंत्र है "एक काम करो, इसे अच्छे से करो"। कमांड लाइन उपकरण जंजीर और एक साथ शक्तिशाली हो सकते हैं। अलग-अलग सेवाएं (जैसे एसएमटीपी, आईएमएपी और पीओपी और लॉगिन) अलग-अलग उपप्रोग्राम हैं, जटिल इंटरवेट कोड और सुरक्षा मुद्दों से बचते हैं। जटिल डेस्कटॉप वातावरण व्यक्तिगत कार्यक्रमों के लिए कड़ी मेहनत को सौंपते हैं।
fork()
। मौजूदा प्रोग्राम क्लोनिंग द्वारा ही नए प्रोग्राम शुरू किए जाते हैं। क्लोन सब कुछ सेट करता है (जैसे फ़ाइल हैंडल), और वैकल्पिक रूप से नए प्रोग्राम कोड के साथ खुद को बदलता है। इससे नए कार्यक्रमों में समान सुरक्षा सेटिंग्स और प्रतिबंध लागू करना, मेमोरी साझा करना या IPC मैकेनिज्म सेटअप करना वास्तव में आसान हो जाता है। एक प्रक्रिया शुरू करने की लागत भी बहुत कम है।
फाइल सिस्टम एक पेड़ है, जिसमें अन्य डिस्क विभाजन और नेटवर्क शेयर माउंट किए जा सकते हैं। डेटा तक पहुंचने का एक सार्वभौमिक तरीका फिर से है। सामान्य सिस्टम स्थान (जैसे /usr
नेटवर्क साझा के रूप में आसानी से माउंट किए जा सकते हैं)।
सिस्टम कम उपयोगकर्ता विशेषाधिकारों के लिए बनाया गया है। लॉगिन के बाद, प्रत्येक उपयोगकर्ता (रूट को छोड़कर) अपने स्वयं के संसाधनों, केवल एप्लिकेशन और फ़ाइलों को चलाने तक ही सीमित है। नेटवर्क सेवाएं अपने विशेषाधिकार को जल्द से जल्द कम कर देती हैं। अधिक विशेषाधिकार प्राप्त करने के लिए एक ही स्पष्ट तरीका है, या किसी को अपनी ओर से विशेषाधिकार प्राप्त नौकरी निष्पादित करने के लिए कहें। प्रत्येक अन्य कॉल कार्यक्रम के प्रतिबंधों और सीमाओं द्वारा सीमित है।
प्रत्येक प्रोग्राम उपयोगकर्ता होम डायरेक्टरी की एक छिपी हुई फ़ाइल / फ़ोल्डर में सेटिंग्स संग्रहीत करता है। कोई भी प्रोग्राम कभी भी वैश्विक सेटिंग फ़ाइल लिखने का प्रयास नहीं करता है।
गुप्त तंत्र या विशिष्ट 1-टू -1 तंत्र पर खुले तौर पर वर्णित संचार तंत्र के प्रति एक एहसान। अन्य विक्रेताओं और सॉफ्टवेयर डेवलपर्स को एक ही विनिर्देश का पालन करने के लिए प्रोत्साहित किया जाता है, इसलिए चीजें आसानी से जुड़ी हो सकती हैं, अदला-बदली की जा सकती हैं और फिर भी शिथिल युग्मित रह सकती हैं।
यूनिक्स एक मजबूत ओएस है, एक ध्वनि डिजाइन पर निर्माण होता है जो 40 से अधिक वर्षों से सफल साबित हुआ है (यह कंप्यूटर विज्ञान में लगभग अनंत काल तक है)। केंद्रीय प्रौद्योगिकी C भाषा और छोटे कार्यक्रमों के असंख्य पर आधारित है: UNIX आदेश। बेसिक दर्शन को मैकलॉयर द्वारा संक्षेपित किया गया है:
ऐसे कार्यक्रम लिखें जो एक काम करते हैं और इसे अच्छी तरह से करते हैं। एक साथ काम करने के लिए कार्यक्रम लिखें। पाठ धाराओं को संभालने के लिए प्रोग्राम लिखें, क्योंकि यह एक सार्वभौमिक इंटरफ़ेस है।
UNIX दर्शन पर अधिक ESRaymond "UNIX प्रोग्रामिंग की कला" में पाया जा सकता है।
यहाँ कुछ उत्कृष्ट उत्तर हैं। हालाँकि, मुझे लगता है कि एक चीज छोड़ दी गई है कि कैसे * nix अन्य ऑपरेटिंग सिस्टम, विशेषकर Microsoft विंडोज से अलग है।
पहले से ही कवर की गई मौलिक अवधारणा "एक काम करो, इसे अच्छे से करो" इतना केंद्रीय * निक्स ऑपरेटिंग सिस्टम है कि इसे कभी-कभी अनदेखा किया जा सकता है। फिर भी यह यह डिज़ाइन दर्शन है जो लिनक्स को इतना लचीला और शक्तिशाली बनाता है।
उदाहरण के लिए, एमएस विंडोज के लिए ग्राफिक्स यूजर इंटरफेस (जीयूआई) ओएस में इंटरवेट किया गया है। जीयूआई के बिना एमएस ऑपरेटिंग सिस्टम को स्थापित करना लगभग असंभव है। लिनक्स में, आप आसानी से एक सर्वर या एम्बेडेड सिस्टम ला सकते हैं जिसमें कोई ग्राफिक घटक नहीं है। यह पूरी तरह से कमांड लाइन संचालित हो सकता है और अभी भी एक पूर्ण विशेषताओं वाला सर्वर हो सकता है।
लिनक्स का मॉड्यूलर डिजाइन भी एक सिस्टम व्यवस्थापक को एक सेवा को नीचे लाने, इसे उन्नत करने और ऑपरेटिंग सिस्टम को रिबूट किए बिना इसे वापस लाने की अनुमति देता है। वास्तव में केवल उस समय के बारे में जब आपको लिनक्स ऑपरेटिंग सिस्टम को रिबूट करना होगा, जब कर्नेल को संशोधित या अपग्रेड किया जा रहा हो।
उदाहरण के लिए, आप लिनक्स पर एक नया विंडोज़ प्रबंधक (सूक्ति, केडी, जो भी) स्थापित कर सकते हैं और वर्तमान में सिस्टम में लॉग इन किया हुआ उपयोगकर्ता कभी भी जागरूक नहीं हो सकता है।
विंडोज पर, अक्सर सिस्टम में सबसे सरल बदलाव के लिए रिबूट की आवश्यकता होती है, हालांकि कभी-कभी यह वास्तविक तकनीकी आवश्यकता से अधिक सुरक्षा का मुद्दा होता है। मैं प्रस्तुत करूंगा कि यह एमएस ऑपरेटिंग सिस्टम की बुनियादी खामियों में से एक है। लिनक्स पर आप कई ड्राइवर मॉड्यूल को अपग्रेड कर सकते हैं और उपयोगकर्ताओं पर बहुत कम प्रभाव डाल सकते हैं। यदि आप केवल एक नया एप्लिकेशन इंस्टॉल करते हैं तो विंडोज पर आपको पूरे बॉक्स को रिबूट करना पड़ सकता है।
यह मॉड्यूलर डिज़ाइन लिनक्स को असाधारण लचीलापन भी देता है। प्रत्येक लिनक्स सिस्टम को उस विशिष्ट कार्य के लिए अनुकूलित किया जा सकता है जिसे आपको पूरा करने की आवश्यकता है, जितना संभव हो उतना कम संसाधन ओवरहेड। Windows के साथ आप एक साधारण HTTP सर्वर को चलाने के लिए GUI इंटरफ़ेस को बंद नहीं कर सकते। एक स्मृति पदचिह्न है जो Windows मानता है जो एक बाधा बनाता है जिसके नीचे आपका हार्डवेयर नहीं जा सकता है। यह एक प्राथमिक कारण है कि लिनक्स कई मोबाइल और एम्बेडेड अनुप्रयोगों के लिए ओएस का विकल्प बन गया है।
मैं आगे और आगे बढ़ सकता था, लेकिन मुझे आशा है कि ये उदाहरण यह बताने में मदद करते हैं कि लिनक्स क्यों इतना लोकप्रिय हो गया है, और यह वास्तव में उस दूसरे ओएस से कैसे भिन्न है।
"यूनिक्स ऑपरेटिंग सिस्टम का डिज़ाइन" पढ़ने के लिए अच्छी पुस्तक होगी।
मैं सिंगल यूनिक्स स्टैंडर्ड (SUS) API और POSIX के बारे में बहुत कुछ जानने के लिए एक Unix Environment 2e में एडवांस प्रोग्रामिंग पढ़ने की सलाह दूंगा, जो आपको इस बारे में एक विचार देगा कि यूनिक्स यूनिक्स और कंपोनेंट्स कैसे काम करते हैं, और एक साथ कैसे काम करते हैं।
हालाँकि, यह बहुत ही भारी पुस्तक है और संदर्भ पुस्तिका की अधिक है। यदि आपको अनिद्रा की समस्या है तो इसे अपने साथ बिस्तर पर ले जाएं। यदि आप एक यूनिक्स सी प्रोग्रामर हैं तो यह एक तरफ होना चाहिए।
पिछली दो पुस्तक सिफारिशों की भावना में मैं भी सिफारिश करूंगा
द लाइनक्स प्रोग्रामिंग इंटरफेस एम। केरिस्क द्वारा
जो, यूनिक्स / लिनक्स सिस्टम प्रोग्रामिंग के विषय को लक्षित करते हुए, इस बारे में विस्तृत जानकारी के टन का खुलासा करता है कि प्रोग्रामर / उपयोगकर्ता के दृष्टिकोण से लिनक्स और अधिक सामान्यतः यूनिक्स सिस्टम कैसे काम करते हैं। यह vdboor के उत्तर में उल्लिखित अधिकांश गोलियों में बहुत विस्तार से है और मौलिक UNIX अवधारणाओं और उनके आधारों की एक तस्वीर / तस्वीर प्राप्त करने के लिए समझने योग्य और पठनीय तरीके से पर्याप्त विवरण प्रकट करता है।