एक संकलित प्रोग्राम में आमतौर पर एक शीर्षलेख होता है जिसके बाद वास्तविक CPU निर्देश (जिसे आप "बाइनरी" कह सकते हैं) + कई अन्य डेटा।
जब आप ओएस को अपने प्रोग्राम को लोड करने के लिए कहने का प्रयास करते हैं तो हेडर ओएस द्वारा पढ़ा जाएगा, और इसका उपयोग यह जांचने के लिए किया जाता है कि निष्पादन योग्य फ़ाइल वास्तव में इस ओएस और इस आर्किटेक्चर के लिए एक निष्पादन योग्य फ़ाइल है। अर्थात। ताकि आप गलती से विंडोज या इसी तरह के लिनक्स प्रोग्राम को चला सकें।
शीर्षलेख में जानकारी के कई अन्य बिट्स भी शामिल हैं जहां वास्तविक CPU निर्देश exeutable फ़ाइल में स्थित हैं, जहां डेटा सेगमेंट (टेक्स्ट, स्ट्रिंग्स, ग्राफिक्स) स्थित हैं और आगे।
एक बार ओएस खुश है कि निष्पादन योग्य फ़ाइल यह है कि यह होना चाहिए, तो ओएस निष्पादन योग्य फ़ाइल से विभिन्न खंडों को स्मृति में लोड करेगा और सीपीयू को "बाइनरी" कोड सेगमेंट चलाने के लिए निर्देश देगा। यह कोड एक अर्थ में "शुद्ध" है कि यह सीधे सीपीयू असेंबली कोड है।
हालांकि ऑपरेटिंग सिस्टम सीपीयू को बाधित कर सकता है (उदाहरण के लिए किसी अन्य प्रोग्राम पर स्विच करने के लिए, या सिर्फ स्मृति से प्रोग्राम को मारना और आगे)। तो इस चल रहे कार्यक्रम के आसपास बहुत सी चीजें चल रही हैं, और ओएस प्रकार का "प्रबंधन" करता है और यह सुनिश्चित करता है कि यह एक अच्छे लड़के की तरह व्यवहार करता है, लेकिन जब कोड चल रहा है तो कोड स्वयं जितना तेज़ हो सके सीपीयू निर्देशों को निष्पादित कर रहा है .. ओएस के बीच में कोड की व्याख्या करने के बिना।
यह भी ध्यान रखें कि चल रहे प्रोग्राम ओएस को विभिन्न तरीकों से कॉल करते समय कॉल कर सकते हैं। उदाहरण के लिए ओएस को डिस्प्ले पर विंडो खोलने का अनुरोध करने के लिए, नेटवर्क कनेक्शन खोलें, स्मृति आवंटित करें, और बहुत आगे। वास्तव में यह हो रहा है कि सीपीयू सिर्फ एक अलग स्थान पर कोड निष्पादित करने के लिए कूदता है (यानी यह निष्पादन योग्य में कोड चलाने से कूदता है, ओएस में कोड का कुछ टुकड़ा चलाने के लिए, और फिर वापस कूदता है)।
यह संक्षेप में है। हालांकि कार्यक्रम चलाने के कई अन्य तरीके हैं। वर्चुअल मशीनें हैं, व्याख्या की गई भाषाएं (जैसे जावा या रूबी उदाहरण के लिए), और बहुत आगे। और वे सभी परंपरागत "शुद्ध बाइनरी" भाषाओं जैसे सी/सी ++ से विभिन्न तरीकों से कार्यक्रम चलाते हैं, लेकिन उम्मीद है कि इससे आपको यह समझने में मदद मिलेगी कि यह थोड़ा बेहतर कैसे काम करता है।
क्या है बाइनरी "सही" या "शुद्ध"? –