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

অপারেটিং সিস্টেমের প্রকারভেদ

Types of operating systems
৭ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

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

  • ব্যাচ সিস্টেম কী ছিল এবং কেন আজকের বেশিরভাগ OS আর এভাবে কাজ করে না
  • টাইম-শেয়ারিং সিস্টেম কীভাবে একাধিক ব্যবহারকারী/প্রোগ্রামের মধ্যে দ্রুত CPU সুইচ করে ইন্টারঅ্যাক্টিভ অভিজ্ঞতা দেয়
  • হার্ড বনাম সফট রিয়েল-টাইম সিস্টেমের মধ্যে পার্থক্য এবং ডেডলাইন মিস করার ভিন্ন ভিন্ন পরিণতি
  • ডিস্ট্রিবিউটেড ও এমবেডেড সিস্টেমের সংক্ষিপ্ত পরিচিতি এবং কোথায় প্রতিটি ব্যবহৃত হয়

১ · ব্যাচ সিস্টেম — একটি ঐতিহাসিক প্রেক্ষাপট

ব্যাচ সিস্টেমBatch Systemজব (কাজ) গুলো আগে থেকে জমা দেওয়া হয় এবং কোনো ব্যবহারকারীর সাথে সরাসরি ইন্টারঅ্যাকশন ছাড়াই একের পর এক সারিবদ্ধভাবে চালানো হয়। ছিল কম্পিউটিং-এর প্রথম দিকের মডেল — ব্যবহারকারীরা তাদের জব (যেমন একটি প্রোগ্রাম ও তার ইনপুট ডেটা) কার্ড বা টেপে জমা দিতেন, অপারেটর একগুচ্ছ জব একসাথে ("ব্যাচ") জমা করে কম্পিউটারে চালাতেন, এবং ফলাফল অনেক পরে পাওয়া যেত। এখানে কোনো রিয়েল-টাইম ইন্টারঅ্যাকশনের সুযোগ ছিল না — একটি জব চলাকালীন ব্যবহারকারী তার সাথে কথা বলতে বা মাঝপথে কিছু পরিবর্তন করতে পারতেন না। আজকের প্রেক্ষাপটে ব্যাচ-স্টাইল প্রসেসিং এখনও টিকে আছে (যেমন রাতের বেলা চলা বড় ডেটা-প্রসেসিং জব), কিন্তু এটি আর কোনো OS-এর প্রধান ডিজাইন মডেল নয়।

২ · টাইম-শেয়ারিং / মাল্টিটাস্কিং সিস্টেম

টাইম-শেয়ারিং সিস্টেমTime-sharing SystemCPU-কে অত্যন্ত দ্রুত একাধিক ইন্টারঅ্যাক্টিভ ব্যবহারকারী/প্রোগ্রামের মধ্যে সুইচ করে, প্রত্যেককে মনে করায় যে সে একাই সম্পূর্ণ কম্পিউটার ব্যবহার করছে। হলো L01-এ উল্লেখিত "একসাথে চলছে বলে মনে হওয়া" আচরণের ভিত্তি — OS মিলিসেকেন্ডের ভগ্নাংশে এক প্রোগ্রাম থেকে আরেকটিতে সুইচ করে, ফলে প্রতিটি প্রোগ্রাম দ্রুত রেসপন্স পায় বলে মনে হয়। এটিই আজকের ডেস্কটপ ও সার্ভার OS-এর (Windows, Linux, macOS) মূলধারার মডেল — ব্যবহারকারী সরাসরি ইন্টারঅ্যাক্ট করেন এবং দ্রুত ফলাফল আশা করেন।

রেসপন্সিভনেস প্রয়োজনীয়তা অনুযায়ী OS ডিজাইন ব্যাচ / টাইম-শেয়ারিং রিয়েল-টাইম (Hard/Soft) ডিস্ট্রিবিউটেড / এমবেডেড
একই "OS" ধারণা, কিন্তু ভিন্ন ভিন্ন রেসপন্সিভনেস প্রয়োজনীয়তা মেটাতে ভিন্ন ডিজাইন সিদ্ধান্ত নেয়।

৩ · রিয়েল-টাইম সিস্টেম — হার্ড বনাম সফট

রিয়েল-টাইম সিস্টেমReal-time Systemএমন একটি সিস্টেম যেখানে ফলাফলের সঠিকতা শুধু গণনার ফলাফলের উপর নয়, বরং সেই ফলাফল কত দ্রুত পাওয়া গেল তার উপরও নির্ভর করে — একটি নির্দিষ্ট সময়সীমার (ডেডলাইন) মধ্যে রেসপন্স করতেই হয়। দুই ভাগে বিভক্ত —

