2008-09-25 22 views
13

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

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

उत्तर

5

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

तुम भी विचार कर सकते हैं:

  • एक नीति आपको दिलचस्प लागू करने के लिए एक और (बहुत सरल) नियोजक को मोड जोड़ा जा रहा है। "उन सभी पर शासन करने के लिए एक कार्यान्वयन" काफी कठिन है (और इससे भी सहमत होना मुश्किल है), लेकिन एक साधारण ओ (एन) शेड्यूलर, यहां तक ​​कि एक प्राथमिक ओ (1) शेड्यूलर भी करना, अपेक्षाकृत सरल रूप से, एल्गोरिदमिक रूप से बोल सकता है। फिर भी, इसे बहुत सारे कोड के माध्यम से पोकिंग की आवश्यकता है।

  • बाहरी हार्डवेयर के एक बहुत ही साधारण टुकड़े के लिए डिवाइस ड्राइवर को लिखना, जैसे 8-बिट माइक्रोकंट्रोलर जो धारावाहिक के माध्यम से संचार करता है, या यहां तक ​​कि आप स्वयं को बनाते हैं। यदि आपके पास कोई हार्डवेयर अनुभव है, तो शायद एक डिवाइस ड्राइवर लिखने का प्रयास करें जो एक एनईएस नियंत्रक का अनुकरण कर सकता है (सीरियल पोर्ट का उपयोग करके कुछ तारों को बिट-बैंग और शायद सीरियल-टू-समांतर शिफ्ट रजिस्टर)। आप वास्तव में एक साधारण 7-सेगमेंट एलईडी डिस्प्ले (जैसे अलार्म घड़ी में), या उनमें से एक छोटा संग्रह चलाने जैसे कुछ भी कर सकते हैं।

5

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

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

+0

[उद्धरण वांछित] में एक विशेषज्ञ हो सकता है कर्नेल डीबगर्स के खिलाफ जा रहा है? मैं एपीआई करने के खिलाफ अपने तर्क के बारे में जानता हूं। – pjc50

+2

क्या यह पर्याप्त पर्याप्त उद्धरण है: http://www.linuxtoday.com/news_story.php3?ltsn=2000-09-07-002-21-OS-CY-KN – zvrba

1

यूनिक्स v6 के आधार पर project शुरू करने के लिए एक अच्छी जगह है। "Xv6, एक सरल यूनिक्स की तरह शिक्षण ऑपरेटिंग सिस्टम"

वहाँ भी है cynix, एक सरल IA-32 अखंड यूनिक्स की तरह गिरी (unmaintained)

एक महान ट्यूटोरियल "Roll your own toy UNIX-clone OS" है।

0

MINIX स्रोत कोड डाउनलोड करने की कोशिश है और इसके साथ खेलते हैं, तर्क को समझने के लिए प्रयास करें और यह समय में कोई संदेह नहीं ले जाएगा, लेकिन यदि आप इसे करने के लिए छड़ी आप लीनुस पर कुछ समय