जब भी बूटलोडर ऑपरेटिंग सिस्टम लोड करता है तो संभवतः केवल एक प्रोग्राम प्रवाह सक्रिय होता है, है ना? इसका मतलब यह होगा कि, एक प्रोसेसर में निर्देश सूचक होता है और ईआईपी रजिस्टर पॉइंट्स की स्थिति में पाए गए आदेशों को निष्पादित करता है। किस बिंदु पर और सिस्टम अधिक प्रक्रियाओं और/या धागे का उपयोग कैसे शुरू करता है (कोई उपयोगकर्तालैंड धागे, लेकिन सीपीयू धागे)?निम्न स्तर प्रोग्रामिंग: ओएस कैसे एक नया धागा/प्रक्रिया शुरू करता है?
उत्तर
ओएस बूट करेगा (बीआईओएस और बूटलोडर के बाद) एक विशेष भूमिका में - जैसा कि इसे चलाने के लिए पहला प्रोग्राम सीधे होगा सभी सीपीयू कमांड तक पहुंच।
तो यह सिस्टम के विभिन्न हिस्सों को स्थापित करेगा - जैसे Interrupt Handlers (या इंटरप्ट सेवा रूटीन) स्थापित करना। ऐसा करने के बाद इसमें "शेड्यूलर" बनाने की क्षमता है।
वास्तविक "प्रक्रिया/धागा" हैंडलिंग इस शेड्यूलर द्वारा की जाएगी। यह तय करता है, कौन सा धागा चलाया जाएगा। इसके अलावा यह सभी सक्रिय धागे का प्रबंधन करता है। सीपीयू इन सभी चीजों से अनजान है।
शेड्यूलर का मुख्य-कार्यकारी थ्रेड (या "प्रक्रिया") ए निष्पादित करने का निर्णय लेने के बाद, यह प्रक्रिया डेटा को रजिस्टरों में कॉपी करता है (और रजिस्टरों को हाल ही में चल रहे थ्रेड के इन्फोब्लॉक में संग्रहीत करता है)। यह सीपीयू/टाइमर को एन माइक्रोसेकंड (या अन्य टाइम्यूनिट) में बाधा उत्पन्न करने के लिए बताएगा। फिर यह सीपीयू को गैर-ओएस मोड में "प्रोग्राम" (केवल सीपीयू के बारे में जानता है) चलाने के लिए बताएगा (ताकि यह महत्वपूर्ण डेटा संशोधित न हो या अनुमति के बिना अपने इंटरप्ट हैंडलर पंजीकृत न करे)।
जबकि थ्रेड ए अब निष्पादित कर रहा है, हार्डवेयर टाइमर चलाएगा। एक बार यह वांछित समय-ऑफसेट हिट करने के बाद, यह एक इंटरप्ट का कारण बन जाएगा। हार्डवेयर तब वर्तमान प्रोग्राम के निष्पादन को रोक देगा, और इसके बदले पंजीकृत Interrupt Handler
का आह्वान करेगा। यह हैंडलर शेड्यूलर का एक तरीका होगा (फिर से मुख्य कार्यकारी, सटीक होना)।
यह विधि फिर से पुनर्मूल्यांकन करेगी कि थ्रेड निर्धारित किया जाना चाहिए और इसलिए शेड्यूलिंग जारी है।
पहली चीजों में से एक (मल्टीथ्रेडेड) ओएस शुरू करना है शेड्यूलर जो कई प्रक्रियाओं के प्रबंधन के लिए ज़िम्मेदार है (और इसलिए मल्टीकोर मशीनों पर कई सीपीयू थ्रेड जैसे प्रबंधन भी करता है)।
इस शेड्यूलर द्वारा शुरू की गई पहली प्रक्रिया आमतौर पर "इनिट" प्रक्रिया का कुछ प्रकार है जो बदले में अन्य कार्यक्रमों/प्रक्रियाओं को लोड करने के लिए ज़िम्मेदार है।
सही, बूट प्रक्रिया के दौरान केवल एक निष्पादन धागा है। आम तौर पर यह तब तक होता है जब तक ओएस उस बिंदु पर प्रारंभ नहीं होता है जहां निम्न-स्तरीय मेमोरी प्रबंधन, शेड्यूलर इत्यादि कार्यात्मक होते हैं।
यह बहु-सीपीयू सिस्टम में भी मामला है - एक कोर प्रारंभिक स्टार्टअप को संभालने वाला "मास्टर प्रोसेसर" है जब तक कि अन्य कोर किकस्टार्ट करने के लिए आधारभूत संरचना न हो।
अंत में यह अत्यधिक ओएस-विशिष्ट है; Intel Architecture Software Developer's Manuals में हार्डवेयर चश्मे का विवरण है। (मान लीजिए कि आप इंटेल आर्किटेक्चर के बारे में बात कर रहे हैं; अन्य आर्किटेक्चर जंगली रूप से भिन्न हो सकते हैं।)
- 1. निम्न-स्तरीय ग्राफिक्स प्रोग्रामिंग
- 2. निम्न स्तर हूकर
- 3. निम्न स्तर जावास्क्रिप्ट क्या है?
- 4. एचडीएफ 5: निम्न स्तर बनाम निम्न स्तर इंटरफेस। h5py
- 5. एक संकलित प्रोग्राम ओएस के साथ कैसे सहभागिता करता है?
- 6. क्या हैंडलरपोस्ट (रननेबल) एक नया धागा शुरू करता है?
- 7. निम्न स्तर के डेटा संचार
- 8. निम्न स्तर का लुआ दुभाषिया
- 9. स्मार्टकार्ड प्रोग्रामिंग शुरू करना
- 10. मैं _really_ निम्न-स्तरीय नेटवर्क प्रोग्रामिंग कैसे सीख सकता हूं?
- 11. निम्न स्तर कंसोल इनपुट और पुनर्निर्देशन
- 12. सर्वर बनाम क्लाइंट सॉकेट (निम्न स्तर का विवरण)?
- 13. डिजाइन दस्तावेज़ (उच्च स्तर और निम्न स्तर के डिजाइन दस्तावेज़)
- 14. जीडीबी एक नया खोल क्यों शुरू करता है और इस व्यवहार को कैसे अक्षम किया जाए?
- 15. निम्न स्तर की डब्ल्यूसीएफ त्रुटियों को कैसे संभालें?
- 16. एफपीजीए प्रोग्रामिंग शुरू करना
- 17. नया इरादा() एंड्रॉइड के साथ नया उदाहरण शुरू करता है: launchMode = "singleTop"
- 18. यदि टीएक्स एक प्रोग्रामिंग भाषा है, तो मैं टीएक्स में प्रोग्रामिंग कैसे शुरू कर सकता हूं?
- 19. कियोस्क एप्लीकेशन - ओएस एक्स प्रोग्रामिंग - एकाधिक मॉनीटर
- 20. ओएस स्तर पर नींद कैसे लागू की जाती है?
- 21. एआई प्रोग्रामिंग शुरू करना
- 22. एक बच्चे प्रोग्रामिंग शुरू करने के सुझाव
- 23. बताएं कि निम्न कोड क्या करता है?
- 24. मैं एक नया पर्ल मॉड्यूल वितरण कैसे शुरू करूं?
- 25. सी # में वास्तविक निम्न स्तर की ध्वनि उत्पादन?
- 26. तंत्रिका नेटवर्क प्रोग्रामिंग कैसे शुरू करें
- 27. निम्न-स्तर के माउस और कीबोर्ड हुक को समझना (win32)
- 28. निम्न स्तर के सामान्य बीएसडी सॉकेट से कम
- 29. सी # निम्न स्तर के माउस हुक और फॉर्म इवेंट हैंडलिंग
- 30. सी # में निम्न स्तर कुंजीपटल हुक का उपयोग कर
आपके स्पष्टीकरण के लिए धन्यवाद। क्या आप मुझे बता सकते हैं कि जब कई स्वतंत्र प्रोसेसर/कोर शामिल होते हैं तो यह तस्वीर कैसे बदलती है? – prinzdezibel
अधिकांश मल्टीकोरों में कम से कम कुछ "मास्टर" प्रोसेसर होते हैं (अन्य उत्तरों देखें) - एल 1 + कैश कुछ केंद्रीय प्रबंधन के बिना काम नहीं करेंगे। शेड्यूलर को प्रत्येक रजिस्टर ऑपरेशन के लिए वांछित प्रोसेसर को संबोधित करना होगा। बाकी सब कुछ वही रहता है (निश्चित अंतराल टाइमर)। –
@prinzdezible: ओएस शेड्यूलर आम तौर पर प्रत्येक सीपीयू कोर पर चलता है जब वर्तमान थ्रेड को बाधित या सिस्टम कॉल करके रोक दिया जाता है। कई कोरों के लिए स्केलेबल होने के लिए यह सभी धागे को नहीं देखेगा, लेकिन केवल उस सीपीयू को दिए गए धागे। यदि यह बहुत व्यस्त है तो यह थ्रेड को अन्य CPUs पर धक्का देगा। यदि यह व्यस्त नहीं है तो यह अन्य CPUs से धागे खींच देगा। प्रत्येक बार समय या कुछ काउंटर द्वारा, शेड्यूलर सभी CPUs पर शेष कार्यों को लोड करेगा (यह धीमा है, इसलिए अक्सर नहीं) –