হার্ড রিয়েল-টাইমHard Real-timeএকটি ডেডলাইন মিস করাকে সম্পূর্ণ সিস্টেম ব্যর্থতা হিসেবে গণ্য করা হয় — কোনো ছাড় নেই।
ডেডলাইন মিস করা মানে সিস্টেমের সম্পূর্ণ ব্যর্থতা — যেমন মেডিকেল ডিভাইস (পেসমেকার) বা ইন্ডাস্ট্রিয়াল কন্ট্রোল সিস্টেম, যেখানে দেরি হওয়া মানে বিপর্যয়।
সফট রিয়েল-টাইমSoft Real-timeডেডলাইন গুরুত্বপূর্ণ, কিন্তু মিস করলে সিস্টেম সম্পূর্ণ ব্যর্থ হয় না, শুধু কোয়ালিটি বা অভিজ্ঞতা কিছুটা খারাপ হয়।
ডেডলাইন মিস করলে কোয়ালিটি কমে কিন্তু সিস্টেম চলতে থাকে — যেমন ভিডিও স্ট্রিমিং (একটি ফ্রেম দেরিতে এলে সামান্য বাফারিং, ক্র্যাশ নয়)।
গুরুত্বপূর্ণ পার্থক্য

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

৪ · ডিস্ট্রিবিউটেড ও এমবেডেড সিস্টেম

ডিস্ট্রিবিউটেড সিস্টেমDistributed Systemএকাধিক স্বাধীন, শারীরিকভাবে আলাদা কম্পিউটার একসাথে কাজ করে ব্যবহারকারীর কাছে একটি একক, সমন্বিত সিস্টেম হিসেবে উপস্থাপিত হয়। OS-লেভেলে দেখলে, একাধিক মেশিন নেটওয়ার্কের মাধ্যমে সমন্বিত হয়ে একটি একক সিস্টেমের মতো আচরণ করে (এই সমন্বয়ের নেটওয়ার্কিং দিকটি ../computer-networks/ কোর্সে বিস্তারিত কভার হয়েছে)।

এমবেডেড সিস্টেমEmbedded Systemএকটি নির্দিষ্ট, একক উদ্দেশ্যের হার্ডওয়্যারে চলা OS, যার রিসোর্স (মেমরি, প্রসেসিং পাওয়ার) ফিক্সড ও সীমিত। একটি নির্দিষ্ট-উদ্দেশ্যের হার্ডওয়্যারে (যেমন একটি রাউটার বা একটি ওয়াশিং মেশিন কন্ট্রোলার) চলে — রিসোর্স খুবই সীমিত ও ফিক্সড, এবং প্রায়ই এর সাথে কিছু রিয়েল-টাইম প্রয়োজনীয়তাও জড়িত থাকে।

৫ · একটি তুলনামূলক সিমুলেশন

নিচের কোড সেলে প্রতিটি OS প্রকারের রেসপন্সিভনেস প্রয়োজনীয়তা ও একটি বাস্তব উদাহরণ পাশাপাশি রেখে একটি তুলনামূলক টেবিল তৈরি করা হলো।

Python
# OS-এর প্রকারভেদ -- প্রতিটির রেসপন্সিভনেস প্রয়োজনীয়তা ও উদাহরণ (তুলনামূলক টেবিল বানানোর সিমুলেশন)
os_types = {
    "ব্যাচ সিস্টেম (Batch)": {
        "responsiveness_requirement": "কোনো ইন্টারঅ্যাক্টিভিটি নেই -- জব সারিবদ্ধভাবে চলে",
        "typical_example": "পুরনো মেইনফ্রেম পে-রোল প্রসেসিং",
    },
    "টাইম-শেয়ারিং (Time-sharing)": {
        "responsiveness_requirement": "দ্রুত, ইন্টারঅ্যাক্টিভ রেসপন্স (মিলিসেকেন্ড রেঞ্জ)",
        "typical_example": "ডেস্কটপ/সার্ভার OS -- Windows, Linux, macOS",
    },
    "হার্ড রিয়েল-টাইম (Hard Real-time)": {
        "responsiveness_requirement": "কঠোর ডেডলাইন -- মিস করলে সিস্টেম ব্যর্থ",
        "typical_example": "মেডিকেল ডিভাইস, ইন্ডাস্ট্রিয়াল কন্ট্রোল",
    },
    "সফট রিয়েল-টাইম (Soft Real-time)": {
        "responsiveness_requirement": "ডেডলাইন গুরুত্বপূর্ণ, মিস করলে শুধু কোয়ালিটি কমে",
        "typical_example": "ভিডিও স্ট্রিমিং, অনলাইন গেমিং",
    },
    "ডিস্ট্রিবিউটেড (Distributed)": {
        "responsiveness_requirement": "নেটওয়ার্ক লেটেন্সি নির্ভর, একাধিক মেশিন এক সিস্টেম হিসেবে দেখায়",
        "typical_example": "ক্লাস্টার/ক্লাউড কম্পিউটিং",
    },
    "এমবেডেড (Embedded)": {
        "responsiveness_requirement": "নির্দিষ্ট, সীমিত রিসোর্সে চলে -- প্রায়ই রিয়েল-টাইম শর্তসহ",
        "typical_example": "রাউটার, ওয়াশিং মেশিন কন্ট্রোলার",
    },
}

