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