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

Leave a comment