Linux Under the Hood: A High-Level Architectural View
একটি আদর্শ লিনাক্স ডিস্টিবিউশনের হাইলেভেল আর্কিটেকচার সম্পর্কে বিস্তারিত আলোচনা
লিনাক্স কার্নেলের উপর ভিত্তি করে তৈরি করা অপারেটিং সিস্টেম গুলোকে লিনাক্স ডিস্ট্রিবিউশন বা ডিস্ট্রো বলে। এদের অধিকাংশই ফ্রি এবং ওপেন সোর্স।
নিচের ছবিটির দিকে তাকালে আমরা একটা লিনাক্স ডিস্ট্রিবিউশন বা অপারেটিং সিস্টেমের হাইলেভেল আর্কিটেকচার সম্পর্কে ধারণা পাই।
Kernel
কার্নেলকে আমরা গাড়ির ইঞ্জিনের সাথে তুলনা করতে পারি। কার্নেল মূলত একটা কমপ্লেক্স সফটওয়্যার, যা ছোট কিন্তু স্বয়ংসম্পূর্ণ (self-contained) কিছু ফাংশন বা মডিউলের সমন্বয়ে গঠিত। যাদের আমরা সাব-সিস্টেম (subsystem) বলতে পারি।
অপারেটিং সিস্টেমকে সচল রাখার জন্য এই সাব-সিস্টেম গুলো প্রত্যেকে আলাদা করে কিছু নির্দিষ্ট কাজ করে থাকে। যেমন - প্রসেস শিডিউলার (process scheduler) প্রসেসিং টাইমকে ডিস্ট্রিবিউট করার কাজ করে থাকে, মেমোরি ম্যানেজমেন্ট ইউনিট (memory management unit) এর কাজ হল মেমোরি রিসোর্সকে ডিস্ট্রিবিউট করা ইত্যাদি।
Hardware
এই লেভেল মূলত অপারেটিং সিস্টেমকে বিভিন্ন ধরনের র-রিসোর্স (raw resources) যেমন - সিপিউ, র্যাম, হার্ডডিক্স ইত্যাদি ফিজিক্যাল কম্পোনেন্টের অ্যাক্সেস প্রদান করে থাকে। অপারেটিং সিস্টেমের কার্নেল বিভিন্ন ধরনের ড্রাইভার সফটওয়্যার এর মাধ্যমে এই হার্ডওয়্যার লেভেলের সাথে যোগাযোগ স্থাপন করে হার্ডওয়্যারকে কন্ট্রোল করে।
Shell
কার্নেলকে যদি আমার গাড়ির ইঞ্জিন মনে করি। তাহলে, শেল হল সেই গাড়ির স্টিয়ারিং হুইল এবং প্যাডেল। অর্থাৎ শেল হল কার্নেলের এমন একটা ইন্টারফেস যা কার্নেলের ইন্টারনাল ফাংশন এক্সিকিউশন ইউজারের কাছ থেকে অ্যাবস্ট্রাক (hide) করে রাখে। শেল ব্যবহার করার মাধ্যমে একজন ইউজার বিভিন্ন ধরনের কমান্ড লিখতে পারে এবং এই কমান্ডের মাধ্যমে কার্নেলের বিভিন্ন ফাংশন ব্যবহার করে নির্দিষ্ট কাজ সম্পাদন করা হয়। বিভিন্ন ধরনের শেল প্রোগ্রাম আছে। যেমন -Bash
, Shell
, Zsh
ইত্যাদি।
Utilities
একটি টুলবক্সের মধ্যে যেমন বিভিন্ন ধরনের সরঞ্জাম থাকে এবং প্রতিটি একটি নির্দিষ্ট কাজের জন্য ব্যবহার করা হয়। তেমনি এই প্রোগ্রামগুলি লিনাক্সের বিভিন্ন ডিস্ট্রোর সাথে বান্ডিল হয়ে আসে। সিস্টেম ম্যানেজমেন্ট এবং ফাইল হ্যান্ডলিং থেকে শুরু করে বিভিন্ন ধরনের ইউজার ইন্টার্যাকশন সহ মাল্টিমিডিয়া পর্যন্ত পরিচালনা করা যায় এসব Utilities/Application
এর মাধ্যমে। যেমন -apt
এর মতো প্যাকেজ ম্যানেজার ব্যবহার করে সিস্টেম সফটওয়ার আপডেট রাখা, Htop
এর মাধ্যমে সিস্টেম প্রসেস ভিউ এবং ম্যানেজ করা ইত্যাদি।