2010-12-21 19 views
27

मुझे कोड करना अच्छा लगता है, लेकिन मैं वर्तमान में केवल वेब विकास कर रहा हूं। मैं कुछ ऐसा करना चाहता हूं जो अद्वितीय और मजेदार और वेब प्रोग्रामिंग से बहुत अलग होगा।एक ऑपरेटिंग सिस्टम प्रोग्राम कैसे करें?

हाँ, यह एक बेवकूफ सवाल हो सकता है, लेकिन मुझे लगता है कि यह वास्तव में एक सरल ऑपरेटिंग सिस्टम बनाने के लिए वास्तव में अच्छा होगा। तो कृपया कुछ भी कठोर मत कहो। मैं बस निम्नलिखित चीजों को जानना चाहता हूं:

* कहां से शुरू करें? * संसाधन * मैं किस भाषा का उपयोग करूंगा?

मैं कुछ एक cmd आधारित

+6

आप उस बिंदु तक पहुंचने से पहले बहुत सी कोड लिखेंगे, जहां आप वास्तविक कंसोल/"cmd" सॉफ़्टवेयर लिखेंगे। – Joe

+6

नीचे मतदान के लिए धन्यवाद वास्तविक मदद – Kevin

+11

@ जो ओह लेकिन जो, याद रखें, प्रोग्रामर हमेशा सोचते हैं कि वे अधिक सक्षम हैं तो वे हैं। मजेदार समय तब होता है जब एक शौक परियोजना के रूप में जहां आप अपनी कंपनी के लिए समस्याएं नहीं पैदा करते हैं, आप पाते हैं कि आप वास्तव में ऐसा नहीं कर सकते हैं, और समझ सकते हैं कि वास्तव में कुछ प्रोग्राम करने में कितना लगता है। मुझे उन क्षणों से प्यार है। जब मैं वापस आकर प्रोग्रामर के काम की सराहना करता हूं जो मेरे सामने आए थे और मैंने कभी भी बेहतर प्रदर्शन किया था। – Narcolapser

उत्तर

18

पूर्ण ऑपरेटिंग सिस्टम डिजाइन पर "बाइबल" है और था एंड्रयू Tanenbaum के Operating Systems Design and Implementation - "ड्रैगन" पुस्तक :-)

alt text

अन्य संदर्भ के बहुत सारे हैं, भी, जैसे Developing Your Own 32-Bit Operating System

