অনেক সাধারণ ইউজার এবং অনেক লিনাক্স ফ্যানের কাছে লিনাক্স হচ্ছে একটি অপারেটিং সিস্টেম। কিন্তু প্রকৃতপক্ষে লিনাক্স একটি কার্নেলের নাম — আর এই কার্নেল হচ্ছে সেই জিনিষের নাম যেটা অপারেটিং সিস্টেম রান করতে সাহায্য করে। অনেক আলাদা আলাদা লিনাক্স ডিস্ট্রিবিউশন রয়েছে, ডিস্ট্র গুলো একে অপরের থেকে আলাদা হলেও প্রত্যেকের মধ্যে একটি কমন ব্যাপার হয়েছে আর তা হচ্ছে লিনাক্স কার্নেল! এখন অনেক সাধারণ ইউজারের মনেই প্রশ্ন জাগবে, “কি এই লিনাক্স কার্নেল?” — ঠিক এই প্রশ্নের উত্তরটি দেওয়ার জন্য এই আর্টিকেলটি।
আমি এই আর্টিকেলে যথা সম্ভব চেষ্টা করেছি লিনাক্স কার্নেল নিয়ে সাধারন মানুষের ভাষায় বাখ্যা করতে, অনেক কম টেকনিক্যাল টার্ম ইউজ করা হয়েছে তাই আপনি সহজেই সবকিছু বুঝে উঠতে সক্ষম হতে পারবেন। যাই হোক, পূর্বেও আমি কার্নেল নিয়ে আলোচনা করেছি, এই আর্টিকেল থেকে পড়ে নিতে পারেন। তবে আজকের এই আর্টিকেলটি বিশেষ করে লিনাক্সের উপর ডেডিকেটেড এবং কিছু বিস্তারিত টার্ম আলোচনা করা হয়েছে।
এই আর্টিকেলের বিষয়বস্তু সমূহ
কার্নেল কি?
প্রত্যেকটি অপারেটিং সিস্টেম কার্নেল ব্যবহার করে, কার্নেল ছাড়া এমন কোন অপারেটিং সিস্টেমের অস্তিত্ব সম্ভব নয় যেটা কাজ করবে। ম্যাক ওএস, উইন্ডোজ ওএস, এবং লিনাক্স — এরা প্রত্যেকের কার্নেল ইউজ করে এবং প্রত্যেকের কাজ করার ধরন আলাদা আলাদা। কার্নেল কোন অপারেটিং সিস্টেম রান করার মোক্ষম ভূমিকা পালন করলেও শুধু কার্নেল কিন্তু একা অপারেটিং সিস্টেমকে রান করতে পারে না। কার্নেলের সাথে অনেক অ্যাপলিকেশন এর ব্যান্ডেল থাকে যেগুলো একত্রে মিলে একটি প্যাকেজ তৈরি করে এবং সম্পূর্ণ অপারেটিং সিস্টেমকে রান করে।
যদি আম জনতার ভাষায় বলতে চাই “কার্নেল কি?” — কার্নেলের চাকুরী হচ্ছে হার্ডওয়্যার এবং সফটওয়্যারের মধ্যে কথা বলা এবং যতোটা বেস্ট সম্ভব সিস্টেম রিসোর্স ম্যানেজ করা। কার্নেলের সাথে কার্নেল মডিউল আগে থেকেই ইন্সটল করা থাকে বা পরে আলাদা করে ইন্সটল করা যায়, কার্নেল মডিউলকে আপনি ডিভাইজ ড্রাইভার ও বলতে পারেন। কার্নেল হার্ডওয়্যার ড্রাইভারের সাহায্য নিয়ে হার্ডওয়্যারের সাথে কথা বলে।
ধরুন আপনি আপনার মিউজিক প্লেয়ারে ভলিউম বানানোর নির্দেশ দিলেন, এখন আপনার মিউজিক প্লেয়ার কিন্তু সরাসরি স্পীকারের ভলিউম বাড়াতে বা কমাতে সক্ষম নয়। আপনার প্লেয়ার সফটওয়্যারটি কার্নেলের কাছে একটি রিকোয়েস্ট রাখে, কার্নেল সাউন্ড ড্রাইভারের সাহায্যে হার্ডওয়্যারের সাথে যোগাযোগ করে ভলিউম কমানো বা বাড়ানোর কাজ করে থাকে। তাছাড়া সিস্টেমের রিসোর্স ম্যানেজ করার জন্যও কার্নেলের বিরাট ভূমিকা রয়েছে। কোন অ্যাপলিকেশন রান করার জন্য সিস্টেমে যথেষ্ট মেমোরি ফাঁকা রয়েছে কিনা, তাছাড়া কোন অ্যাপলিকেশনকে মেমোরির সঠিক স্থানে প্লেসমেন্ট, প্রসেসরের প্রসেসিংকে অপ্টিমাইজ করা যাতে প্রসেস গুলো দ্রুত সম্পূর্ণ করা সম্ভব হয় — ইত্যাদি দায়িত্বগুলো কার্নেলের ঘাড়ে চাপানো থাকে।
আপনার অপারেটিং সিস্টেম ঠিকঠাক মতো রান করানোর জন্য কার্নেলকে অনেক কমপ্লেক্স জব শেষ করতে হয়। ধরুন কোন অ্যাপলিকেশন কোন সিস্টেম রিসোর্স ইউজ করছে, আর আরেকটি অ্যাপলিকেশনের ঐ রিসোর্স ইউজ করার প্রয়োজন পড়ল, এক্ষেত্রে দুই অ্যাপলিকেশনকে হ্যান্ডেল করার কাজ কার্নেল করে থাকে, আর এটা অনেক ক্রিটিক্যাল একটি প্রসেস যেটা ঠিক মতো হ্যান্ডেল না করতে পারলে সিস্টেম রান করানো সম্ভব হবে না।
কার্নেল ও অপারেটিং সিস্টেম
আগেই বলেছি, প্রত্যেকটি অপারেটিং সিস্টেমে কার্নেল রয়েছে এবং কার্নেল একসাথে অনেক গুলো অ্যাপলিকেশন মিলিয়ে কাজ করে, শুধু একা কার্নেল কখনোই একটি অপারেটিং সিস্টেম সম্পূর্ণ রান করাতে সক্ষম নয়। কার্নেলের সাথে অবশ্যই আপনার আলাদা আলাদা অ্যাপ্লিকেশনের প্রয়োজন পড়বে। যেমন- টার্মিনালের কম্যান্ড প্রমট ডিসপ্লে করানোর জন্য, অ্যাপ্লিকেশন রান করানোর জন্য, কোন ফোল্ডার ন্যাভিগেট করার জন্য এবং আরো অনেক কাজ করার জন্য আপনার “সেল (Shell)” এর প্রয়োজন পরবে।
বিশেষ করে লিনাক্স নির্ভর অপারেটিং সিস্টেম বা লিনাক্স ডিস্ট্র গুলোতে কার্নেলের সাথে আরো অনেক অ্যাপলিকেশন বান্ডেল করানো থাকে। যেমন- ওয়েব ব্রাউজার, ডেস্কটপ এনভায়ার্ন্মেন্ট, অফিস সুইট ইত্যাদি – যেগুলোকে আপনি সরাসরি গ্রাফিক্যাল ইন্টারফেসে ব্যবহার করতে পারেন। তো বুঝতেই পারছেন, অ্যাপলিকেশন বান্ডেল ছাড়া কার্নেল একা তেমন কিছুই করতে পারে না, কিন্তু কার্নেল ছাড়া ও আপনি অপারেটিং সিস্টেম রান করতে পারবেন না।
কার্নেলের প্রকারভেদ
অবশ্যই কার্নেল তৈরি করার সময় আলাদা আলাদা স্ট্র্যাকচার ব্যবহার করে কার্নেল তৈরি করা যায়। তবে মূলত কার্নেলের তিনটি প্রকারভেদ রয়েছে। এরা হচ্ছে, মনোলিথিক কার্নেল (Monolithic), মাইক্রো কার্নেল (Microkernel), এবং হাইব্রিড কার্নেল (Hybrid)। লিনাক্স হচ্ছে মনোলিথিক কার্নেল যেখানে ওএস এক্স এবং উইন্ডোজ ওএস হাইব্রিড কার্নেল টাইপ ব্যবহার করে। চলুন, এই তিনটি কার্নেল সম্পর্কে নিচে বেসিক কিছু ধারণা অর্জন করে নেওয়া যাক যাতে পরবর্তীতে বিস্তারিত আলোচনা করা হলে আপনার বুঝতে সুবিধা হয়।
মোডস (Modes)
কার্নেলের প্রকারভেদ বা কার্নেল নিয়ে একটু বিস্তারিত আলোচনা করার পূর্বে আপনাকে অবশ্যই মোডস সম্পর্কে ধারণা রাখতে হবে। এখানে দুইটি গুরুত্বপূর্ণ টার্ম রয়েছে, “ইউজার মোড” এবং “কার্নেল মোড” — ইউজার মোডে কোন কোড এক্সিকিউট করার সময় কখনোই সরাসরি হার্ডওয়্যার আক্সেস বা মেমোরি রেফারেন্স আক্সেস পাবে না। ইউজার মোডে অবশ্যই হার্ডওয়্যার বা মেমোরি আক্সেস পাওয়ার জন্য এপিআই ইন্সট্র্যাকশন অনুসরণ করতে হবে। অপরদিকে “কার্নেল মোডে” কোন কোড এক্সিকিউট করা হলে সেটা ডাইরেক্ট হার্ডওয়্যার আক্সেস পায় একটি অপারেটিং সিস্টেমের সকল বিশ্বস্ত ফাংশন রান করানো যায়।
- মাইক্রো কার্নেল :— মাইক্রো কার্নেলকে একটি মিনিমাল কার্নেল বলতে পারেন, কেননা এই টাইপের কার্নেল শুধু মাত্র সিপিইউ, মেমোরি এবং আইপিসি (ইন্টার-প্রসেস কমুনিকেশন) হ্যান্ডেল করে থাকে। মাইক্রো কার্নেলের পোর্টাবিলিটি বেশি এবং এটি ইউজার মোডে কাজ করে থাকে। মাইক্রো কার্নেলের ফুটপ্রিন্ট অনেক ছোট, কেননা এটি অল্প মেমোরি এবং স্পেস গ্রহন করে কাজ করতে পারে। একদিক থেকে মাইক্রো কার্নেল বেশি সিকিউর কেননা অনেক কম টাইপের প্রসেসর রয়েছে যারা ইউজার মোডে কাজ করে, ইউজার মোডে কাজ করার জন্য হাই পারমিশনের প্রয়োজন পরে না বলে এটা বেশ সিকিউর।
- মনোলিথিক কার্নেল :— আগেই বলেছি, লিনাক্স একটি মনোলিথিক টাইপের কার্নেল, এটি মাইক্রো কার্নেলের সম্পূর্ণ বিপরীত। মনোলিথিক কার্নেল শুধু সিপিইউ, মেমোরি এবং আইপিসি নয় সাথে ডিভাইজ ড্রাইভার, ফাইল সিস্টেম ম্যানেজমেন্ট, এবং সিস্টেম সার্ভার কলস হ্যান্ডেল করে থাকে। এই টাইপের কার্নেল হাই পারফর্মেন্স এবং মাল্টি টাস্কিং এর জন্য বেস্ট হয়ে থাকে — কেননা যদি কোন অ্যাপলিকেশনকে মেমোরি থেকে কোন তথ্য ফেচ করা বা প্রসেস রান করার প্রয়োজন পরে অ্যাপ্লিকেশনটি ডাইরেক্ট হার্ডওয়্যার আক্সেস করতে পারে ফলে কিউতে বসে থাকার প্রয়োজন পরে না আর দ্রুত সময়ের মধ্যে কাজ শেষ করতে পারে। তবে এটি কার্নেল মোডে কাজ করে, ফলে সিস্টেমে আলাদা কোন প্রসেসে সমস্যা থাকলে সম্পূর্ণ সিস্টেমের সমস্যা হয়ে যেতে পারে।
- হাইব্রিড কার্নেল :— হাইব্রিড কার্নেলের সবচাইতে বড় ব্যাপারটি হচ্ছে এটি প্রয়োজনে ইউজার মোড এবং প্রয়োজনে কার্নেল মোডে কাজ করতে পারে, মানে যখন যেটা প্রয়োজনীয়। বিশেষ করে ডিভাইজ ড্রাইভার এবং ফাইল সিস্টেম (ইনপুট/আউটপুট) ইউজার মোডে রান হয় এবং আইপিসি এবং আলাদা সার্ভার কলস কার্নেল মোডে কাজ করে। তো বলতে পারেন এই টাইপের কার্নেল একসাথে দুই টাইপ পারমিশন হ্যান্ডেল করার জন্য বেস্ট। তবে এই কার্নেলে হার্ডওয়্যার রান করানোর জন্য হার্ডওয়্যার প্রস্তুতকারী কোম্পানিদের তাদের হার্ডওয়্যারের সাথে একটু বেশি কাজ করতে হয়, এবং হাইব্রিড কার্নেলের লেটেন্সি একটু বেশি হয়ে থাকে। সাথে ডিভাইজ ড্রাইভার গুলোকে মানুষ দ্বারা হ্যান্ডেল করার প্রয়োজন পরে।
তো এখন থেকে যখনই মনের মধ্যে প্রশ্ন জাগবে, “লিনাক্স কার্নেল কি বা যেকোনো কার্নেল কি” এই আর্টিকেলটি পড়ার পরে আপনার মনে বেসিক আইডিয়া গুলো থাকবে। লিনাক্স মনোলিথিক কার্নেল এর উপর কাজ করে, তাই এর কাজ করার টাইপ অনেক বেশি কমপ্লেক্স, যেগুলো নিয়ে বিস্তারিত আলোচনা করলে বেশ কিছু সিরিজ আর্টিকেল লেখা হয়ে যেতে পারে। যেহেতু এই আর্টিকেলটি বিশেষ করে সাধারণ মানুষের বোধগম্য করে ব্যাখ্যা করা তাই টেকনিক্যাল টার্ম গুলো আপাতত এরিয়ে গেলাম। তবে আপনি যেকোনো টাইপের প্রশ্ন নিচে কমেন্টে আমাকে করতে পারেন, আমি যথাসাধ্য উত্তর দেওয়ার চেষ্টা করবো।