পাঠ ০১ · ৫৬-এর মধ্যে · মডিউল ১
Home / Courses / Operating Systems (OS) / পরিচিতি

অপারেটিং সিস্টেম কী ও কেন গুরুত্বপূর্ণ

What is an operating system & why it matters
৯ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • অপারেটিং সিস্টেমের সংজ্ঞা এবং এটি ঠিক কোথায় বসে (হার্ডওয়্যার ও অ্যাপ্লিকেশনের মাঝে)
  • OS-এর দুটি মূল ভূমিকা — রিসোর্স ম্যানেজার ও অ্যাবস্ট্রাকশন লেয়ার — এবং প্রতিটির বাস্তব উদাহরণ
  • OS ছাড়া কম্পিউটিং কেন বাস্তবে অসম্ভব বা অত্যন্ত অকার্যকর হতো
  • Python দিয়ে একটি সহজ রিসোর্স-অ্যালোকেশন সিমুলেশন — OS আসলে "কে কী পাবে" কীভাবে ঠিক করে তার একটি ছোট্ট প্রিভিউ

১ · অপারেটিং সিস্টেম কী

অপারেটিং সিস্টেম (OS)Operating Systemকম্পিউটার হার্ডওয়্যার পরিচালনা করে এবং অ্যাপ্লিকেশন সফটওয়্যার চালানোর জন্য একটি প্ল্যাটফর্ম প্রদান করে এমন একটি প্রোগ্রাম — হার্ডওয়্যার ও ব্যবহারকারী/অ্যাপ্লিকেশনের মাঝখানে বসে থাকে। হলো এমন একটি প্রোগ্রাম যা কম্পিউটারের হার্ডওয়্যার (CPU, মেমরি, ডিস্ক, নেটওয়ার্ক কার্ড) পরিচালনা করে এবং তার উপর অন্যান্য সফটওয়্যার (আপনার ব্রাউজার, গেম, কোড এডিটর) চালানোর জন্য একটি স্থিতিশীল প্ল্যাটফর্ম দেয়। এটি হার্ডওয়্যার ও ব্যবহারকারীর মাঝখানে বসে থাকা একটি স্তর — Windows, macOS, Linux, Android — এই সবগুলোই অপারেটিং সিস্টেমের উদাহরণ।

ব্যবহারকারী / User অ্যাপ্লিকেশন সফটওয়্যার (ব্রাউজার, গেম...) অপারেটিং সিস্টেম (এই কোর্স)
OS ব্যবহারকারী/অ্যাপ্লিকেশনের কাছে হার্ডওয়্যারকে একটি সহজ, সামঞ্জস্যপূর্ণ প্ল্যাটফর্ম হিসেবে উপস্থাপন করে।

২ · OS-এর দুটি মূল ভূমিকা

রিসোর্স ম্যানেজার
CPU সময়, মেমরি, ডিস্ক স্পেস, নেটওয়ার্ক ব্যান্ডউইথের মতো সীমিত রিসোর্স অনেকগুলো প্রতিযোগী প্রোগ্রামের মধ্যে ন্যায্য ও কার্যকরভাবে বণ্টন করে। এই কোর্সের M3 (CPU শিডিউলিং), M7-M8 (মেমরি) ঠিক এই ভূমিকার বিস্তারিত।
অ্যাবস্ট্রাকশন লেয়ার (Extended Machine)
হার্ডওয়্যারের রুক্ষ, জটিল বিস্তারিত (ডিস্কের কোন সেক্টর, কোন মেমরি অ্যাড্রেস) লুকিয়ে একটি সহজ, উচ্চ-স্তরের ইন্টারফেস দেয় (যেমন "ফাইল" বা "প্রসেস")।
একটি বাস্তব উদাহরণ দিয়ে দুটি ভূমিকা

যখন আপনি একটি ফাইল সেভ করেন, আপনি জানেন না (এবং জানারও দরকার নেই) ফাইলটি ডিস্কের ঠিক কোন সেক্টরে বসছে — এটি অ্যাবস্ট্রাকশন। আর যখন আপনি একসাথে ১০টি ব্রাউজার ট্যাব ও একটি গান চালান, OS-ই ঠিক করে দেয় কোন মুহূর্তে CPU কোন প্রোগ্রামকে চালাবে — এটি রিসোর্স ম্যানেজমেন্ট।

