ऑपरेटिंग सिस्टम उसी चिप पर कैसे चल सकता है जिसे वह प्रबंधित करना चाहता है?


17

ऑपरेटिंग सिस्टम के बारे में मेरी रीडिंग (विकिपीडिया, तकनीकी साइटों आदि पर मूल सामग्री को पढ़ने) से मैंने सीखा है कि ऑपरेटिंग सिस्टम एक ऐसा प्रोग्राम है जो प्रोग्राम और एप्लिकेशन को एक कुशल और सुरक्षित तरीके से हार्डवेयर के साथ बातचीत करने की अनुमति देता है।

हालाँकि, मैं इस बारे में उलझन में हूँ कि ऑपरेटिंग सिस्टम कंप्यूटर के संचालन की देखरेख कैसे करता है जब इसे स्वयं संचालित करने की आवश्यकता होती है।

मेरा क्या मतलब है? ठीक है, जिस तरह से मैं काम करने के लिए एक ऑपरेटिंग सिस्टम की कल्पना करता हूं, वह यह है कि कंप्यूटर पर, दो सीपीयू होंगे। एक जो हर समय ओएस चलाता है, और दूसरा वह जो ओएस का उपयोग कंप्यूटर को चलाने के लिए करता है। हालांकि, यह पता चला है कि ओएस उसी सीपीयू पर चल रहा है जो अन्य प्रक्रियाएं हैं। यह एक प्रबंधक के समान है जो अपने कर्मचारियों के समान उत्पादन लाइन पर काम करता है, और केवल बिजली उपकरणों का उपयोग करने के लिए मिलता है जब एक अन्य कर्मचारी उनके साथ किया जाता है। वह बहुत प्रभावी प्रबंधक नहीं होगा, क्योंकि उसके पास आदेश जारी करने की क्षमता नहीं होगी यदि उसका कर्मचारी थोड़ा भी अनुशासनहीन हो।

तो यह कैसे हो सकता है कि ओएस केवल उसी सीपीयू पर समय का हिस्सा चलता है जिसे अन्य सभी प्रक्रियाओं के बीच साझा करना पड़ता है? यह आखिर कैसे काम करता है?


1
एक प्रबंधक को अपने कर्मचारियों के बिजली उपकरणों का उपयोग नहीं करना चाहिए! इसके बजाय, उसे यह सुनिश्चित करना होगा कि कर्मचारियों के पास काम करने वाले बिजली उपकरण हों।
MSalters

जवाबों:


15

आधुनिक सीपीयू एक निश्चित डिग्री तक ओएस के बारे में जानते हैं। वे पहले "दावा करने वाले" के लिए कुछ "बिजली उपकरण" प्रदान करते हैं। आमतौर पर यह बूट लोडर है, जो तब OS को नियंत्रित करता है। एक आमतौर पर "कर्नेल मोड" बनाम "उपयोगकर्ता मोड" या "रिंग 0" बनाम "रिंग 3" की बात करता है ताकि अतिरिक्त विशेषाधिकारों और बाकी के साथ एक प्रक्रिया के बीच अंतर किया जा सके।

ये "पावर टूल्स" संसाधन प्रबंधन के लिए कुछ विशेषाधिकार हैं: मेमोरी को नियंत्रित करें, हार्डवेयर तक पहुंच और उपयोगकर्ता के लंबे समय तक कोड को बिना किसी बाधा के निष्पादित किया जा सकता है।

निम्नलिखित घटनाओं में से एक होने पर CPU अपने विशेष विशेषाधिकार के साथ OS को निष्पादित करता है:

  1. उपयोगकर्ता मोड प्रक्रिया स्पष्ट रूप से कर्नेल मोड प्रक्रिया पर नियंत्रण सौंपती है। इसे सीस्कॉल कहा जाता है ।
  2. कर्नेल मोड प्रक्रिया कुछ विशेष घटनाओं के लिए पंजीकरण करने के लिए अपने विशेष विशेषाधिकारों का उपयोग कर सकती है (जैसे बाहरी हार्डवेयर सीपीयू को एक विशेष संकेत भेजता है या उपयोगकर्ता अंतरिक्ष प्रक्रिया आरक्षित संसाधन तक पहुंचने की कोशिश करता है)। जब ऐसा होता है, तो सीपीयू उपयोगकर्ता मोड प्रक्रिया को तुरंत रोक देता है और कर्नेल मोड प्रक्रिया को नियंत्रित करता है। आमतौर पर एक बाधा से बोलता है ।

तो ओएस उसी चिप पर चल सकता है क्योंकि चिप इसके लिए बनाई गई है। यह अपने लिए विशेष विशेषाधिकार आरक्षित कर सकता है। सीपीयू इन विशेष विशेषाधिकारों के बिना किसी भी समय कोड के अन्य सभी टुकड़ों को बाधित कर सकता है और ओएस पर नियंत्रण सौंप सकता है।

बहुत सीमित समर्थन वाले कुछ चिप्स (जैसे एक माइक्रोकंट्रोलर ) के पास विशेष विशेषाधिकार प्राप्त कोड के लिए यह समर्थन नहीं है। ये चिप्स आमतौर पर बिना OS के चलते हैं। केवल एक बड़ा कार्यक्रम चल रहा है, जो सीधे हार्डवेयर तक पहुंच सकता है, हार्डवेयर को बाधित करना चाहिए और किसी भी संसाधन तक कभी भी पहुंच सकता है। यदि वह प्रोग्राम एक गलती करता है, तो आमतौर पर पूरी चीज क्रैश हो जाती है।


17

