OS vs Kernel - Are They Equal?

আমার একটি আর্টিকেলে আমি প্রায় সব ক্ষেত্রে OS শব্দটা ব্যাবহার করছিলাম। OS এর কাছে সকল প্রিভিলেজড ইন্সট্রাকশন গুলো থাকে, OS সরাসরি হার্ডওয়্যারে অ্যাক্সেস করতে পারে ইত্যাদি ইত্যাদি। এখান থেকে এটা প্রশ্ন তৈরি হয় Is Operating System and Kernel is the same thing? Operating System == Kernel ? Let’s findout
দুইটার মধ্যে পার্থক্য করতে আমাদের দুইটা জিনিসকেই ডিফাইন করা জরুরী। OS বলতে আমরা কি বুঝি? কম্পিউটার চালু করার কিছুক্ষণ পর যেই User Interface দেখতে পাই? এখন Windows হলে Windows Shell/GUI যদি Linux Distro হয় তাহলে Gnome বা KDE বা XFCE অথবা অন্যকিছু। সোজা কথা আমরা বেশিরভাগ GUI কেই OS মনে করি। কিন্তু এই GUI হচ্ছে Operating System এর মাত্র একটা পার্ট বা কম্পোনেন্ট। আমরা Arch Linux এর নাম শুনেছি। এটা খুবি লাইটওয়েইট একটা লিনাক্স ডিস্ট্রো। বাই ডিফল্ট কোন GUI থাকে না। আমরা ইন্সটল করলে একটা ব্ল্যাক টার্মিনালে / শেলে আমাদের ছেড়ে দিবে। তবে আমরা চাইলে desktop manager বা GUI পরে ইন্সটল করতে পারবো। OS হচ্ছে কতোগুলো কম্পোনেন্ট এর সমষ্টি। OS এর মুল কম্পোনেন্ট হচ্ছে কার্নাল। এছাড়া User Interface, Utilties, System Libraries, কিছু কিছু ক্ষেত্রে Hardware Drivers এইগুলো সব মিলিয়ে হচ্ছে Operating System. ইন্টারেস্টিং বিষয় হচ্ছে কার্নাল আর ড্রাইভার ছাড়া বাকি সব কিছুই User Space এ থাকে। তারমানে আমাদের যেই অ্যাপ্লিকেশান গুলো OS ইন্সটল করার সাথে সাথে আমাদের কম্পিউটারে ইন্সটল হয়েছে সেই অ্যাপ্লিকেশান কিন্তু User Space এ থাকে অনলি কার্নাল আর কিছু কিছু ক্ষেত্রে ড্রাইভারস ছাড়া। এখন কার্নাল কেনো Kernel Space - এ থাকে সেটা তো আমরা জানলাম কিন্তু ড্রাইভার কেন থাকে? এটা নিয়ে বিস্তারিত পরবর্তীতে আলোচনা করবো ইনশাআল্লাহ্।
কার্নাল হচ্ছে একটা ডিফারেন্ট প্রোগ্রাম। সে সকল প্রকার হেভি লিফটিং কাজ গুলো করে। যেমনঃ Resource Allocation, Process Management, CPU Scheduling, Device & I/O Management ইত্যাদি। কিন্তু এই কাজ গুলো করার জন্য কার্নাল ইন্সট্রাকশন পায় কিভাবে? OS দেয় ? এখানেই আমাদের একটা কনফিউশন কাজ করে। জিনিসটা কি এরকম যে OS.exe বা এমন কোন অ্যাপ্লিকেশান আছে যা কার্নালকে ইন্সট্রাকশন পাস করে?
বিষয় তা এমন না যে OS.exe নামে কোন অ্যাপ্লিকেশান আছে আর সেই একমাত্র অ্যাপ্লিকেশান যে কার্নাল এর সাথে কথা বলতে পারবে। কার্নাল কে ইন্সট্রাকশন দেওয়ার কাজ মূলত SYSCALL এর মাধ্যমে User Space এ থাকা সব অ্যাপ্লিকেশানই করতে পারে। SYSCALL গুলো পায় কোথায়? System Libraries, যেটা OS এর আরেকটা গুরুত্বপূর্ণ কম্পোনেন্ট। এই System Libraries গুলো বিভিন্ন SYSCALL ফাংশনস আমাদের দেয় কার্নাল কে ইন্সট্রাকশন দেওয়ার জন্য। যেমনঃ ফাইল রিড করতে হবে open()
, মেমোরি অ্যালকেট করা দরকার sbrk()
or mmap()
ইত্যাদি। আমরা যেই অ্যাপ্লিকেশান গুলো বানাচ্ছি তারা প্রত্যেকেই এই SYSCALL গুলো ব্যাবহার করেই কার্নাল কে ইন্সট্রাকশন দেয়।
ক্লিয়ার হওয়ার জন্য একটা এক্সামপ্ল নেওয়া যাক।
ধরি VS Code Editor এ একটা Javascript ফাইল ওপেন কিছু টাইপ করে সেইভ করবেন। এখন এই ফাইল কে SSD/HDD থেকে প্রথমে মেমোরিতে আনতে হবে। মেমোরি থেকে ডাটা রিড করে আমাদের এডিটরে দেখাতে হবে রাইট? কিভাবে হবে?
মাথায় রাখতে হবে এটা খুবি হাই লেভেল এক্সামপ্ল। এখানের প্রতিটা স্টেপ এতো স্ট্রেটফরওয়ার্ড না।
আর আগের পোস্টে বলেছিলাম কার্নাল স্পেস OS লোড হয় এটা বুঝার সুবিধার জন্য ছিল। এখন নিশ্চয়ই বুঝা যাচ্ছে সেটা আসলে কার্নাল। যেহেতু SYSCALL দিয়ে আমরা কার্নাল কে ইন্সট্রাকশন ডেই তারমানে কার্নাল তার কাজ করার আগে CPU কে তার mode সুইচ করে কার্নাল মোডে যেতে হয়। তাহলে বুঝাগেল SYSCALL এর মাধ্যমে CPU কার্নাল মোডে সুইচ করে। এখানেও একটা নুকতা দেওয়া প্রয়োজন বিষয়টা এতো স্ট্রেটফরওয়ার্ড না। এটা নিয়েও সামনে একদিন আলোচনা করবো ইনশাআল্লাহ।
তাহলে কনক্লুসন হচ্ছে,
OS অনেকগুলো কম্পোনেন্ট এর সমষ্টি । এটা ইটসেলফ একটা অ্যাপ্লিকেশান বলা ঠিক হবে না। বরং এটা অনেক গুলো অ্যাপ্লিকেশান প্রোগ্রামের কম্বাইন্ড প্যাকেজ।
অন্যদিকে কার্নাল হচ্ছে OS এর কোর কম্পোনেন্ট অন্যভাবে বললে OS এর হার্ট। এটা ইটসেলফ একটা প্রোগ্রাম। যে সকল সফটওয়্যার এর সাথে হার্ডওয়্যার এর কমিউনিকেশন করার মিডিয়াম হিসেবে কাজ করে।
সুতরাং OS ≠ Kernal প্রমাণিত 😅 ।
Posted on:
Last Updated: 2 days ago
📬 Let's keep in touch
Join our mailing list for the latest updates
Something went wrong!
Please try again.