क्यों नहीं एक उच्च स्तरीय भाषा आधारित ओएस है? क्या निम्न स्तर की भाषाएँ अधिक कुशल हैं?


44

अनुमान के बिना, मैं इस बात की संभावना पर विचार करना चाहूंगा। अधिकांश OS आज बहुत निम्न स्तर की भाषाओं पर आधारित हैं (मुख्यतः C / C ++) यहाँ तक कि नए जैसे कि Android JNI और C में अंतर्निहित कार्यान्वयन का उपयोग करता है

वास्तव में, (यह एक व्यक्तिगत अवलोकन है) सी में लिखे गए कई कार्यक्रम अपने उच्च स्तर के समकक्षों की तुलना में बहुत तेजी से चलते हैं (जैसे: ट्रांसमिशन (उबंटू पर एक बिटोरेंट क्लाइंट) वुज़ (जावा) या डेल्यूज (पायथन) की तुलना में बहुत अधिक तेज है )। यहां तक ​​कि पायथन कंपाइलर C में लिखे गए हैं, हालांकि PyPy एक अपवाद है।

तो क्या इसकी कोई खास वजह है? ऐसा क्यों है कि महान "ओओपी" अवधारणाओं के साथ हमारे सभी तथाकथित "उच्च स्तरीय भाषाएं" का उपयोग ठोस ओएस बनाने में नहीं किया जा सकता है?

इसलिए मेरे पास मूल रूप से 2 प्रश्न हैं।

  1. निम्न स्तर की भाषाओं में लिखे गए एप्लिकेशन उनके एचएलएल समकक्षों की तुलना में अधिक कुशल क्यों हैं? क्या निम्न स्तर की भाषाएँ सरल कारण के लिए बेहतर प्रदर्शन करती हैं कि वे निम्न स्तर की हैं और मशीन कोड में अनुवादित हैं आसान?
  2. हमारे पास पूर्ण रूप से उच्च स्तर की भाषा पर आधारित OS क्यों नहीं है?

36
आप का अर्थ है कि केवल "उच्च स्तरीय भाषाएं" ऑब्जेक्ट ओरिएंटेड हैं, जो सच नहीं है।
उउउ

2
@rtindru "सुंदर निम्न-स्तरीय भाषा" (मुख्य रूप से C / C ++)? फिर उच्च-स्तरीय भाषा की आपकी परिभाषा क्या है? आपको उच्च-स्तरीय भाषा की अपनी परिभाषा / व्याख्या के बारे में स्पष्ट होना चाहिए। पायथन वास्तव में एक स्क्रिप्टिंग भाषा है क्योंकि यह सीधे अपने इंजन (आईडीएलई या कमांड लाइन टर्मिनल) पर निष्पादित होता है, अगर आपको अब तक इसका एहसास नहीं हुआ था। एक बहुत अच्छा कारण है (दार्शनिक और व्यावहारिक) क्यों सी / सी ++ का उपयोग बहुत सारी ओएस के लिए कार्यान्वयन भाषाओं के रूप में किया जाता है, लेकिन मुझे यकीन है कि यहां के बिजली उपयोगकर्ता शायद इस सवाल के लिए उसमें नहीं कूदेंगे।
नागफनी

10
एंड्रॉइड एक नया ओएस नहीं है। यह सिर्फ एक और लिनक्स स्वाद है।
डेन

3
@ फगूबियर एक बहुत अच्छा कारण है (दार्शनिक और व्यावहारिक) क्यों ओएस के बहुत सारे के लिए कार्यान्वयन भाषाओं के रूप में C / C ++ का उपयोग किया जाता है । यह बहुत अच्छा कारण क्या है?
rtindru

2
अगर मैं सही तरीके से समझूं, तो LISP मशीनों के लिए OS LISP में लिखा गया था। हालाँकि शायद यह तर्क दिया जा सकता है कि बोली जाने वाली भाषा निम्न स्तर की भाषा थी?
रॉबर्ट फिशर