৩ · OS ছাড়া কম্পিউটিং কেন অকার্যকর হতো

কল্পনা করুন OS ছাড়া একটি কম্পিউটার — প্রতিটি প্রোগ্রামকে নিজে থেকেই ডিস্ক ড্রাইভার, মেমরি অ্যালোকেটর, এবং অন্য কোনো প্রোগ্রাম একই সময়ে চলছে কি না তা ম্যানুয়ালি সামলাতে হতো। এর ফলে —

  • পুনরাবৃত্তি: প্রতিটি অ্যাপ্লিকেশনকে নিজের হার্ডওয়্যার-নিয়ন্ত্রণ কোড লিখতে হতো — বিশাল অপচয়।
  • নিরাপত্তাহীনতা: একটি বাগযুক্ত প্রোগ্রাম সরাসরি অন্য প্রোগ্রামের মেমরি নষ্ট করে দিতে পারত।
  • একসাথে একটির বেশি প্রোগ্রাম চালানো প্রায় অসম্ভব: কোনো কেন্দ্রীয় সমন্বয়কারী ছাড়া একাধিক প্রোগ্রাম নিরাপদে CPU/মেমরি শেয়ার করতে পারত না।

৪ · একটি ছোট্ট রিসোর্স-অ্যালোকেশন সিমুলেশন

নিচের কোড সেলে OS-এর "রিসোর্স ম্যানেজার" ভূমিকার একটি অতি-সরলীকৃত প্রিভিউ দেখা যাক — একটি সীমিত CPU/মেমরি পুল থেকে একাধিক প্রসেসের অনুরোধ কীভাবে বণ্টন করা হয় (এবং কখন একটি অনুরোধ প্রত্যাখ্যাত/অপেক্ষমাণ থাকে)।

Python
# একটি ভুয়া "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)

    
লক্ষ্য করুন — P3-এর ২টি CPU core দরকার, কিন্তু P1 ও P2 বরাদ্দের পর মাত্র ১টি core বাকি ছিল, তাই P3 কে কিউতে অপেক্ষা করতে হলো। এটিই ঠিক OS-এর CPU শিডিউলার (M3) ও মেমরি ম্যানেজার (M7) প্রতি মুহূর্তে বাস্তব সিস্টেমে করে — কে এখনই রিসোর্স পাবে, আর কাকে অপেক্ষা করতে হবে তা সিদ্ধান্ত নেওয়া।
মূল কথা · Key takeaway

অপারেটিং সিস্টেম কোনো একক ফিচার নয় — এটি একটি অবিচ্ছিন্ন ব্যবস্থাপনা প্রক্রিয়া যা প্রতি মুহূর্তে চলছে, সিদ্ধান্ত নিচ্ছে কোন প্রসেস 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 কিউতে যায়। কোড সেলে প্রিন্ট হওয়া "বাকি" সংখ্যাগুলো দেখেই এটি যাচাই করা যায়।

অনুশীলন

  1. চিন্তা করুন: আপনার কম্পিউটারে এখন যতগুলো প্রোগ্রাম খোলা আছে তার একটি তালিকা করুন এবং চিন্তা করুন OS কীভাবে একটিমাত্র CPU দিয়ে সবগুলো "একসাথে" চালাচ্ছে বলে মনে হয়।

    বাস্তবে একটি সিঙ্গেল-কোর CPU এক মুহূর্তে মাত্র একটি প্রোগ্রামই চালাতে পারে — OS অত্যন্ত দ্রুত (মিলিসেকেন্ডের ভগ্নাংশে) একটি প্রোগ্রাম থেকে আরেকটিতে স্যুইচ করে (কনটেক্সট সুইচিং, M2), যা মানুষের চোখে "একসাথে চলছে" বলে মনে হয়। এই কোর্সের M3 (CPU শিডিউলিং) ঠিক করে কোন প্রোগ্রাম কখন, কতক্ষণ চলবে।

  2. পরীক্ষা করুন: উপরের কোড সেলে 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-এ আপনার পরবর্তী পদক্ষেপ

কোর্সে ফিরে যান
Operating Systems — সব পাঠ