वास्तव में सिस्टम प्रोग्रामिंग क्या है?


26

मैं कभी नहीं समझ पाया कि सिस्टम प्रोग्रामिंग का क्या मतलब है। दी गई सामान्य परिभाषा "... Os के करीब कुछ कर रही है या Os सुविधाओं का विस्तार कर रही है ..."।

कुछ पुस्तकालयों के बजाय सीधे विंडोज एपीआई का उपयोग करने के लिए फ़ाइल i / o इसे सिस्टम प्रोग्रामिंग बनाते हैं? क्या Android OS सिस्टम प्रोग्रामिंग लिख रहा था? अगर मैं कुछ लिखता हूं जो एंड्रॉइड पर ऐप जैसे कंसोल के माध्यम से लिनक्स कर्नेल को उजागर करूंगा तो क्या मैं सिस्टम प्रोग्रामिंग कर रहा हूं? अगर मैं एक वॉशिंग मशीन को नियंत्रित करने के लिए सॉफ्टवेयर लिख रहा हूं तो क्या मैं सिस्टम प्रोग्रामिंग लिख रहा हूं?

मैं प्रोग्रामिंग में एक शुरुआत कर रहा हूं और यह मुझे कोई अंत नहीं करने के लिए भ्रमित कर रहा है। कृपया इसे "एप्लिकेशन प्रोग्रामिंग" के साथ विपरीत समझाएं।


2
यह परिभाषा बदल गई है और सिस्टम प्रोग्रामर खुद को आज एक अनूठी परिभाषा के बारे में निश्चित नहीं लगते हैं। यह समस्या आमतौर पर तब आती है जब लोग इस बात पर बहस करते हैं कि क्या भाषा X सिस्टम प्रोग्रामिंग के लिए सुविधाजनक है ...
Denys Séguret

@Denys Séguret - विडंबना है कि कोई भी इस बात पर सहमत नहीं हो सकता है कि "सिस्टम प्रोग्रामिंग" किसके साथ शुरू होना है।
जॉन

जवाबों:


19

मुझे व्यक्तिगत रूप से विकिपीडिया की परिभाषा पसंद है :

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


12

ऐसे कई सवाल हैं जो आप खुद से उस सवाल को तय करने का अभ्यास कर सकते हैं।

  • क्या सिस्टम मूल रूप से इस कार्यक्रम के बिना बेचा गया था? एंग्री बर्ड्स स्मार्ट फोन के लिए एक "किलर ऐप" हो सकता है (इसका कारण कोई इसे खरीदता है), लेकिन यह अभी भी एक अलग थर्ड-पार्टी ऐप है जिसे फोन पेश किए जाने के लंबे समय बाद लिखा गया है। इसे लिखना अनुप्रयोगों के लिए प्रोग्राम होता। लेकिन एक ही स्मार्ट फोन का डिस्प्ले ड्राइवर इसे इस्तेमाल करने के लिए जरूरी है, इसलिए यह सिस्टम प्रोग्रामिंग होता।
  • क्या आप बड़े पैमाने पर पुनर्लेखन के बिना किसी अन्य प्लेटफ़ॉर्म पर कोड पोर्ट करने की कल्पना कर सकते हैं? TeX और troffवस्तुतः कुछ परिवर्तनों के साथ किसी भी प्रणाली में पोर्ट किया गया है, इसलिए वे अनुप्रयोग हैं, भले ही वे टूल चेन के निचले भाग की ओर स्थित हों जो लोग आमतौर पर उपयोग करते हैं। TeX के लिए अपना आउटपुट लिखने वाली फ़ाइल सिस्टम, जैसे UFS या VFAT, एक बॉर्डरलाइन केस है। यदि आप पूरी तरह से भयानक थे, तो आप फ़ाइल सिस्टम को एक अलग OS में पोर्ट कर सकते हैं , लेकिन आमतौर पर लोग बस भयानक विचारों को लेते हैं और अपने स्वयं के ओएस के लिए अपना स्वयं का फ़ाइल सिस्टम लिखते हैं। यह फाइल सिस्टम सिस्टम सॉफ्टवेयर बनाता है।
  • क्या कार्यक्षमता कर्नेल में या अलग-अलग बायनेरिज़ में लागू की गई है? (फाइल सिस्टम यहां एक मध्य मैदान पर भी कब्जा कर लेता है। कई फाइल सिस्टम के कई हिस्से वास्तव में कर्नेल कोड होते हैं, लेकिन कई में उपयोगकर्ता-अंतरिक्ष में पर्याप्त भाग होते हैं।) ग्राफिक्स डिस्प्ले ड्राइवर सैद्धांतिक रूप से बाहरी घटकों को प्लग-इन कर सकते हैं, लेकिन वे अक्सर लागू होते हैं। कर्नेल में या कम से कम विशेषाधिकार प्राप्त कर्नेल (या यहां तक ​​कि हार्डवेयर) तक पहुंच के साथ। यह प्रोग्रामिंग सिस्टम होगा। दूसरी ओर, कंप्यूटर गेम जो ग्राफिक्स डिस्प्ले स्टैक का उपयोग करते हैं, वे अनुप्रयोग हैं।