जवाबों:


38

यदि आप एकवचन में देखें तो Microsoft ने इस दिशा में कुछ बहुत ही रोचक शोध किए हैं:

http://research.microsoft.com/en-us/projects/singularity/

इसके अलावा, Mothy Roscoe et al Barrelfish पर काम कर रहा है, जो सभी प्रकार के OS प्रबंधन और संसाधन आवंटन समस्याओं को सुलझाने के लिए एक OS सेवा के रूप में ग्रहण बाधा प्रोग्रामिंग भाषा का उपयोग करता है:

http://www.barrelfish.org/


वाह, मैं वोट नहीं कर सकता, 15 प्रतिनिधि की जरूरत है ... आज ही शामिल हुए! बहुत बहुत धन्यवाद।
rtindru

9
@ आर्टिंड्रू: 1 प्रतिनिधि बिंदु के साथ भी आप एक उत्तर स्वीकार कर सकते हैं इसका क्या मतलब है जब एक उत्तर "स्वीकार" किया जाता है?
मार्जन वेनेमा

6
एक उत्तर को स्वीकार करने से नए उत्तर / चर्चा में कटौती होती है। व्यक्तिगत रूप से, मैं कम से कम एक और दिन के लिए (इस विशिष्ट प्रश्न के लिए) स्वीकार करने के खिलाफ सिफारिश करूंगा।
ब्रायन

1
मैं कॉसमॉस को गुच्छा में जोड़ूंगा: ओपन सोर्स, थर्ड पार्टी, विलक्षणता जितना दिलचस्प नहीं, लेकिन कुछ अच्छे विचार हैं! cosmos.codeplex.com
लोरेंजो डेमेटे

38

बहुत कुछ इस बात पर निर्भर करता है कि आपने निम्न-स्तरीय और उच्च-स्तरीय भाषाओं के बीच विभाजन कहाँ रखा है। उदाहरण के लिए, विभिन्न लोग उस विभाजन के विभिन्न पक्षों पर C ++ जैसी भाषा डालते हैं।

आपके सवालों के बारे में:

  1. मेरा मानना ​​है कि निम्न-स्तरीय और उच्च-स्तरीय भाषाओं के बीच ऐसा अंतर है, लेकिन व्याख्यात्मक भाषाओं और भाषाओं के बीच एक अंतर है जो मूल निर्देशों के अनुरूप है।

    लेकिन प्रोग्रामर के बीच संस्कृति में भी अंतर हो सकता है, जहां एक बार जो निम्न स्तर की भाषा का उपयोग करते हैं वे (डिजाइन) विकल्पों के प्रदर्शन पहलुओं पर अधिक ध्यान केंद्रित करते हैं।

  2. यदि आप C ++ को उच्च-स्तरीय मानते हैं, तो कम से कम एक OS पूरी तरह से उच्च-स्तरीय भाषा में लिखा गया है (सिम्बियन OS C ++ में लिखा गया है)। सबसे उच्च-स्तरीय भाषाओं में ओएस लिखने से आपको क्या रोकता है दो चीजें हैं:

    • एक OS को मेमोरी और हार्डवेयर तक निम्न-स्तरीय पहुंच की आवश्यकता होती है और उन पर गंदी चालें चलती हैं। इस तरह की पहुंच को आमतौर पर एप्लिकेशन-स्तरीय कार्यक्रमों के लिए असुरक्षित माना जाता है, इसलिए कई उच्च-स्तरीय भाषाएं इसकी अनुमति नहीं देती हैं।
    • एक OS को सपोर्ट सॉफ़्टवेयर के बिना निष्पादित करने की आवश्यकता है, जैसे दुभाषिए। इससे एक भाषा में ओएस लिखना बेहद मुश्किल हो जाता है जिसे आसानी से देशी निर्देशों में संकलित नहीं किया जा सकता है।

