লিনাক্স কার্নেলের বেশিরভাগ কোড সি-তে লেখা থাকলেও এখনও সেই কোডটির অনেকগুলি অংশ প্ল্যাটফর্মের সাথে চলে যেখানে এটি চলছে এবং এর জন্য অ্যাকাউন্ট নেওয়া দরকার to
এর একটি বিশেষ উদাহরণ ভার্চুয়াল মেমরি যা বেশিরভাগ আর্কিটেকচারে (পৃষ্ঠার সারণির শ্রেণিবিন্যাস) একই ধরণের কাজ করে তবে প্রতিটি স্থাপত্যের জন্য নির্দিষ্ট বিশদ রয়েছে (যেমন প্রতিটি আর্কিটেকচারের স্তরের সংখ্যা, এবং এটি এমনকি এক্স ৮86 এর সাথে বাড়ছে) নতুন বৃহত্তর চিপগুলির পরিচিতি।) লিনাক্স কার্নেল কোডটি এই শ্রেণিবিন্যাসের ট্র্যাভারিং পরিচালনা করতে ম্যাক্রোগুলি প্রবর্তন করে যা পৃষ্ঠাগুলির কম স্তর রয়েছে এমন আর্কিটেকচারের সংকলক দ্বারা পৃথক করা যেতে পারে (যাতে কোডটি সিটিতে লেখা থাকে তবে আর্কিটেকচারের বিশদ গ্রহণ করে) বিবেচনা।)
অন্যান্য অনেকগুলি ক্ষেত্র প্রতিটি আর্কিটেকচারের জন্য খুব সুনির্দিষ্ট এবং খিলান-নির্দিষ্ট কোড দিয়ে পরিচালনা করা প্রয়োজন। এর মধ্যে বেশিরভাগই কোড ভাষা সংসদীয় ভাষায় জড়িত। উদাহরণগুলি হ'ল:
প্রসঙ্গে স্যুইচিং : প্রসঙ্গটি স্যুইচ করাতে প্রক্রিয়াটি স্যুইচ করা হওয়ার জন্য সমস্ত নিবন্ধকের মান সংরক্ষণ করা এবং সিপিইউ-তে নির্ধারিত প্রক্রিয়াটির সেভ করা সেট থেকে নিবন্ধগুলি পুনরুদ্ধার করা। এমনকি নিবন্ধের সংখ্যা এবং সেট প্রতিটি স্থাপত্যের জন্য খুব নির্দিষ্ট very রেজিস্টারগুলিতে সম্পূর্ণ অ্যাক্সেসের অনুমতি দেওয়ার জন্য এবং এটি যথাসম্ভব দ্রুত চালিত হয় তা নিশ্চিত করার জন্য এই কোডটি সাধারণত সমাবেশে প্রয়োগ করা হয়, যেহেতু প্রসঙ্গের স্যুইচিংয়ের কার্যকারিতা সিস্টেমের পক্ষে গুরুত্বপূর্ণ হতে পারে।
সিস্টেম কল : যে ব্যবস্থার সাহায্যে ইউজারস্পেস কোড একটি সিস্টেম কল ট্রিগার করতে পারে তা সাধারণত আর্কিটেকচারের জন্য নির্দিষ্ট (এবং কখনও কখনও এমনকি নির্দিষ্ট সিপিইউ মডেলের ক্ষেত্রেও থাকে, উদাহরণস্বরূপ ইনটেল এবং এএমডি এর জন্য বিভিন্ন নির্দেশনা প্রবর্তন করে, পুরানো সিপিইউগুলিতে সেই নির্দেশাবলীর অভাব থাকতে পারে, সুতরাং বিশদগুলি তাদের জন্য এখনও অনন্য হবে।)
বিঘ্নিত হ্যান্ডলারগুলি : কীভাবে বিঘ্নগুলি (হার্ডওয়্যার বিঘ্নগুলি) পরিচালনা করতে হয় তার বিশদটি সাধারণত প্ল্যাটফর্ম-নির্দিষ্ট থাকে এবং প্ল্যাটফর্মের জন্য ব্যবহৃত নির্দিষ্ট কলিং কনভেনশনগুলি পরিচালনা করতে সাধারণত কিছু সমাবেশ-স্তরের আঠার প্রয়োজন হয়। এছাড়াও, বাধা সক্ষম / নিষ্ক্রিয় করার জন্য আদিমগুলি সাধারণত প্ল্যাটফর্ম-নির্দিষ্ট থাকে এবং এ্যাসেম্বলি কোডও প্রয়োজন।
ইনিশিয়ালাইজেশন : কীভাবে প্রাথমিককরণ হওয়া উচিত তার বিবরণে সাধারণত এমন বিবরণ অন্তর্ভুক্ত থাকে যা প্ল্যাটফর্মের সাথে সুনির্দিষ্ট এবং কার্নেলের প্রবেশ পয়েন্টটি পরিচালনা করতে প্রায়শই কিছু অ্যাসেম্বলি কোড প্রয়োজন। প্ল্যাটফর্মগুলিতে যেগুলি একাধিক সিপিইউ (এসএমপি) রয়েছে, অন্যান্য সিপিইউগুলি অনলাইনে কীভাবে আনতে হবে তার বিবরণগুলি সাধারণত প্ল্যাটফর্ম-নির্দিষ্টও থাকে।
লকিং প্রিমিটিভস : লকিং আদিমগুলির প্রয়োগ (যেমন স্পিনলকস) সাধারণত প্ল্যাটফর্ম-নির্দিষ্ট বিশদও জড়িত, যেহেতু কিছু আর্কিটেকচারগুলি সেগুলি দক্ষতার সাথে বাস্তবায়নের জন্য বিভিন্ন সিপিইউ নির্দেশনা সরবরাহ করে (বা পছন্দ করে)। কেউ কেউ পারমাণবিক ক্রিয়াকলাপ বাস্তবায়ন করবে, কেউ একটি সিএমপিএক্সচজি সরবরাহ করবে যা পরমাণুভাবে পরীক্ষা / আপডেট করতে পারে (তবে অন্য লেখক যদি প্রথমে উপস্থিত হন তবে ব্যর্থ হন), অন্যরা সিপিইউ নির্দেশিকায় "লক" সংশোধক অন্তর্ভুক্ত করবেন। এগুলি প্রায়শই পাশাপাশি সমাবেশ কোড লিখতেও জড়িত।
সম্ভবত অন্যান্য ক্ষেত্রগুলি রয়েছে যেখানে কার্নেলটিতে প্ল্যাটফর্ম- বা আর্কিটেকচার-নির্দিষ্ট কোডের প্রয়োজন (বা, বিশেষত, লিনাক্স কার্নেলের মধ্যে।) কার্নেল উত্স গাছের দিকে তাকালে, আর্কিটেকচার-নির্দিষ্ট সাবট্রিজ রয়েছে যেখানে arch/
নীচে include/arch/
আপনি আরও সন্ধান করতে পারবেন এর উদাহরণ।
কিছু আসলে আশ্চর্যজনক, উদাহরণস্বরূপ আপনি দেখতে পাবেন যে প্রতিটি আর্কিটেকচারে উপলব্ধ সিস্টেম কলগুলির সংখ্যা পৃথক এবং কিছু সিস্টেম কলগুলি কিছু আর্কিটেকচারে উপস্থিত থাকবে এবং অন্যগুলি নয়। (এমনকি x86-তে, সিসকলের তালিকাটি 32-বিট এবং 64-বিট কার্নেলের মধ্যে পৃথক হয় fers)
সংক্ষেপে, কার্নেলের একটি প্ল্যাটফর্মের জন্য নির্দিষ্ট যা সচেতন হওয়া দরকার of লিনাক্স কার্নেল সেগুলির বেশিরভাগ বিমূর্ত করার চেষ্টা করে, তাই উচ্চ-স্তরের অ্যালগরিদম (যেমন মেমরি পরিচালনা এবং সময়সূচী কীভাবে কার্যকর হয়) সি তে প্রয়োগ করা যেতে পারে এবং সমস্ত আর্কিটেকচারে একই (বা বেশিরভাগ একই) কাজ করতে পারে।