जवाबों:
वास्तव में "लाइब्रेरी कॉल" जैसी कोई चीज नहीं है। आप किसी फ़ंक्शन को साझा लाइब्रेरी से लिंक कर सकते हैं। और इसका मतलब है कि कॉल करने के लिए फ़ंक्शन का स्थान निर्धारित करने के लिए लाइब्रेरी पथ को रनटाइम पर देखा जाता है।
सिस्टम कॉल निम्न स्तर के कर्नेल कॉल होते हैं जिन्हें कर्नेल द्वारा नियंत्रित किया जाता है।
यदि आप man man
अपने शेल में टाइप करते हैं, तो आप मैनुअल अनुभागों की सूची देखेंगे
2 सिस्टम कॉल (कर्नेल द्वारा प्रदान किए गए कार्य)
3 पुस्तकालय कॉल (कार्यक्रम पुस्तकालयों के भीतर कार्य)
उदाहरण के लिए, आप chmod
टाइप करते समय मैनुअल के अनुभाग 2 में पाएंगे man chmod
। और fprintf
अनुभाग 3 में।
सिस्टम कॉल सीधे कर्नेल द्वारा नियंत्रित किए जाते हैं।
लाइब्रेरी कॉल्स को एक डायनेमिक (या स्टेटिकली लिंक्ड) लाइब्रेरी द्वारा नियंत्रित किया जाता है। पुस्तकालय कॉल करने वाले कार्यक्रम को पहले उस पुस्तकालय को आयात करना होगा, इससे पहले कि कॉल काम करेगी। लाइब्रेरी कॉल स्वयं सिस्टम कॉल का उपयोग कर सकती है।
कभी-कभी पुस्तकालयों को सिस्टम कॉल के लिए "फ्रंट-एंड" के रूप में प्रदान किया जाता है, अतिरिक्त कार्यक्षमता प्रदान करने के लिए या कर्नेल द्वारा प्रदान नहीं किए गए उपयोग में आसानी।
सिस्टम कॉल फ़ंक्शंस हैं जो ऑपरेटिंग सिस्टम अनुप्रयोगों का उपयोग करने के लिए प्रदान करता है। जबकि math.h, string.h, आदि जैसे कार्य वे हैं जिनका ऑपरेटिंग सिस्टम के साथ इंटरफेसिंग से कोई लेना-देना नहीं है।
मूल रूप से लिनक्स कर्नेल अर्थात के दो तरीके हैं।
कोई भी लिनक्स कर्नेल इन दोनों मोडों के बीच खुद को आगे और पीछे घुमाता है। आमतौर पर, लाइब्रेरी कॉल उपयोगकर्ता मोड में निष्पादित होती हैं और सिस्टम कॉल कर्नेल मोड में निष्पादित होती हैं । ऑपरेटिंग सिस्टम के संदर्भ में, कर्नेल मोड प्रकृति में परमाणु है और पर्यवेक्षी मोड में है। लगभग सभी लाइब्रेरी कॉल को अपने कार्यों को करने के लिए कर्नेल की सहायता की आवश्यकता होती है। प्रत्येक पुस्तकालय कॉल बदले में अंतर्निहित सिस्टम कॉल कहता है। आइए निम्नलिखित उदाहरण का उपयोग करके विचार को और अधिक स्पष्ट करें
जब भी c प्रोग्राम में आप हेडर फाइल से fopen () का उपयोग करते हैं। प्रोग्रामिंग पर्यावरण कॉल सिस्टम कॉल ओपन () कर्नेल से और अपने फ़ाइल खोलने का कार्य करते हैं। निष्पादित करने के बाद फिर से, उपयोगकर्ता प्रवाह पर नियंत्रण प्रवाह वापस।
निम्नलिखित कार्य करने के लिए यह प्रदर्शन करना
man man
: यहाँ आपको 1-8 से मैनुअल सेक्शन मिलेगा जिसका प्रत्येक विशिष्ट उद्देश्य है।man fopen
: आप के रूप में प्रतिक्रिया देखेंगे FOPEN(3)
, यहाँ 3 मैन पेजों के मैनुअल सेक्शन 3 को दर्शाता है जो कि सी-लाइब्रेरी कॉल सेक्शन है।करो man open
: आप के रूप में प्रतिक्रिया देखेंगे OPEN(2)
, यहाँ 2 मैन पेजों के मैनुअल सेक्शन 2 को दर्शाते हैं जो सिस्टम कॉल सेक्शन है।
आशा है कि आप अवधारणा को समझ गए होंगे।
बस अन्य उत्तरों में यहां बताए गए मतभेदों को जोड़ते हुए।
चूंकि लाइब्रेरी कॉल केवल एक फ़ंक्शन कॉल है, इसलिए उपयोगकर्ता स्थान से कर्नेल स्थान पर कोई स्विच नहीं होता है। दूसरी ओर, एक सिस्टम कॉल यूजर स्पेस से कर्नेल स्पेस में स्विच करता है क्योंकि सिस्टम कॉल कर्नेल मोड में काम करता है।