35
एक व्याख्या की गई भाषा या ऐसी भाषा नहीं है जो मूल निर्देशों के लिए संकलित हो। एक भाषा गणितीय नियमों का एक समूह है, इसे न तो व्याख्यायित किया जाता है और न ही संकलित किया जाता है । Interp। और COMP। भाषा, नहीं, दुभाषिया या संकलक के लक्षण हैं। हर भाषा को एक संकलक या एक दुभाषिया का उपयोग करके लागू किया जा सकता है। आज अधिकांश भाषाओं में कार्यान्वयन की व्याख्या और संकलन दोनों हैं। सी के लिए दुभाषिए हैं और सभी प्रमुख जावास्क्रिप्ट कार्यान्वयन देशी कोड के लिए संकलित हैं। और वैसे भी देशी कोड क्या है? अगर मैं जावा को JVM बायटेकोड पर संकलित करता हूं और चलाता हूं
Jörg W Mittag

11
एक जावा सीपीयू पर, और मैं सी को एआरएम मशीन कोड में संकलित करता हूं और एक एआरएम दुभाषिया पर चलाता हूं क्योंकि मेरे पीसी में एआरएम सीपीयू नहीं है, फिर एआरएम देशी और जेवीएमएल क्या नहीं बनाता है?
जोर्ग डब्ल्यू मित्तग

5
@ JörgWMittag: यदि आपके पास एक सीपीयू है जो सीधे जावा बाइटकोड (अतिरिक्त जेवीएम का उपयोग किए बिना) निष्पादित कर सकता है, तो जावा बायटेकोड उस सीपीयू के लिए मूल कोड है। इसके अलावा, मैं एक ऐसी भाषा में ओएस लिखने की संभावना से इनकार नहीं करता, जिसे आम तौर पर वीएम में व्याख्या या निष्पादित किया जाता है, लेकिन यह उन्हें कम स्पष्ट विकल्प बनाता है।
बार्ट वैन इनगेन शेनौ

15
@ JörgWMittag - मैं मानता हूं कि किसी भी भाषा को संकलित किया जा सकता है या व्याख्या की जा सकती है (एक संकलन स्क्रिप्ट संकलित करें; व्याख्या की गई C ++ (CINT / Cling) का उपयोग करें), लेकिन भाषा के डिजाइन में कई निर्णय इस पर आधारित हैं, इसकी व्याख्या, संकलित, या दोनों होगी। एक ऐसी भाषा जो आपको मैन्युअल रूप से टाइप किए गए वैरिएबल्स को मैन्युअल रूप से घोषित / आरंभ करने, मैन्युअल रूप से / मुक्त मेमोरी आवंटित करने, पॉइंटर अंकगणित करने के लिए याद करती है, याद रखें कि सरणी सीमाएं एक दुभाषिया में कम सुविधाजनक होंगी (बनाम एक भाषा जो कचरा इकट्ठा करती है स्मृति, टाइपिंग डायनामिक प्रकार, सरणी सीमा की जाँच करता है)। क्या यह लाइन 100% स्पष्ट है? नहीं, लेकिन व्यवहार में अंतर मौजूद है।
जिम्बॉब

15

इसके कई अच्छे कारण हैं।

आज की निम्न-स्तरीय भाषा कल की उच्च-स्तरीय भाषा थी

हाँ, मानो या न मानो, एक बार भी सी को उच्च-स्तरीय भाषा के रूप में देखा गया था। यहां तक ​​कि ~ 20 साल पहले इसे "मध्य-स्तर" भाषा के रूप में वर्णित देखना काफी आम था। यह ऐसा समय था जब ओओ जितना लोकप्रिय था, आज से पहले, जावा अस्तित्व में नहीं था, सी # मौजूद नहीं था, यहां तक ​​कि सी ++ भी अभी तक मानकीकृत नहीं था।

