मैं कम स्तर की चीजों के चारों ओर पोक करने के लिए बस एक छोटा कर्नेल लिख रहा हूं। अभी, यह वर्चुअल बॉक्स में बूट हो जाता है और मैं स्क्रीन पर टेक्स्ट प्रदर्शित कर सकता हूं, कुछ मेमोरी आवंटित कर सकता हूं, और अन्य वास्तव में बुनियादी चीजें। यह सी ++ और थोड़ा एएसएम में लिखा गया है।(लेखन कर्नेल) मैं इंटरप्ट डिस्क्रिप्टर तालिका को कैसे संशोधित करूं?
उन चीजों में से एक जो मैं खोजना चाहता था वह बहु-कार्यकलाप के पीछे तंत्र था। मैं यह समझ के रूप में, यह कुछ इस तरह चला जाता है:
- गिरी इंटरप्ट डिस्क्रिप्टर तालिका ताकि व्यवधान समय-समय पर जारी किया जाता है (उदाहरण के लिए एक millisecond) initializes और एक नियमित कर्नेल में परिभाषित कहता है।
- जब दिनचर्या कहा जाता है, तो यह कोड/डेटा सेगमेंट और स्टैक पॉइंटर को किसी अन्य प्रोग्राम के संदर्भ, "संदर्भ-स्विच" पर सेट करने का निर्णय ले सकता है।
तो, यह अवधारणा में सरल लग रहा था, लेकिन मुझे पता था कि विवरण बहुत बालों वाले होने जा रहे थे। मुझे लाइन पर कुछ चीजें मिली हैं, लेकिन शब्दावली बहुत भिन्न होती है, और उदाहरण उन संदर्भों से होते हैं जो मेरे पास नहीं हैं (जैसे कि लिनक्स कर्नेल के भीतर से)।
हालांकि, वर्णनकर्ता टेबल सेट करने के लिए जिस तरह से इस तरह प्रतीत हो रहा है:
- पीआईसी (
outb
और क्या-नहीं) यह प्रारंभ करने के लिए कुछ डेटा भेजें। - मेमोरी में एक इंटरप्ट टेबल तैयार करें, जिसमें आप चाहते हैं कि दिनचर्या के फ़ंक्शन पॉइंटर्स के साथ, सावधान रहें कि फ़ंक्शन सिग्नल हैंडलर होने में सक्षम हैं।
lidt
के साथ तालिका लोड करें।
हालांकि, मुझे इन चीजों को विशेष रूप से करने पर बहुत कुछ नहीं मिल रहा है, या यह भी सही है या नहीं। क्या किसी के पास परेशान कर्नेल लेखक के लिए संसाधन हैं?
दिलचस्प सवाल, यहां एक अच्छा समुदाय है: http://www.osdever.net/ यह नहीं कि यह आपके प्रश्न का सीधे उत्तर देता है, लेकिन वहां कुछ उपयोगी जानकारी है। –
फिर भी बेहतर समुदाय (फोरम और विकी के साथ-साथ संबंधित आईआरसी चैनल - #osdev @ irc.freenode.net) के साथ osdev.org पर पाया जा सकता है। – Griwes