अपने सबसे आदिम रूप में, ऑपरेटिंग सिस्टम अच्छी तरह से व्यवहार किए जाने वाली प्रक्रियाओं पर भरोसा करते हैं और समय-समय पर ऑपरेटिंग सिस्टम को वापस सौंपते हैं। यदि कोई प्रक्रिया अच्छी तरह से व्यवहार नहीं की जाती है, तो वास्तव में ऐसा हो सकता है कि ऑपरेटिंग सिस्टम जमा देता है।

हालांकि अधिकांश सीपीयू में रुकावट होती है : एक व्यवधान वर्तमान प्रक्रिया (प्रीमेशन) को रोक देता है और हाथ वापस ऑपरेटिंग सिस्टम पर नियंत्रण कर लेते हैं। आप विशिष्ट अंतराल पर होने वाले व्यवधानों को शेड्यूल कर सकते हैं, या बाहरी रूप से ट्रिगर किया जा सकता है (उदाहरण के लिए रीसेट बटन को धक्का देना)।

असल में, सीपीयू ओएस को चलाने और धमाकेदार तेज गति से चलने वाली प्रक्रियाओं के बीच आगे-पीछे होता है। इसके अलावा, सीपीयू के "उपयोगकर्ता मोड" और "कर्नेल मोड" हैं। उपयोगकर्ता मोड में प्रक्रियाएं चलती हैं और OS कर्नेल मोड में चलता है। उपयोगकर्ता मोड में रनिंग एक प्रक्रिया को प्रतिबंधित कमांड (जैसे IO) को निष्पादित करने से रोकता है। यदि कोई प्रक्रिया डिस्क पर लिखना चाहती है, तो उसे ऐसा करने के लिए ओएस से पूछना होगा। ओएस कर्नेल मोड में स्विच करता है और प्रक्रिया की ओर से लिखता है (यह सुनिश्चित करने के बाद कि प्रक्रिया में आवश्यक अनुमतियाँ हैं)।


7
@ सच में नहीं, सीपीयू के लिए ओएस बस कोड का एक और बिट है। हालांकि, सीपीयू में कई विशेषताएं हैं जो एक ओएस के रचनाकारों द्वारा उपयोग के लिए डिज़ाइन की गई हैं।
टॉम वैन डेर ज़ैंडन

3
मुझे नहीं पता कि "जागरूक" सही शब्दावली है, लेकिन सीपीयू के पास ओएस चलाने के अलावा मौजूद होने का कोई कारण नहीं है। यह निश्चित रूप से पूरी तरह से स्वतंत्र नहीं है। वास्तव में, सीपीयू अपने विभिन्न तरीकों को प्रबंधित करने के लिए पूरी तरह से ओएस पर निर्भर है और अन्यथा इसे बताएं कि क्या करना है।
मोहरी

2
@ उमर ऐसे कई माइक्रोकंट्रोलर हैं जो बिना ओएस के चलते हैं, क्या वे सीपीयू के रूप में गिने जाते हैं?
टॉम वैन डेर ज़ैंडन

2
"क्या वे सीपीयू के रूप में गिनते हैं?" बेशक वे करते हैं। तो मेरे पहले कंप्यूटर में 6502 था, भले ही इसके पास अलग-अलग उपयोगकर्ता और कर्नेल रिंग नहीं थे, और आप pokeकमांड-लाइन से सभी प्रकार के शरारतों को काम कर सकते थे।
dmckee --- पूर्व-मध्यस्थ ने

2
@TomvanderZanden वास्तव में कैसे करता है the CPU switches back and forth between running the OS and running processes? क्या ट्रिगर चालू करता है?
jnovacho

1

माइक्रोप्रोसेसर को यूजरस्पेस और कर्नेल स्पेस कोड चलाने के लिए आपको दो अलग-अलग प्रोसेसर की आवश्यकता नहीं है। मूल रूप से यह इस तरह से काम करता है जब आप अपने कंप्यूटर को अपने बायोस लोड बूटलोडर (डिस्क पर 512kb कोड जो 55aa बूटलोडर सिग्नेचर को समाप्त करता है) को रैम करने के लिए करते हैं और इस बूटलोडर को फेंक देते हैं जब तक आपका कंप्यूटर लोड नहीं हो जाता है और तब तक चलता रहता है जब तक आप अपना कंप्यूटर डाउन नहीं कर लेते। और आपका कर्नेल मेमोरी का प्रबंधन करता है और आपके कर्नेल कोड को अनुमति नहीं देता है जो राम पर बैठता है, उपयोगकर्ता स्पेस कोड द्वारा अधिलेखित नहीं होगा। इस प्रयोजन के लिए सिस्टम कॉल हैं जो इन सिस्टम कॉलों का उपयोग करके उपयोगकर्ता कोड का उपयोग किया जाता है और अपने उपयोगकर्ता कोड को रैम में जोड़ें और इसे निष्पादित करना शुरू करें। ऑपरेटिंग सिस्टम में इस अवधारणा को मेमोरी मैनेजमेंट के रूप में शोधित किया जाता है। यहाँ लिंक है जिसे आप पढ़ सकते हैं यह शुरू करने के लिए बहुत अच्छा है https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf


0

अन्य उत्तरों को बनाने के लिए, यह समझना आसान है कि क्या आपको लगता है कि कर्नेल स्वयं एक प्रक्रिया नहीं है, बल्कि एक प्रबंधन कोड है। उपयोगकर्ता की कोई भी प्रक्रिया कर्नेल मोड के कुछ भाग का उपयोग करके उपयोगकर्ता मोड से कर्नेल मोड में स्थानांतरित हो सकती है और कर्नेल कोड (निजी निर्देश) निष्पादित कर सकती है। फिर प्रक्रिया उपयोगकर्ता मोड में वापस जा सकती है और फिर से उपयोगकर्ता स्थान में चल सकती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.