माइक्रोसॉफ्ट रिसर्च भी/प्रबंधित कोड में एक ऑपरेटिंग सिस्टम बनाने (सी #) पर एक परियोजना पड़ा है Singularity कहा जाता है - लेखन एक पूरा ओएस न एक छोटी सी है और न ही एक त्वरित है कुछ ऐसी जानकारियां दी/कागजात प्रदान कर सकते हैं कि आदि

कार्य, हालांकि .....

+3

एक तस्वीर – Kevin

+3

अच्छी पुस्तक की सिफारिश सहित शामिल करने के लिए धन्यवाद। ड्रैगन पुस्तक "कंपाइलर्स: सिद्धांत, तकनीक, और उपकरण" है, वैसे भी। मुझे एक मजाक याद आना चाहिए ... मुझे लगता है कि पुस्तक एक पढ़ने का राक्षस है। – Jacob

3

प्रारंभ की तरह साधारण सोच रहा था कुछ ऑपरेटिंग सिस्टम किताबें पढ़ने से - Tanenbaums 'Modern operating systems की तरह।

यह आपको एक ऑपरेटिंग सिस्टम लिखने के लिए हल करने की आवश्यकता के बारे में समझने चाहिए।

2

जब आप उनके लिए Google पर कुछ संसाधन हैं, लेकिन मैं आपको इस चरण को लेने के लिए को प्रोत्साहित करता हूं!

ओएस लिखने के लिए, यहां तक ​​कि एक साधारण, आपको एक अच्छी समझ की आवश्यकता होगी कि आपका कंप्यूटर निम्न स्तर पर कैसे काम करता है, और आपको कम से कम सी या सी ++ और अधिमानतः असेंबली की आवश्यकता होगी। इन कौशल के बिना यह एक कठिन और निराशाजनक परियोजना होगी। कुशल सी प्रोग्रामर के लिए भी यह कठिन और चुनौतीपूर्ण है।

5

ये कुछ लिंक प्राप्त करने के लिए आप शुरू कर रहे हैं:

http://www.brokenthorn.com/Resources

http://wiki.osdev.org/Main_Page/

आपका वाला जीसीसी और एनएएसएम की जरूरत है। मुझे लगता है कि आप जीएएसएम का भी उपयोग कर सकते हैं।

BIOS इंटरप्ट्स जानें।

इसके अलावा इससे पहले कि आप भी हड़पने जैसे मानकों का एक समूह शुरू: APIC A20 गेट पीसीआई & PCIEx - गुड लक उन में से एक प्राप्त करने के लिए कोशिश कर रहा। कुछ बदलाव की लागत। इंटेल & एएमडी - इन्हें देखो, आपको बहुत सारी जानकारी मिलती है। वीजीए एटीए & सैटा आदि ... बहुत कुछ हैं।

भी तरह emulators हड़पने: Bochs और qemu

समझ कैसे कंप्यूटर काम करता है, यह है कि यह कैसे बूट है।

वहां बहुत सारी जानकारी है कि आपको बस अपना शोध करना होगा।

शुभकामनाएं।

7

वेबडेव से बैकएंड में स्विच करना काफी निराशाजनक होगा।

सबसे पहले, बोर्ड/हार्डवेयर/आर्किटेक्चर चुनें - शायद एक ओएस सिम्युलेटर के साथ भी जाएं जो आप अपनी मशीन पर चला सकते हैं। सी और कुछ असेंबली (इंटेल, एमआईपीएस, एआरएम, कोल्डफायर/मोटरोला 68k) जानें, इस पर निर्भर करता है कि आप किस सीपीयू आर्किटेक्चर के लिए अपना ओएस बना रहे हैं।

मैंने सी ++ पैकेज देखे हैं जो आपको सी ++ में ओएस बनाने की अनुमति देगा, फिर इसे स्वचालित रूप से आपके लिए असेंबली में परिवर्तित कर दें, लेकिन यह ठीक तरह से परिवर्तित करने के लिए ऐसा सिरदर्द है। मैं उन्हें अनुशंसा नहीं करता।

कोड लिखना शुरू करने से पहले, आपको अपना ओएस डिज़ाइन करना चाहिए। हो सकता है कि कुछ डिज़ाइनों के साथ 50 पेज पेपर में भी अपने डिज़ाइन फैसले रखें।

कुछ बातें सोचने के लिए के बारे में:

  • स्मृति नक्शा (जहां वास्तव में स्मृति आप अपने ओएस के कुछ हिस्सों को लोड करते में, जहां यह निवास करेंगे)
  • कैसे अपने अनुसूचक काम करेगा (प्रक्रिया और/या धागा जागरूक, प्राथमिकताओं)। शायद विभिन्न प्राथमिकताओं के लिए कतार के साथ एक आरेख; विभिन्न कतारों में प्रक्रिया राज्यों के लिए एक आरेख (तैयार, अवरुद्ध, संदेश के लिए प्रतीक्षा, दौड़ना, निष्पादन, बाधित, इत्यादि)
  • इंटरप्रोसेस संचार (मेलबॉक्स, म्यूटेक्स, परमाणुता, सिंक्रोनस बनाम एसिंक्रोनस संचार, message envelopes {sender process id, receiver process id, message type, message} का प्रारूप)
  • कैसे गिरी उपयोगकर्ता मोड बनाम
  • स्मृति आवंटन एल्गोरिदम को संभालने के लिए? -? आप अपने खुद के malloc/मुक्त ऑपरेटर लिखेंगे (कैसे आप ट्रैक रखने के है जब उपयोगकर्ता गतिशील रूप से स्मृति आवंटित करता है आप एक साथी पेड़ algo का उपयोग करेगा लिंक्ड सूची ढेर ? आदि)
  • इंटरप्ट्स को कैसे संभालना है (यहां तक ​​कि संदर्भ स्विच भी यहां जाता है - आप सभी रजिस्टरों को कैसे सहेजेंगे और उन्हें पुनर्स्थापित करेंगे: आपके पास एक स्टैक है जिसे आपको ट्रैक रखने की आवश्यकता है की जहां आप इसे पर)
  • मानक प्रक्रियाओं हैं: कुंजीपटल प्रक्रिया, उत्पादन, समय, पर नजर रखने के
  • समय सेवाओं को जोड़ने का तरीका
  • कैसे उपयोगकर्ता प्रक्रियाओं लोड और
  • जोड़ने के लिए उन्हें चलाने के पूर्वक्रय करने के लिए या नहीं
  • हॉटकी जोड़ें (अपने ओएस esp डीबग करने के लिए उपयोगी। मामले में यह जमा में, आप स्मृति का निरीक्षण करने)
  • अपने OS का परीक्षण गर्म कुंजी जोड़ सकते हैं

संपादित करें - यूआरएल अद्यतन अपनी खुद की 32-बिट ऑपरेटिंग सिस्टम का विकास प्रिंट से बाहर है, लेकिन ऑनलाइन उपलब्ध है: http://www.ipdatacorp.com/mmurtl/mmurtlv1.pdf

2

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

संबंधित मुद्दे