ऐतिहासिक जड़ता

ऑपरेटिंग सिस्टम जो आप आज उपयोग करते हैं, उनकी इतिहास में गहरी जड़ें हैं। विंडोज जल्दी / मध्य 80 के दशक में वापस चला जाता है, यूनिक्स शुरुआती / मध्य 70 के दशक में वापस चला जाता है। ऑपरेटिंग सिस्टम में पुराने, वर्किंग कोड की एक बहुत कुछ है, और आप आमतौर पर पुराने, वर्किंग कोड को फिर से लिखना नहीं चाहते हैं।

कुछ बिंदु पर आपको हार्डवेयर के नीचे जाना होगा

यह कर्नेल में होता है, यह ड्राइवरों में होता है, यह मेमोरी मैनेजमेंट सबसिस्टम में होता है, यह फाइल सिस्टम में होता है। सुनिश्चित करें कि आप इसके ऊपर एक उच्च-स्तरीय भाषा को परत कर सकते हैं, लेकिन आपको अभी भी हार्डवेयर की सीधे पहुंच की क्षमता की आवश्यकता है जो निम्न-स्तरीय भाषा प्रदान करता है।

पोर्टेबिलिटी

मैं अलग हार्डवेयर या एक अलग OS के लिए पोर्टेबिलिटी का मतलब नहीं है क्योंकि यह आज अधिक सामान्यतः समझा जाता है; यह अधिक सूक्ष्म है। किसी चीज़ के लिए C- आधारित इंटरफ़ेस प्रदान करने का एक बड़ा फायदा है, और यह तथ्य यह है कि लगभग हर दूसरी भाषा जो मौजूद है वह सी से लिंक कर सकती है। यहां तक ​​कि Windows API अभी भी उस कारण से C- आधारित API है।

व्यक्तिगत प्राथमिकता

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

साथ में, ये स्पष्ट रूप से स्थापित होना चाहिए कि एक ऑपरेटिंग सिस्टम मूल रूप से पुराने दिनों में सी बैक जैसी किसी चीज़ में क्यों लिखा गया था, और क्यों इसके बहुत महत्वपूर्ण हिस्से - आज भी - इतने ही बने हुए हैं।


13

ऑपरेटिंग सिस्टम के लिए सी के प्रभुत्व का एक मुख्य कारण इतिहास में निहित है - विंडोज की वर्तमान मुख्यधारा ऑपरेटिंग सिस्टम और यूनिक्स के सभी प्रकार (बीएसडी, सोलारिस, एचपी-यूएक्स, मैकओएस एक्स, ... साथ ही लिनक्स जैसे क्लोन) वापस जाते हैं। एक लंबे समय से पहले, OO और अन्य "उच्च स्तर" के निर्माण मुख्यधारा बन गए थे।

प्रदर्शन के अलावा ऑपरेटिंग सिस्टम के मूल के लिए हार्डवेयर निर्देशों के बारे में बहुत विशिष्ट होने की आवश्यकता होती है और किसी को मेमोरी पर पूर्ण नियंत्रण की आवश्यकता होती है जो C जैसी भाषाएं बहुत अच्छा करती हैं।

एम्बेडेड सिस्टम के लिए कभी-कभी सिस्टम के अधिक हिस्सों के लिए उच्च स्तरीय भाषाओं का उपयोग करके ऑपरेटिंग सिस्टम होते हैं। एक उल्लेखनीय उदाहरण जावा द्वारा सन है।

व्यापक ऑपरेटिंग सिस्टम के लिए, C का उपयोग न करने का एक उल्लेखनीय उदाहरण MacOS X से पहले का क्लासिक MacOS है - जो पास्कल की एक बोली में लिखे गए बड़े हिस्सों में था, जो ऑब्जेक्ट ओरिएंटेशन के कुछ प्रकार की अनुमति देता था।


12

