यह एक बहुत ही अच्छा सवाल (बेहतर क्या आप जानते हैं) है, और जानने के लिए एक बहुत है । बहुत।
मैं इसे छोटा रखने की कोशिश करूंगा। ऑपरेटिंग सिस्टम सॉफ्टवेयर और हार्डवेयर के बीच अमूर्त के एक स्तर के रूप में कार्य:
Software
.
/|\
| communicates with
\|/
'
Operating System
.
/|\
| communicates with
\|/
'
Hardware
ओएस ड्राइवरों (व्यापक रूप से इस्तेमाल अवधि) कहा जाता कार्यक्रमों के माध्यम से हार्डवेयर के साथ संचार करता है और ओएस प्रक्रियाओं सिस्टम कहा जाता माध्यम से सॉफ्टवेयर के साथ संचार कॉल (व्यापक रूप से उपयोग नहीं किया जाने वाला शब्द)।
अनिवार्य रूप से, जब आप सिस्टम कॉल करते हैं, तो आप अपना प्रोग्राम छोड़ रहे हैं और ऑपरेटिंग सिस्टम के कोड दर्ज कर रहे हैं। सिस्टम कॉल एकमात्र तरीका प्रोग्रामर को संसाधनों के साथ संवाद करने की अनुमति है।
अब मैं वहाँ बंद कर देंगे, लेकिन आप यह भी कहा:
मेरे लिए
, यह है कि मशीन कोड से एक निचले स्तर पर ऑपरेटिंग सिस्टम चलाना चाहिए लगता है और इसलिए, मैं कर सकते हैं ' टी समझते हैं कि ओएस संकलित अनुप्रयोग और हार्डवेयर के बीच मध्यस्थ के रूप में कार्य कैसे कर सकता है।
यह मुश्किल है, लेकिन कुछ बुनियादी बातों को समझने के बाद यह आसान है।
सबसे पहले, सभी कोड केवल सीपीयू पर चल रहे मशीन कोड हैं। कोई कोड अन्य कोड से अधिक या कम नहीं है (कुछ आदेशों के अपवाद के साथ जो केवल विशेषाधिकार प्राप्त कर्नेल मोड में चलाया जा सकता है)। तो सवाल यह है कि, ओएस संभवतः नियंत्रण में कैसे हो सकता है भले ही यह उपयोगकर्ता को सीपीयू के नियंत्रण को छोड़ रहा हो?
जब कोई CPU पर कोड चल रहा है, तो नामक एक अवधारणा को बाधित करती है। यह सीपीयू को भेजा गया एक सिग्नल है जो वर्तमान में चलने वाले कोड को रोकने के लिए और कोड के दूसरे भाग के साथ स्विच हो जाता है, जिसे हस्तक्षेप हैंडलर कहा जाता है।
इंटरप्ट्स के उदाहरणों में कीबोर्ड, माउस और सबसे महत्वपूर्ण बात यह है कि घड़ी।
घड़ी के अंतराल को नियमित आधार पर उठाया जाता है क्योंकि ऑपरेटिंग सिस्टम की घड़ी में हैंडलर को चलाने में बाधा आती है। इस घड़ी के भीतर हस्तक्षेप हैंडलर ऑपरेटिंग सिस्टम का कोड है जो जांचता है कि वर्तमान में कौन सा कोड चल रहा है यह निर्धारित करता है कि कौन से कोड को आगे चलाने की आवश्यकता है। यह या तो अधिक ऑपरेटिंग सिस्टम कोड या अधिक उपयोगकर्ता कोड हो सकता है।
क्योंकि घड़ी हमेशा टिक टिक है, और क्योंकि ऑपरेटिंग सिस्टम हमेशा CPU पर चलाने के लिए इस समय-समय पर मौका हो जाता है, यह कंप्यूटर के भीतर सब कुछ रच करने में सक्षम है, भले ही यह के एक ही सेट का उपयोग कर चलाता है सीपीयू कमांड किसी भी सामान्य कार्यक्रम के रूप में।
संकलित एप्लिकेशन बस डीएलएल (ऑपरेटिंग सिस्टम, जैसे कि विंडोज़ में कर्नेल 32.dll) में फ़ंक्शन कॉल करता है जिसमें अन्य मशीन कोड के कार्य होते हैं। वह अन्य मशीन कोड विशेष रूप से हार्डवेयर के साथ काम करने के लिए लिखा गया है, इसलिए आपको यह नहीं करना है। –
थोड़ा टेंगेंशियल और वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन हो सकता है कि यदि आप भाषा और ओएस के बीच सीमाओं में रुचि रखते हैं तो यह आपको प्रक्रिया में कई चरणों में से कुछ पर भय/भय/घृणा देगा के बारे में आश्चर्य ...: -/http://stackoverflow.com/a/2444508/211160 – HostileFork