অপারেটিং সিস্টেম কী ও কেন গুরুত্বপূর্ণ
এই পাঠে যা শিখবেন
- অপারেটিং সিস্টেমের সংজ্ঞা এবং এটি ঠিক কোথায় বসে (হার্ডওয়্যার ও অ্যাপ্লিকেশনের মাঝে)
- OS-এর দুটি মূল ভূমিকা — রিসোর্স ম্যানেজার ও অ্যাবস্ট্রাকশন লেয়ার — এবং প্রতিটির বাস্তব উদাহরণ
- OS ছাড়া কম্পিউটিং কেন বাস্তবে অসম্ভব বা অত্যন্ত অকার্যকর হতো
- Python দিয়ে একটি সহজ রিসোর্স-অ্যালোকেশন সিমুলেশন — OS আসলে "কে কী পাবে" কীভাবে ঠিক করে তার একটি ছোট্ট প্রিভিউ
১ · অপারেটিং সিস্টেম কী
অপারেটিং সিস্টেম (OS)Operating Systemকম্পিউটার হার্ডওয়্যার পরিচালনা করে এবং অ্যাপ্লিকেশন সফটওয়্যার চালানোর জন্য একটি প্ল্যাটফর্ম প্রদান করে এমন একটি প্রোগ্রাম — হার্ডওয়্যার ও ব্যবহারকারী/অ্যাপ্লিকেশনের মাঝখানে বসে থাকে। হলো এমন একটি প্রোগ্রাম যা কম্পিউটারের হার্ডওয়্যার (CPU, মেমরি, ডিস্ক, নেটওয়ার্ক কার্ড) পরিচালনা করে এবং তার উপর অন্যান্য সফটওয়্যার (আপনার ব্রাউজার, গেম, কোড এডিটর) চালানোর জন্য একটি স্থিতিশীল প্ল্যাটফর্ম দেয়। এটি হার্ডওয়্যার ও ব্যবহারকারীর মাঝখানে বসে থাকা একটি স্তর — Windows, macOS, Linux, Android — এই সবগুলোই অপারেটিং সিস্টেমের উদাহরণ।
২ · OS-এর দুটি মূল ভূমিকা
CPU সময়, মেমরি, ডিস্ক স্পেস, নেটওয়ার্ক ব্যান্ডউইথের মতো সীমিত রিসোর্স অনেকগুলো প্রতিযোগী প্রোগ্রামের মধ্যে ন্যায্য ও কার্যকরভাবে বণ্টন করে। এই কোর্সের M3 (CPU শিডিউলিং), M7-M8 (মেমরি) ঠিক এই ভূমিকার বিস্তারিত।
হার্ডওয়্যারের রুক্ষ, জটিল বিস্তারিত (ডিস্কের কোন সেক্টর, কোন মেমরি অ্যাড্রেস) লুকিয়ে একটি সহজ, উচ্চ-স্তরের ইন্টারফেস দেয় (যেমন "ফাইল" বা "প্রসেস")।
যখন আপনি একটি ফাইল সেভ করেন, আপনি জানেন না (এবং জানারও দরকার নেই) ফাইলটি ডিস্কের ঠিক কোন সেক্টরে বসছে — এটি অ্যাবস্ট্রাকশন। আর যখন আপনি একসাথে ১০টি ব্রাউজার ট্যাব ও একটি গান চালান, OS-ই ঠিক করে দেয় কোন মুহূর্তে CPU কোন প্রোগ্রামকে চালাবে — এটি রিসোর্স ম্যানেজমেন্ট।
৩ · OS ছাড়া কম্পিউটিং কেন অকার্যকর হতো
কল্পনা করুন OS ছাড়া একটি কম্পিউটার — প্রতিটি প্রোগ্রামকে নিজে থেকেই ডিস্ক ড্রাইভার, মেমরি অ্যালোকেটর, এবং অন্য কোনো প্রোগ্রাম একই সময়ে চলছে কি না তা ম্যানুয়ালি সামলাতে হতো। এর ফলে —
- পুনরাবৃত্তি: প্রতিটি অ্যাপ্লিকেশনকে নিজের হার্ডওয়্যার-নিয়ন্ত্রণ কোড লিখতে হতো — বিশাল অপচয়।
- নিরাপত্তাহীনতা: একটি বাগযুক্ত প্রোগ্রাম সরাসরি অন্য প্রোগ্রামের মেমরি নষ্ট করে দিতে পারত।
- একসাথে একটির বেশি প্রোগ্রাম চালানো প্রায় অসম্ভব: কোনো কেন্দ্রীয় সমন্বয়কারী ছাড়া একাধিক প্রোগ্রাম নিরাপদে CPU/মেমরি শেয়ার করতে পারত না।
৪ · একটি ছোট্ট রিসোর্স-অ্যালোকেশন সিমুলেশন
নিচের কোড সেলে OS-এর "রিসোর্স ম্যানেজার" ভূমিকার একটি অতি-সরলীকৃত প্রিভিউ দেখা যাক — একটি সীমিত CPU/মেমরি পুল থেকে একাধিক প্রসেসের অনুরোধ কীভাবে বণ্টন করা হয় (এবং কখন একটি অনুরোধ প্রত্যাখ্যাত/অপেক্ষমাণ থাকে)।
# একটি ভুয়া "OS রিসোর্স ম্যানেজার" -- বাস্তব কোনো CPU/মেমরি নয়, শুধুই ধারণা বোঝানোর সিমুলেশন
total_cpu_cores = 4
total_memory_gb = 8
available_cpu = total_cpu_cores
available_memory = total_memory_gb
requests = [
("P1", 2, 3), # (প্রসেস নাম, চাহিদা cpu core, চাহিদা memory GB)
("P2", 1, 2),
("P3", 2, 4),
]
allocated = {}
queued = []
for name, need_cpu, need_mem in requests:
if need_cpu <= available_cpu and need_mem <= available_memory:
available_cpu -= need_cpu
available_memory -= need_mem
allocated[name] = (need_cpu, need_mem)
print(f"{name}: বরাদ্দ সফল -> {need_cpu} core, {need_mem} GB "
f"(এখন বাকি: {available_cpu} core, {available_memory} GB)")
else:
queued.append(name)
print(f"{name}: রিসোর্স অপর্যাপ্ত -> কিউতে অপেক্ষমাণ")
print("\n--- চূড়ান্ত অবস্থা ---")
print("বরাদ্দকৃত:", allocated)
print("অপেক্ষমাণ:", queued)
অপারেটিং সিস্টেম কোনো একক ফিচার নয় — এটি একটি অবিচ্ছিন্ন ব্যবস্থাপনা প্রক্রিয়া যা প্রতি মুহূর্তে চলছে, সিদ্ধান্ত নিচ্ছে কোন প্রসেস CPU পাবে, কোন ডেটা মেমরিতে থাকবে, কোন ফাইল ডিস্কের কোথায় সংরক্ষিত হবে। এই কোর্স ঠিক এই প্রতিটি সিদ্ধান্ত-প্রক্রিয়ার পেছনের অ্যালগরিদম ও ডেটা স্ট্রাকচার একে একে খুলে দেখাবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ "অ্যাবস্ট্রাকশন" ও "রিসোর্স ম্যানেজমেন্ট" — এই দুটো ভূমিকা কি একে অপরের থেকে সম্পূর্ণ স্বাধীন, নাকি একসাথে কাজ করে?
এগুলো ঘনিষ্ঠভাবে যুক্ত। যখন OS একটি "ফাইল" অ্যাবস্ট্রাকশন দেয় (আপনাকে ডিস্ক সেক্টর নিয়ে ভাবতে হয় না), সেই একই সময়ে এটি ভেতরে ভেতরে সিদ্ধান্ত নিচ্ছে কোন ফাইল কোথায় সংরক্ষিত হবে, কোন প্রসেস কখন সেই ডিস্কে অ্যাক্সেস পাবে (রিসোর্স ম্যানেজমেন্ট)। অ্যাবস্ট্রাকশন হলো "বাইরের মুখ," আর রিসোর্স ম্যানেজমেন্ট হলো তার পেছনের "ভেতরের যুক্তি" — দুটো একসাথে মিলেই একটি সম্পূর্ণ OS সার্ভিস তৈরি হয়।
প্র ০২ একটি বাগযুক্ত প্রোগ্রাম কেন OS ছাড়া সরাসরি অন্য প্রোগ্রামের মেমরি নষ্ট করে দিতে পারত, কিন্তু আজকের OS-চালিত সিস্টেমে সাধারণত পারে না?
OS ছাড়া, প্রতিটি প্রোগ্রামের সরাসরি ফিজিক্যাল মেমরি অ্যাক্সেসের ক্ষমতা থাকত — কোনো বাধা ছাড়াই যেকোনো অ্যাড্রেসে লেখা সম্ভব হতো। আধুনিক OS মেমরি ম্যানেজমেন্ট (M7-M8) ব্যবহার করে প্রতিটি প্রোগ্রামকে তার নিজস্ব, বিচ্ছিন্ন ভার্চুয়াল অ্যাড্রেস স্পেস দেয় — একটি প্রোগ্রাম অন্য প্রোগ্রামের প্রকৃত মেমরিতে সরাসরি লিখতেই পারে না, কারণ হার্ডওয়্যার ও OS একসাথে এই বিচ্ছিন্নতা জোরপূর্বক বলবৎ করে।
প্র ০৩ উপরের কোড সেলে P3 কিউতে অপেক্ষা করছে কেন — মেমরি না CPU-এর অভাবে? কীভাবে নিশ্চিত হবেন?
P1 (2 core, 3GB) ও P2 (1 core, 2GB) বরাদ্দের পর বাকি থাকে 4-2-1=1 core এবং 8-3-2=3GB। P3-এর দরকার 2 core, 4GB — CPU-এর দিক থেকে (2 > 1 বাকি) এবং মেমরির দিক থেকেও (4 > 3 বাকি) উভয়ই অপর্যাপ্ত, তাই দুটো কারণেই P3 কিউতে যায়। কোড সেলে প্রিন্ট হওয়া "বাকি" সংখ্যাগুলো দেখেই এটি যাচাই করা যায়।
অনুশীলন
-
চিন্তা করুন: আপনার কম্পিউটারে এখন যতগুলো প্রোগ্রাম খোলা আছে তার একটি তালিকা করুন এবং চিন্তা করুন OS কীভাবে একটিমাত্র CPU দিয়ে সবগুলো "একসাথে" চালাচ্ছে বলে মনে হয়।
বাস্তবে একটি সিঙ্গেল-কোর CPU এক মুহূর্তে মাত্র একটি প্রোগ্রামই চালাতে পারে — OS অত্যন্ত দ্রুত (মিলিসেকেন্ডের ভগ্নাংশে) একটি প্রোগ্রাম থেকে আরেকটিতে স্যুইচ করে (কনটেক্সট সুইচিং, M2), যা মানুষের চোখে "একসাথে চলছে" বলে মনে হয়। এই কোর্সের M3 (CPU শিডিউলিং) ঠিক করে কোন প্রোগ্রাম কখন, কতক্ষণ চলবে।
-
পরীক্ষা করুন: উপরের কোড সেলে
total_memory_gb-কে 8 থেকে 10 করে Run চেপে দেখুন P3 এখন বরাদ্দ পায় কি না।মেমরি 10 GB করলে P1+P2-এর পর বাকি থাকবে 10-3-2=5GB, যা P3-এর 4GB চাহিদা মেটাতে যথেষ্ট। কিন্তু CPU এখনও মাত্র 1 core বাকি থাকবে (P3-এর 2 core দরকার) — তাই P3 তখনও কিউতে থাকবে, শুধু এখন CPU-এর অভাবেই, মেমরির অভাবে নয়। এটি দেখায় কীভাবে একটি রিসোর্স যথেষ্ট থাকলেও অন্য রিসোর্সের ঘাটতিই বটলনেক হতে পারে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৬টি পাঠ এখন সবগুলো পাঠ উপলব্ধ — প্রসেস, শিডিউলিং, মেমরি, ফাইল সিস্টেম থেকে শুরু করে চূড়ান্ত কার্নেল-সিমুলেশন প্রকল্প পর্যন্ত।
- Computer Networks কোর্স সহোদর কোর্স OS একটি একক মেশিন পরিচালনা করে, নেটওয়ার্কিং শেখায় মেশিনে মেশিনে যোগাযোগ কীভাবে হয়।
- Cloud Computing & DevOps কোর্স সঙ্গী কোর্স ভার্চুয়াল মেশিন ও কন্টেইনার (এই কোর্সের M12) ব্যবহারিকভাবে কীভাবে ক্লাউডে ব্যবহৃত হয় তা শিখতে দেখুন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks ও Operating Systems — সব এক জায়গায়।