सबसे पहले, कुछ बूटस्ट्रैप मुद्दे हैं। उच्च स्तरीय भाषाओं को आसान बनाने वाली अधिकांश विशेषताएं उन सार पर आधारित होती हैं जो एक कर्नेल को स्वयं प्रदान करनी चाहिए। आप जिस भाषा में मेमोरी मैनेजर की आवश्यकता होती है, उसे मेमोरी मैनेजर कैसे लिखते हैं? आप अपनी भाषा के अच्छे I / O मानक पुस्तकालयों का उपयोग किए बिना I / O ड्राइवर कैसे लिखते हैं? आप भाषा के पुस्तकालयों का उपयोग किए बिना थ्रेडिंग और सिंक्रोनाइज़ेशन प्राइमेटिव कैसे बनाते हैं?

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

दूसरे शब्दों में, जब आप सभी सीमाओं और संशोधनों को स्वीकार करते हैं, तो आपको C और C ++ बहुत आसान लगने लगते हैं।


2
आपके पहले पैराग्राफ का कोई मतलब नहीं है। C में I / O ड्राइवर उपयोग नहीं करता है stdio.h। एक कस्टम म्यूटेक्स कार्यान्वयन pthreads का उपयोग नहीं करता है। यह ठीक है कि इसे अपने आप को लागू करने का क्या मतलब है! और यह उस भाषा से स्वतंत्र है जिसका आप उपयोग कर रहे हैं। यह कहना नहीं है कि उच्च स्तर की भाषा निम्न स्तर के कार्यों के लिए एक अच्छा विकल्प है (वे आमतौर पर मेरे अनुभव में नहीं हैं)।

मुझे यह बात पता है। मैं सिर्फ यह इंगित कर रहा हूं कि निम्न स्तर की भाषा से उच्च स्तर को अलग करने वाली भाषा के उन हिस्सों में बहुत कुछ है जो कर्नेल विकास में अनुपलब्ध हैं। जब आप भाषाओं की कोर से तुलना करते हैं, तो सी किसी भी अधिक संयमी नहीं लगती है।
कार्ल बेवेलफेल्ट

बिल्कुल सच नहीं है। जब आपको X को लागू करने के लिए X का उपयोग न करने वाले कुछ कोड की आवश्यकता होगी , शेष सभी कोड उस कोड पर निर्भर हो सकते हैं और X का उपयोग कर सकते हैं।

ये एक अच्छा बिंदु है।
कार्ल ब्वेलफेल्ट

6

सबसे पहले, बूटस्ट्रैपिंग के लिए विधानसभा या समकक्ष में कम से कम एक छोटा भाग लिखा जाना चाहिए।

दूसरा, एक ओएस था जिसे निर्विवाद रूप से एचएलएल - लिस्प मशीन में लिखा गया था । (यह तथ्य कि यह व्यावसायिक रूप से विफल हो गया था, अन्य हार्डवेयर के साथ तेजी से सस्ता हो गया था और वॉर्स की जीत इसके दर्शन या डिजाइन की कमियों से बेहतर है)।

तीसरा, सी ++ काफी ऑब्जेक्ट-ओरिएंटेड और उच्च स्तर है, इसलिए, जैसा कि अन्य ने बताया है, सिम्बियन ओएस एक और उदाहरण है।

चौथा, इस समय नए OSes की बहुत कम आवश्यकता है। हमारे पास पहले से ही काफी कुछ linux और bsd फ्लेवर हैं जो किसी भी हार्डवेयर के बारे में बताते हैं, और स्क्रैच से बिल्कुल नया OS बनाना काफी महंगा है।


आप Broughs B5000 मेनफ्रेम से चूक गए। उनका ऑपरेटिंग सिस्टम बरोज़ एक्सटेंडेड ALGOL में लिखा गया था।
बजे जॉन आर। स्ट्रॉहम जूल

