सिस्टम प्रोग्रामिंग

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

सिंहावलोकन
निम्नलिखित विशेषताएँ सिस्टम प्रोग्रामिंग की विशेषता हैं:
 * प्रोग्रामर हार्डवेयर और सिस्टम के अन्य गुणों के बारे में अनुमान लगा सकता है जिस पर प्रोग्राम चलता है, और अक्सर उन गुणों का फायदा उठाएगा, उदाहरण के लिए एक कलन विधि का उपयोग करके जो विशिष्ट हार्डवेयर के साथ उपयोग किए जाने पर कुशल होने के लिए जाना जाता है।
 * आमतौर पर निम्न-स्तरीय प्रोग्रामिंग भाषा या प्रोग्रामिंग भाषा की बोली का उपयोग किया जाता है ताकि:
 * प्रोग्राम संसाधन-विवश वातावरण में काम कर सकते हैं
 * प्रोग्राम थोड़े रन-टाइम सिस्टम ओवरहेड के साथ कुशल हो सकते हैं, संभवतः या तो एक छोटा क्रम पुस्तकालय हो या कोई भी न हो
 * प्रोग्राम मेमोरी एक्सेस और बहाव को काबू करें पर सीधे और कच्चे नियंत्रण का उपयोग कर सकते हैं
 * प्रोग्रामर प्रोग्राम के कुछ हिस्सों को सीधे असेम्बली भाषा में लिख सकता है
 * अक्सर सिस्टम प्रोग्राम को डिबगर में नहीं चलाया जा सकता है। कंप्यूटर सिमुलेशन में प्रोग्राम चलाना कभी-कभी इस समस्या को कम करने के लिए इस्तेमाल किया जा सकता है।

सिस्टम प्रोग्रामिंग एप्लिकेशन प्रोग्रामिंग से काफी अलग है जो प्रोग्रामर एक या दूसरे में विशेषज्ञ होते हैं। सिस्टम प्रोग्रामिंग में, अक्सर सीमित प्रोग्रामिंग सुविधाएं उपलब्ध होती हैं। कचरा संग्रह (कंप्यूटर विज्ञान) का उपयोग आम नहीं है और डिबगिंग करना कभी-कभी कठिन होता है। रनटाइम लाइब्रेरी, यदि उपलब्ध हो, तो आमतौर पर बहुत कम शक्तिशाली होती है, और कम त्रुटि जाँच करती है। उन सीमाओं के कारण, सिस्टम निगरानी और डेटा प्रविष्ट कराना का अक्सर उपयोग किया जाता है; ऑपरेटिंग सिस्टम में अत्यंत विस्तृत लॉगिंग सबसिस्टम हो सकते हैं।

ऑपरेटिंग सिस्टम और नेटवर्किंग में कुछ भागों को लागू करने के लिए सिस्टम प्रोग्रामिंग की आवश्यकता होती है, उदाहरण के लिए ऑपरेटिंग सिस्टम के लिए पेजिंग (आभासी मेमोरी) या डिवाइस ड्राइवर को लागू करना।

इतिहास
मूल रूप से सिस्टम प्रोग्रामर हमेशा असेंबली भाषा में लिखते थे। 1960 के दशक के उत्तरार्ध में उच्च स्तरीय भाषाओं में हार्डवेयर समर्थन के साथ प्रयोग IBM PL/S | PL/S, BLISS, BCPL जैसी भाषाओं का नेतृत्व करते हैं, और बरोज़ की बड़ी प्रणालियों के लिए ALGOL का विस्तार करते हैं। फोर्थ (प्रोग्रामिंग भाषा) में सिस्टम लैंग्वेज के रूप में भी एप्लिकेशन हैं। 1970 के दशक में, C (प्रोग्रामिंग लैंग्वेज) यूनिक्स के विकास से सहायता प्राप्त करते हुए व्यापक हो गई। हाल ही में एंबेडेड सी ++ कहे जाने वाले सी++ के एक उपसमुच्चय का कुछ उपयोग देखा गया है, उदाहरण के लिए इसका उपयोग मैकओएस के आई/ओ किट ड्राइवरों में किया जाता है।

वैकल्पिक अर्थ
ऐतिहासिक कारणों से, कुछ संगठन एक जॉब फ़ंक्शन का वर्णन करने के लिए सिस्टम प्रोग्रामर शब्द का उपयोग करते हैं जिसे अधिक सटीक रूप से सिस्टम प्रशासक कहा जाएगा। यह उन संगठनों के लिए विशेष रूप से सच है जिनके कंप्यूटर संसाधनों पर ऐतिहासिक रूप से मेनफ़्रेम कंप्यूटरों का प्रभुत्व रहा है, हालांकि इस शब्द का उपयोग उन कार्य कार्यों का वर्णन करने के लिए भी किया जाता है जिनमें मेनफ्रेम शामिल नहीं होते हैं। यह उपयोग उत्पन्न हुआ क्योंकि IBM मेनफ्रेम के प्रशासन में अक्सर कस्टम कोडांतरक कोड (IBM बेसिक असेंबली लैंग्वेज और उत्तराधिकारी | IBM की बेसिक असेंबली लैंग्वेज (BAL)) का लेखन शामिल होता है, जो OS / MVS, DOS / VSE या VM जैसे ऑपरेटिंग सिस्टम के साथ एकीकृत होता है। /सीएमएस। दरअसल, कुछ आईबीएम सॉफ्टवेयर उत्पादों में ग्राहक प्रोग्रामिंग स्टाफ से पर्याप्त कोड योगदान था। इस प्रकार की प्रोग्रामिंग उत्तरोत्तर कम आम है, लेकिन शब्द सिस्टम प्रोग्रामर अभी भी आईबीएम मेनफ्रेम को सीधे प्रशासित करने वाले कर्मचारियों के लिए वास्तविक नौकरी का शीर्षक है।

यह भी देखें

 * ऑस्टरहॉट का द्विभाजन
 * सिस्टम प्रोग्रामिंग भाषा
 * भाषा का अंकन
 * इंटरप्ट हैंडलर

अग्रिम पठन

 * Systems Programming by John J. Donovan