Is is necessary to map the memory allocated to the device by the OS to a virtual memory space? -
उदाहरण एक ड्राइवर लिखते समय हम निम्नलिखित करते हैं
res = platform_get_resource (pdev, IORESOURCE_MEM , 0); हमें डिवाइस पर आवंटित स्मृति के बारे में जानकारी मिलती है।
इसलिए यह आवश्यक है कि मैं इस मेमोरी का उपयोग वर्चुअल पता
< Code> virt_base = ioremap (res- & gt; प्रारंभ, संसाधन_आकार (res)); क्या हम मेमोरी को संबोधित करने के लिए भौतिक पता का उपयोग नहीं कर सकते हैं? अगर हम कर सकते हैं, तो क्या कोई विशिष्ट लाभ हैं वर्चुअल मेमोरी का उपयोग कर या ऐसा कर्नेल कैसे करना चाहता है ...
जी हां, यह बिल्कुल जरूरी है । (X 86 पर) सीपीयू में एक बार पेजिंग सक्षम होने पर, ओएस में दिखाई देने वाले सभी पते (ताकि आप, ड्राइवर डेवलपर) वर्चुअल पतों हैं दूसरे शब्दों में, आपके द्वारा पढ़ा या लिखने वाला कोई भी पता सीपीयू द्वारा एक वर्चुअल पता के रूप में व्याख्या किया जाएगा। यह तब पृष्ठ तालिका पदानुक्रम के माध्यम से जाने के लिए अंत में एक भौतिक पते पर पहुंचने के लिए बस पर आ जाएगा। आप भौतिक पते का उपयोग नहीं कर सकते हैं - वे मैप नहीं किए जाएंगे, या किसी अन्य के साथ मैप नहीं किए जाएंगे तुम्हें चाहिए। यही कारण है कि ioremap मौजूद होना चाहिए और इसका उपयोग किया जाना चाहिए।
Comments
Post a Comment