1
there is little need for new OSes at this timeमैंने अभी भी खुद को तय नहीं किया है कि यह सच है या नहीं .. हाँ, आधुनिक ओएस (आधुनिक विंडोज़ (एनटी) / आधुनिक यूनिक्स) हम सभी की ज़रूरत है, कार्यक्षमता और प्रदर्शन बुद्धिमान हैं। लेकिन मुश्किल से: वे एक अन्य क्षेत्र में पैदा हुए हैं जहां "नेट" कॉर्पोरेट / विश्वविद्यालय और उपयोगकर्ताओं पर भरोसा किया गया था, और मल्टीकोर 2/4 प्रोसेसर था। वे विश्वास के अतिरेक (rootkits, मैलवेयर, वायरस ..) से कुछ हद तक "त्रस्त" हैं। मुझे लगता है कि वहाँ एक आधुनिक, सुरक्षित, अलग ओएस के लिए जगह शुरू कर रहा हूँ ... समानता के लिए बेहतर समर्थन के साथ भी (बेहतर है तो धागे)
लोरेंजो डेमेटे

लिस्प है निम्न स्तर, CARऔर CDRकर रहे हैं आईबीएम 704 मैक्रो कोडांतरक ! यहां तक ​​कि C किसी अन्य फ़ंक्शन के रूप में व्यवहार करने के बजाय इनलाइन असेंबली को अलग करता है। लिस्प की CARऔर CDRx86, ARM और ISAs के एक होस्ट पर काम करते हुए, यह कुछ प्रभावशाली पोर्टेबल असेंबली है। (किसी के लिए साइड नोट मैं उलझन में हो सकता है: हाँ, लिस्प एक उच्च स्तरीय भाषा है। CARऔर CDRअसेंबलर मैक्रोज़ होने के नाते सिर्फ एक कार्यान्वयन विवरण था, एक प्रमुख विशेषता नहीं;))
8bittree

4

बेहतर चरण के लिए जो मैंने पहले लिखा था।

बरोज़ 5xxx - 6xxx मशीनों में असेंबली भाषा नहीं थी। सबसे कम उपलब्ध भाषा अल्गोल का विस्तार था। Algol को हार्डवेयर में लागू किया गया था। ओएस और सभी भाषाओं को अल्गोल में लिखा गया था। इसने उस समय की सभी प्रतियोगी मशीनों को पीछे छोड़ दिया। इसमें काफी कम कोड की भी आवश्यकता होती है, जिससे इसे बनाए रखना बहुत आसान हो जाता है। इसमें स्टैक हार्डवेयर होता था जो इस तरह के अल्गोल का पुनरावर्ती भाषा का समर्थन करता था।

बर्रोज़ ऑपरेटिंग सिस्टम एक संस्करण में विकसित हुआ जिसे MCP कहा जाता है। वर्तमान में MCP Unisys सिस्टम पर चलता है।


3

आपके द्वारा उल्लिखित अधिकांश उच्च-स्तरीय भाषाओं में एक विशेषता है जो ऑपरेटिंग सिस्टम के साथ अच्छी तरह से फिट नहीं है: स्वचालित स्मृति प्रबंधन। वास्तविक समय प्रणाली लिखते समय आप कचरा उठाने वाले पर भरोसा नहीं कर सकते हैं - या तो नरम (जो एक ऑपरेटिंग सिस्टम है) या यहां तक ​​कि सबसे कठिन। तनबेनम को उद्धृत करने के लिए [i]:

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

अब, आप तर्क दे सकते हैं कि C ++ भी एक अच्छा उम्मीदवार है क्योंकि यह मैनुअल मेमोरी प्रबंधन प्रदान करता है। सी ++ पहले से ही कुछ ऑपरेटिंग सिस्टम जैसे सिम्बियन ( बार्ट द्वारा उल्लिखित ) और बीओएस में उपयोग किया गया है। लेकिन IMHO C अभी भी सबसे तेज़ भाषा है जिसे कई आर्किटेक्चर में एक विशाल प्रयास के बिना पोर्ट किया जा सकता है (एक विशिष्ट वास्तुकला के संयोजन के विपरीत)।