आपके प्रश्नों के लिए, Android OS लिखना निश्चित रूप से सिस्टम प्रोग्रामिंग था। Windows API कॉल का उपयोग करने वाला प्रोग्राम लिखना एप्लिकेशन प्रोग्रामिंग है। यह उतना पोर्टेबल नहीं है जितना कि यदि आप SDL या OpenGL जैसे क्रॉस-प्लेटफॉर्म लाइब्रेरी का उपयोग करते हैं, लेकिन यह सिद्धांत रूप में पोर्ट किया जा सकता है, यह थर्ड-पार्टी-कोड है, और यह यूजर स्पेस में चलता है। लिनक्स कर्नेल की स्थिति को उजागर करने वाला एक कंसोल ऐप एक दिलचस्प विचार प्रयोग है। मैं निश्चित रूप से कहूंगा कि इसमें सिस्टम प्रोग्रामिंग शामिल है, क्योंकि आपको लिनक्स की संरचना के बारे में बहुत कुछ जानना होगा (ध्यान दें कि "लिनक्स" ठीक से केवल कर्नेल है, वितरण नहीं) लिखने के लिए, और शायद इसका उपयोग करने के लिए भी!


4

संक्षेप में: सॉफ्टवेयर लिखना जो एक ओएस के कामकाज को बढ़ाता है या बढ़ाता है, जैसे ड्राइवर, सिस्टम यूटिलिटी अपडेट ओएसआईएस या यहां तक ​​कि नए ओएस'एस।

इसमें ज्यादातर मेमोरी मैनेजमेंट शामिल है; I / O संचालन शब्द के व्यापक अर्थों में जैसे नेटवर्किंग, फ़ाइल एक्सेस और डिवाइस प्रबंधन; प्रक्रिया प्रबंधन (मल्टी टास्किंग, प्रक्रिया प्रशासन, आदि); उपयोगकर्ता <-> सिस्टम इंटरैक्शन विधियाँ (दोनों में और बाहर) और उपयोगकर्ता प्रशासन। मूल रूप से सब कुछ है कि ओएस का हिस्सा है कि एक आवेदन नहीं है सिस्टम प्रोग्रामिंग है।


3

सीधे विंडोज एपीआई का उपयोग करना, एक बिंदु पर, विंडोज के लिए एप्लिकेशन लिखने का एक सामान्य तरीका था। तो नहीं, यह सिस्टम प्रोग्रामिंग नहीं है।

सिस्टम प्रोग्रामिंग सिर्फ "ओएस के करीब" नहीं है - यह कंप्यूटर सिस्टम के मुख्य कामकाज के लिए कुछ आवश्यक है। इसलिए OS लिखना सिस्टम प्रोग्रामिंग है। उस OS के लिए वीडियो ड्राइवर, फाइल सिस्टम ड्राइवर, नेटवर्क ड्राइवर लिखना सिस्टम प्रोग्रामिंग है। भाषा / चिपसेट के किसी विशेष संयोजन के लिए संकलक लिखना सिस्टम प्रोग्रामिंग है।


1

आम तौर पर, यह "निम्न स्तर के सामान को संदर्भित करता है जो गैर-तकनीकी अंत उपयोगकर्ताओं को पता नहीं है या वे बहुत स्पष्ट रूप से नहीं जानते हैं कि वे उपयोग कर रहे हैं या वे क्या करते हैं"।

कुछ उदाहरण जिन्हें अक्सर सिस्टम प्रोग्रामिंग माना जाएगा:

  • ऑपरेटिंग सिस्टम और ड्राइवर
  • compilers
  • एमुलेटर और वर्चुअलाइजेशन
  • वितरण निर्माण, अर्थात् उपयोगकर्ता चित्रों का निर्माण।

    यह विशेष रूप से सामान्य रूप से सी मानक लाइब्रेरी, इनिट सिस्टम और शेल की तरह बुनियादी यूजरलैंड घटकों का चयन करना शामिल है।

सिस्टम प्रोग्रामिंग को अक्सर सी या असेंबली जैसे स्वचालित कचरा संग्रह के बिना कम संकलित स्तर की भाषाओं में किया जाता है, और POSIX C इंटरफेस के माध्यम से अक्सर कम सामान्य सिस्टम कॉल का उपयोग किया जाता है

मैं ट्यूटोरियल पर एक हाथ बनाए हुए हूं जो यहां कई सिस्टम प्रोग्रामिंग विषयों को कवर करता है


0

इसे परिभाषित करते समय मैं किसी भी तकनीकी विवरण से पूरी तरह स्पष्ट हो जाऊंगा। तब यह आसान हो जाता है।

एक एप्लिकेशन उपयोगकर्ता को प्रौद्योगिकी के कुछ टुकड़े के साथ कुछ उपयोगी करने की अनुमति देता है। इसलिए एप्लिकेशन प्रोग्रामिंग एक उपयोगकर्ता को सुविधाएं प्रदान करने के लिए लक्षित है, काफी सीधे।

दूसरी ओर सिस्टम प्रोग्रामिंग, एप्लिकेशन प्रोग्रामिंग को संभव बनाने के लिए जमीनी कार्य करेगी। यह उपयोगकर्ता के बजाय एप्लिकेशन प्रोग्रामर को सुविधाएँ प्रदान करता है।

यह परिभाषा धारण करेगी, लेकिन यह परिप्रेक्ष्य और संदर्भ और भूमिकाओं का विषय है। एक कंप्यूटर प्रोग्रामर के लिए, प्रोग्रामिंग टूल एप्लिकेशन हैं। अंत उपयोगकर्ता के लिए वे अर्थहीन हैं, बस तस्वीर से बाहर।


-3

संक्षेप में, एप्लिकेशन प्रोग्रामिंग के साथ तुलना करने पर सिस्टम प्रोग्रामिंग यह है कि एसपी हार्डवेयर संसाधनों के साथ काम करने के लिए ओएस सॉफ्टवेयर को संभालता है और एपी अंतिम उपयोगकर्ता गतिविधि को संभालता है।


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