भले ही लिनक्स कर्नेल में अधिकांश कोड सी में लिखे गए हैं, फिर भी उस कोड के कई हिस्से हैं जो उस मंच के लिए बहुत विशिष्ट हैं जहां यह चल रहा है और इसके लिए खाते की आवश्यकता है।
इसका एक विशेष उदाहरण आभासी मेमोरी है, जो अधिकांश आर्किटेक्चर (पेज टेबल की पदानुक्रम) पर समान शैली में काम करता है, लेकिन प्रत्येक आर्किटेक्चर के लिए विशिष्ट विवरण है (जैसे प्रत्येक आर्किटेक्चर में स्तरों की संख्या, और यह x86 पर भी बढ़ रहा है नए बड़े चिप्स का परिचय।) लिनक्स कर्नेल कोड इन पदानुक्रमों को ट्रेस करने के लिए मैक्रोज़ का परिचय देता है, जिन्हें आर्किटेक्चर पर कंपाइलर द्वारा समाप्त किया जा सकता है, जिसमें पृष्ठ तालिकाओं के कम स्तर होते हैं (ताकि कोड सी में लिखा हो, लेकिन वास्तुकला का विवरण लेता है। विचार।)
कई अन्य क्षेत्र प्रत्येक वास्तुकला के लिए बहुत विशिष्ट हैं और उन्हें आर्क-विशिष्ट कोड से निपटने की आवश्यकता है। हालांकि इनमें से अधिकांश असेंबली भाषा में कोड शामिल हैं। उदाहरण हैं:
संदर्भ स्विचिंग : संदर्भ स्विचिंग में सीपीयू में निर्धारित प्रक्रिया के सहेजे गए सेट से रजिस्टरों को स्विच आउट होने और फिर से बहाल करने के लिए सभी रजिस्टरों के मूल्य को सहेजना शामिल है। यहां तक कि रजिस्टरों की संख्या और सेट प्रत्येक वास्तुकला के लिए बहुत विशिष्ट है। यह कोड आम तौर पर असेंबली में लागू किया जाता है, रजिस्टरों तक पूर्ण पहुंच की अनुमति देने के लिए और यह सुनिश्चित करने के लिए कि यह जितनी जल्दी हो सके चलता है, क्योंकि संदर्भ स्विचिंग का प्रदर्शन सिस्टम के लिए महत्वपूर्ण हो सकता है।
सिस्टम कॉल : वह तंत्र जिसके द्वारा यूजरस्पेस कोड सिस्टम कॉल को ट्रिगर कर सकता है आमतौर पर आर्किटेक्चर के लिए विशिष्ट होता है (और कभी-कभी विशिष्ट सीपीयू मॉडल के लिए भी, उदाहरण के लिए इंटेल और एएमडी ने इसके लिए अलग-अलग निर्देश पेश किए हैं, पुराने सीपीयू में उन निर्देशों की कमी हो सकती है, इसलिए विवरण उन लोगों के लिए अभी भी अद्वितीय होगा।)
इंटरप्ट हैंडलर : इंटरप्ट (हार्डवेयर इंटरप्ट) को कैसे हैंडल करना है, इसका विवरण आमतौर पर प्लेटफ़ॉर्म-विशिष्ट होता है और आमतौर पर प्लेटफ़ॉर्म के लिए उपयोग में आने वाले विशिष्ट कॉलिंग सम्मेलनों को संभालने के लिए कुछ असेंबली-स्तरीय गोंद की आवश्यकता होती है। इसके अलावा, इंटरप्ट को सक्षम / अक्षम करने के लिए प्राइमेट आमतौर पर प्लेटफ़ॉर्म-विशिष्ट होते हैं और साथ ही असेंबली कोड की आवश्यकता होती है।
प्रारंभिककरण : आरंभिक कैसे होना चाहिए इसका विवरण भी आमतौर पर उन विवरणों को शामिल करता है जो मंच के लिए विशिष्ट होते हैं और कर्नेल में प्रवेश बिंदु को संभालने के लिए अक्सर कुछ विधानसभा कोड की आवश्यकता होती है। जिन प्लेटफार्मों पर कई सीपीयू (एसएमपी) होते हैं, वे अन्य सीपीयू को ऑनलाइन कैसे लाते हैं, इसका विवरण आमतौर पर प्लेटफॉर्म-विशिष्ट होता है।
लॉकिंग प्रिमिटिव्स : लॉकिंग प्राइमेटिक्स (जैसे स्पिनलॉक) के कार्यान्वयन में आमतौर पर प्लेटफ़ॉर्म-विशिष्ट विवरण शामिल होते हैं, क्योंकि कुछ आर्किटेक्चर कुशलतापूर्वक लागू करने के लिए विभिन्न सीपीयू निर्देश प्रदान करते हैं (या पसंद करते हैं)। कुछ परमाणु संचालन को कार्यान्वित करेंगे, कुछ एक cmpxchg प्रदान करेंगे जो परमाणु परीक्षण / अद्यतन कर सकते हैं (लेकिन यदि किसी अन्य लेखक को पहली बार मिला है), तो अन्य में CPU निर्देशों में "लॉक" संशोधक शामिल होगा। इनमें अक्सर असेंबली कोड लिखना भी शामिल होगा।
संभवत: अन्य क्षेत्र हैं जहां एक कर्नेल (या, विशेष रूप से, लिनक्स कर्नेल में) प्लेटफ़ॉर्म या आर्किटेक्चर-विशिष्ट कोड की आवश्यकता होती है। कर्नेल स्रोत ट्री को देखते हुए, आर्किटेक्चर-विशिष्ट उपप्रकार हैं जिसके तहत arch/
और include/arch/
जहाँ आप अधिक पा सकते हैं। इसके उदाहरण हैं।
कुछ वास्तव में आश्चर्य की बात है, उदाहरण के लिए आप देखेंगे कि प्रत्येक आर्किटेक्चर पर उपलब्ध सिस्टम कॉल की संख्या अलग है और कुछ सिस्टम कॉल कुछ आर्किटेक्चर में मौजूद होंगे, अन्य में नहीं। (X86 पर भी, syscalls की सूची 32-बिट और 64-बिट कर्नेल के बीच भिन्न होती है)
संक्षेप में, बहुत सारे मामलों में एक कर्नेल के बारे में पता होना चाहिए जो एक मंच के लिए विशिष्ट हैं। लिनक्स कर्नेल उन सभी को अमूर्त करने की कोशिश करता है, इसलिए उच्च-स्तरीय एल्गोरिदम (जैसे कि स्मृति प्रबंधन और शेड्यूलिंग कार्य) C में कैसे लागू किए जा सकते हैं और सभी आर्किटेक्चर पर समान (या अधिकतर समान) काम कर सकते हैं।