[i]: आधुनिक ऑपरेटिंग सिस्टम ३ संस्करण, पृष्ठ Operating३


3
प्रतीक मशीनों में स्वचालित मेमोरी प्रबंधन था। स्मॉलटाक ने एक ऑल्टो पर किया। जो कि 80 के दशक में था। एक रैखिक प्रकार की प्रणाली जीसी के लिए आवश्यकता को पूरी तरह से हटा देती है। इन समस्याओं को हल किया जाता है, अगर केवल हम याद कर सकते हैं!
फ्रैंक शीयर

स्वचालित स्मृति प्रबंधन को शामिल करना भाषा के लिए संभव होगा, लेकिन एक विशेष प्रकार के "डीप-पिनड" संदर्भ को शामिल करें और तरीकों को स्पष्ट रूप से घोषित करने की अनुमति दें कि वे किसी भी गैर-पिन किए गए संदर्भ का उपयोग नहीं करेंगे और न ही ऐसा करने वाले किसी भी तरीके को लागू करेंगे। एक विधि में चल रहे कोड के साथ हस्तक्षेप करने के लिए स्टॉप-द-वर्ल्ड कचरा कलेक्टर की कोई आवश्यकता नहीं होगी, जो कि जीसी द्वारा संशोधित की जा सकने वाली किसी भी वस्तु तक पहुंचने के लिए नहीं थी।
सुपरकैट

2

जैसा कि अन्य ने बताया है, कई ऑपरेटिंग सिस्टम उच्च स्तरीय भाषाओं में लिखे गए हैं। शायद आपका क्या मतलब है कि सभी सफल, बड़े पैमाने पर बाजार, सामान्य उद्देश्य ओएस को विधानसभा, सी, और सी ++ के कुछ संयोजन में लिखा गया है?

अधिकांश उच्च स्तरीय भाषाओं में सहायक विशेषताओं के टन होते हैं जो एक संबंधित प्रदर्शन लागत को वहन करते हैं। स्वचालित स्मृति प्रबंधन एक स्पष्ट उदाहरण है, सरणियों की सीमा जाँच एक और है। यदि आप एक सामान्य उद्देश्य ओएस लिख रहे हैं, तो आप उन स्थितियों में भाग लेने की संभावना रखते हैं, जहां इन सहायक सुविधाओं का प्रदर्शन जुर्माना भुगतान करने के इच्छुक हैं। उस बिंदु पर आप उन्हें बंद करने में सक्षम होना चाहते हैं। पायथन, सी #, और जावा जैसी भाषाएं अलग-अलग हैं जिनमें आप बंद कर सकते हैं, लेकिन उनमें से कोई भी इस संबंध में सी या सी ++ की तरह बहुमुखी नहीं है।

इस पहलू में C और C ++ लगभग शुद्ध विधानसभा की तरह बहुमुखी हैं। यदि आप यह तय करते हैं कि आपको दस अलग-अलग मेमोरी आवंटन परिदृश्यों को कवर करने वाले दस अलग-अलग मेमोरी मैनेजरों की आवश्यकता है, तो आप उन सभी को C और C ++ में लागू कर सकते हैं, और उन्हें फिट होने पर लोड और अनलोड कर सकते हैं। यदि आप नहीं करना चाहते हैं तो बिल्ली, आपको मानक सी रनटाइम लाइब्रेरी या स्टार्टअप कोड से लिंक करने की आवश्यकता नहीं है।


0

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

ओबेरॉन और विलक्षणता जैसे अनुसंधान के प्राथमिक उद्देश्य के साथ उच्च स्तर की भाषाओं में लिखे गए विभिन्न ओएस हैं ।

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