print("OS-এর প্রকারভেদ -- তুলনামূলক টেবিল\n")
for os_type, info in os_types.items():
    print(f"[{os_type}]")
    print(f"  রেসপন্সিভনেস প্রয়োজনীয়তা : {info['responsiveness_requirement']}")
    print(f"  সাধারণ উদাহরণ            : {info['typical_example']}")
    print()

    
লক্ষ্য করুন — প্রতিটি সারি একই প্রশ্নের ভিন্ন উত্তর দিচ্ছে: "কত দ্রুত ও কতটা কঠোরভাবে রেসপন্স করতে হবে?" এই একটি প্রশ্নের উত্তরই মূলত ঠিক করে দেয় একটি OS-কে কীভাবে ডিজাইন করতে হবে।
মূল কথা · Key takeaway

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

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি স্মার্টফোনের OS-কে কি টাইম-শেয়ারিং, সফট রিয়েল-টাইম, নাকি এমবেডেড বলা উচিত?

বাস্তবে এটি একাধিক ক্যাটাগরির মিশ্রণ হতে পারে — আধুনিক স্মার্টফোন OS (Android/iOS) মূলত টাইম-শেয়ারিং (একাধিক অ্যাপ দ্রুত সুইচ করে ইন্টারঅ্যাক্টিভভাবে চলে), কিন্তু ভিডিও কল বা অডিও প্লেব্যাকের মতো অংশে সফট রিয়েল-টাইম প্রয়োজনীয়তাও থাকে (ফ্রেম দেরিতে এলে কোয়ালিটি কমে, ক্র্যাশ হয় না)। এই ক্যাটাগরিগুলো পারস্পরিক exclusive নয় — একটি বাস্তব OS প্রায়ই একাধিক ধরনের বৈশিষ্ট্য একসাথে ধারণ করে।

প্র ০২ একটি পেসমেকার (হার্ড রিয়েল-টাইম) ও একটি ভিডিও স্ট্রিমিং সার্ভিস (সফট রিয়েল-টাইম) — উভয়েই "ডেডলাইন" নিয়ে কাজ করে। তাহলে পার্থক্যটা ঠিক কোথায়?

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

প্র ০৩ ব্যাচ সিস্টেম আজ প্রায় বিলুপ্ত হলেও, ব্যাচ-স্টাইল প্রসেসিংয়ের ধারণা কোথায় এখনও দেখা যায়?

অনেক আধুনিক সিস্টেমেই ব্যাচ-স্টাইল প্রসেসিং টিকে আছে যেখানে তাৎক্ষণিক ইন্টারঅ্যাকশনের দরকার নেই — যেমন রাতের বেলা চলা বড় ডেটাবেস ব্যাকআপ জব, পে-রোল হিসাব, বা বড় ডেটা-প্রসেসিং পাইপলাইন (analytics batch job)। পার্থক্য শুধু এটাই যে আজ এগুলো একটি সম্পূর্ণ টাইম-শেয়ারিং OS-এর ভেতরে একটি নির্দিষ্ট ধরনের "জব" হিসেবে চলে, পুরো মেশিনের একমাত্র অপারেটিং মডেল হিসেবে নয়।

অনুশীলন

  1. চিন্তা করুন: আপনার বাসার মাইক্রোওয়েভ ওভেন, রাউটার ও স্মার্ট টিভি — প্রতিটির OS-কে কোন প্রকারে (এমবেডেড/রিয়েল-টাইম/টাইম-শেয়ারিং) ফেলবেন এবং কেন?

    মাইক্রোওয়েভ ও রাউটার সাধারণত এমবেডেড সিস্টেম — নির্দিষ্ট, সীমিত রিসোর্সে একটিমাত্র কাজের জন্য ডিজাইন করা, প্রায়ই এর ভেতরে কিছু হার্ড/সফট রিয়েল-টাইম উপাদানও থাকে (যেমন রাউটারের প্যাকেট ফরওয়ার্ডিং টাইমিং)। স্মার্ট টিভির OS আজকাল প্রায়ই একটি ছোট টাইম-শেয়ারিং সিস্টেম (একাধিক অ্যাপ চালানো যায়), সাথে ভিডিও প্লেব্যাকের জন্য সফট রিয়েল-টাইম প্রয়োজনীয়তা যুক্ত থাকে।

  2. পরীক্ষা করুন: উপরের কোড সেলে os_types ডিকশনারিতে নিজের একটি নতুন এন্ট্রি (যেমন "গেমিং কনসোল") যোগ করে Run চাপুন — আউটপুটে এটি ঠিক কোথায় দেখা যায়?

    Python-এর ডিকশনারি Python 3.7+ থেকে insertion order (যে ক্রমে key যোগ করা হয়েছে) সংরক্ষণ করে, তাই নতুন এন্ট্রি সবসময় শেষে (এমবেডেডের পরে) প্রিন্ট হবে, ডিকশনারিতে এটি কোথায় লেখা হয়েছে তার উপর নির্ভর করে — এটি দেখায় for key, value in dict.items() লুপ ঠিক কোন ক্রমে আইটেম প্রসেস করে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

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