Operating System Foundations
কম্পিউটার সায়েন্সের অন্যতম গুরুত্বপূর্ণ বিষয় হলো অপারেটিং সিস্টেম। এটি হার্ডওয়্যার রিসোর্স ম্যানেজ করে এবং অ্যাপ্লিকেশন প্রোগ্রাম চালানোর জন্য একটি পরিবেশ তৈরি করে।
1. What is an Operating System?
অপারেটিং সিস্টেম (OS) হলো একটি সিস্টেম সফটওয়্যার যা কম্পিউটার হার্ডওয়্যার, সফটওয়্যার রিসোর্স ম্যানেজ করে এবং কম্পিউটার প্রোগ্রামের জন্য কমন সার্ভিস প্রদান করে।
Real-life Example: চিন্তা করুন একটি রেস্টুরেন্টের কথা।
- Hardware: কিচেন (CPU/RAM), টেবিল-চেয়ার (I/O Devices)।
- User: কাস্টমার।
- Applications: বিভিন্ন খাবার বা অর্ডারের রিকোয়েস্ট।
- Operating System: রেস্টুরেন্টের ম্যানেজার।
ম্যানেজার যেমন নিশ্চিত করে কোন কাস্টমার কোন টেবিলে বসবে, ওয়েটার (Resource) কখন কার কাছে যাবে, এবং কিচেনে খাবারের অর্ডার ঠিকমতো প্রসেস হচ্ছে কিনা—ঠিক তেমনি OS ডিসাইড করে কোন প্রোগ্রাম কখন CPU পাবে, মেমোরি কতটুকু পাবে ইত্যাদি।
2. Kernel vs User Space
OS-এর আর্কিটেকচারকে প্রধানত দুই ভাগে ভাগ করা যায়:
Kernel Space
কার্নেল হলো OS-এর হদপিণ্ড (Core)। এটি সরাসরি হার্ডওয়্যারের সাথে কথা বলে।
- কাজ: মেমোরি ম্যানেজমেন্ট, প্রসেস শিডিউলিং, হার্ডওয়্যার কন্ট্রোল।
- প্রিভিলেজ: এটি হাইয়েস্ট প্রিভিলেজ লেভেলে (Ring 0) চলে। এখানে কোনো ক্র্যাশ হলে পুরো সিস্টেম ক্র্যাশ করতে পারে (Blue Screen of Death)।
User Space
আমরা যেসব অ্যাপ্লিকেশন চালাই (Browser, Word, Games) সেগুলো ইউজার স্পেসে চলে।
- লিমিটেশন: এগুলো সরাসরি হার্ডওয়্যার এক্সেস করতে পারে না।
- প্রিভিলেজ: এটি লোয়ার প্রিভিলেজ লেভেলে (Ring 3) চলে। এখানে কোনো প্রোগ্রাম ক্র্যাশ করলে শুধু সেই প্রোগ্রামটি বন্ধ হয়, পুরো কম্পিউটার নয়।
3. System Calls & APIs
যেহেতু ইউজার স্পেসের প্রোগ্রাম সরাসরি হার্ডওয়্যার (যেমন- হার্ড ডিস্কে ফাইল সেভ করা) এক্সেস করতে পারে না, তাই তাদের কার্নেলের কাছে রিকোয়েস্ট পাঠাতে হয়। এই রিকোয়েস্ট পাঠানোর মাধ্যমই হলো System Call।
Real-life Example: আপনি (User Program) ব্যাংকে টাকা তুলতে গিয়েছেন। ভল্ট (Hardware) থেকে আপনি নিজে টাকা নিতে পারেন না। আপনাকে ক্যাশিয়ারের (Kernel) কাছে চেক (System Call) জমা দিতে হয়। ক্যাশিয়ার চেক ভেরিফাই করে ভল্ট থেকে টাকা এনে আপনাকে দেয়।
Common System Calls:
fork(): নতুন প্রসেস তৈরি করতে।read()/write(): ফাইল রিড বা রাইট করতে।open()/close(): ফাইল ওপেন বা ক্লোজ করতে।
4. Boot Process
কম্পিউটার পাওয়ার বাটন চাপার পর থেকে OS চালু হওয়া পর্যন্ত যে ধাপগুলো পার হয়, তাকে বুট প্রসেস বলে।
- BIOS/UEFI Init: পাওয়ার অন করার পর মাদারবোর্ডের firmware (BIOS/UEFI) হার্ডওয়্যার চেক করে (POST - Power On Self Test)।
- Bootloader Loading: BIOS একটি বুটলোডার (যেমন- GRUB) খুঁজে বের করে এবং র্যামে লোড করে।
- Kernel Loading: বুটলোডার OS-এর কার্নেলকে মেমোরিতে লোড করে এবং কন্ট্রোল কার্নেলের কাছে দিয়ে দেয়।
- Init Process: কার্নেল হার্ডওয়্যার ইনিশিয়ালাইজ করে এবং প্রথম প্রসেস (যেমন Linux-এ
systemdবাinit) চালু করে। এরপর লগইন স্ক্রিন আসে।
5. Types of Operating Systems
- Batch OS: মানুষের ইন্টারঅ্যাকশন ছাড়াই একটার পর একটা জব প্রসেস করে। (পুরানো মেইনফ্রেম)
- Time-Sharing / Multitasking: একই সময়ে একাধিক ইউজার বা প্রোগ্রাম চালানোর ভান করে (CPU time slice ভাগ করে দেয়)। (Windows, Linux, macOS)
- Real-Time OS (RTOS): নির্দিষ্ট সময়ের মধ্যে কাজ শেষ করার গ্যারান্টি দেয়। (Robot arm controller, Air traffic control system)।
- Distributed OS: একাধিক কম্পিউটার মিলে একটি সিঙ্গেল সিস্টেম হিসেবে কাজ করে।