অপারেটিং সিস্টেমের প্রকারভেদ
এই পাঠে যা শিখবেন
- ব্যাচ সিস্টেম কী ছিল এবং কেন আজকের বেশিরভাগ OS আর এভাবে কাজ করে না
- টাইম-শেয়ারিং সিস্টেম কীভাবে একাধিক ব্যবহারকারী/প্রোগ্রামের মধ্যে দ্রুত CPU সুইচ করে ইন্টারঅ্যাক্টিভ অভিজ্ঞতা দেয়
- হার্ড বনাম সফট রিয়েল-টাইম সিস্টেমের মধ্যে পার্থক্য এবং ডেডলাইন মিস করার ভিন্ন ভিন্ন পরিণতি
- ডিস্ট্রিবিউটেড ও এমবেডেড সিস্টেমের সংক্ষিপ্ত পরিচিতি এবং কোথায় প্রতিটি ব্যবহৃত হয়
১ · ব্যাচ সিস্টেম — একটি ঐতিহাসিক প্রেক্ষাপট
ব্যাচ সিস্টেমBatch Systemজব (কাজ) গুলো আগে থেকে জমা দেওয়া হয় এবং কোনো ব্যবহারকারীর সাথে সরাসরি ইন্টারঅ্যাকশন ছাড়াই একের পর এক সারিবদ্ধভাবে চালানো হয়। ছিল কম্পিউটিং-এর প্রথম দিকের মডেল — ব্যবহারকারীরা তাদের জব (যেমন একটি প্রোগ্রাম ও তার ইনপুট ডেটা) কার্ড বা টেপে জমা দিতেন, অপারেটর একগুচ্ছ জব একসাথে ("ব্যাচ") জমা করে কম্পিউটারে চালাতেন, এবং ফলাফল অনেক পরে পাওয়া যেত। এখানে কোনো রিয়েল-টাইম ইন্টারঅ্যাকশনের সুযোগ ছিল না — একটি জব চলাকালীন ব্যবহারকারী তার সাথে কথা বলতে বা মাঝপথে কিছু পরিবর্তন করতে পারতেন না। আজকের প্রেক্ষাপটে ব্যাচ-স্টাইল প্রসেসিং এখনও টিকে আছে (যেমন রাতের বেলা চলা বড় ডেটা-প্রসেসিং জব), কিন্তু এটি আর কোনো OS-এর প্রধান ডিজাইন মডেল নয়।
২ · টাইম-শেয়ারিং / মাল্টিটাস্কিং সিস্টেম
টাইম-শেয়ারিং সিস্টেমTime-sharing SystemCPU-কে অত্যন্ত দ্রুত একাধিক ইন্টারঅ্যাক্টিভ ব্যবহারকারী/প্রোগ্রামের মধ্যে সুইচ করে, প্রত্যেককে মনে করায় যে সে একাই সম্পূর্ণ কম্পিউটার ব্যবহার করছে। হলো L01-এ উল্লেখিত "একসাথে চলছে বলে মনে হওয়া" আচরণের ভিত্তি — OS মিলিসেকেন্ডের ভগ্নাংশে এক প্রোগ্রাম থেকে আরেকটিতে সুইচ করে, ফলে প্রতিটি প্রোগ্রাম দ্রুত রেসপন্স পায় বলে মনে হয়। এটিই আজকের ডেস্কটপ ও সার্ভার OS-এর (Windows, Linux, macOS) মূলধারার মডেল — ব্যবহারকারী সরাসরি ইন্টারঅ্যাক্ট করেন এবং দ্রুত ফলাফল আশা করেন।
৩ · রিয়েল-টাইম সিস্টেম — হার্ড বনাম সফট
রিয়েল-টাইম সিস্টেমReal-time Systemএমন একটি সিস্টেম যেখানে ফলাফলের সঠিকতা শুধু গণনার ফলাফলের উপর নয়, বরং সেই ফলাফল কত দ্রুত পাওয়া গেল তার উপরও নির্ভর করে — একটি নির্দিষ্ট সময়সীমার (ডেডলাইন) মধ্যে রেসপন্স করতেই হয়। দুই ভাগে বিভক্ত —
ডেডলাইন মিস করা মানে সিস্টেমের সম্পূর্ণ ব্যর্থতা — যেমন মেডিকেল ডিভাইস (পেসমেকার) বা ইন্ডাস্ট্রিয়াল কন্ট্রোল সিস্টেম, যেখানে দেরি হওয়া মানে বিপর্যয়।
ডেডলাইন মিস করলে কোয়ালিটি কমে কিন্তু সিস্টেম চলতে থাকে — যেমন ভিডিও স্ট্রিমিং (একটি ফ্রেম দেরিতে এলে সামান্য বাফারিং, ক্র্যাশ নয়)।
হার্ড রিয়েল-টাইমে "একটু দেরিতে হলেও ঠিক আছে" বলে কিছু নেই — ডেডলাইন মিস করা মানেই সিস্টেম তার কাজে ব্যর্থ। সফট রিয়েল-টাইমে দেরি একটি ট্রেড-অফ — খারাপ, কিন্তু বিপর্যয়কর নয়। এই পার্থক্যই ঠিক করে দেয় কতটা কঠোরভাবে OS-কে ডেডলাইন নিশ্চিত করতে হবে।
৪ · ডিস্ট্রিবিউটেড ও এমবেডেড সিস্টেম
ডিস্ট্রিবিউটেড সিস্টেমDistributed Systemএকাধিক স্বাধীন, শারীরিকভাবে আলাদা কম্পিউটার একসাথে কাজ করে ব্যবহারকারীর কাছে একটি একক, সমন্বিত সিস্টেম হিসেবে উপস্থাপিত হয়।
OS-লেভেলে দেখলে, একাধিক মেশিন নেটওয়ার্কের মাধ্যমে সমন্বিত হয়ে একটি একক সিস্টেমের মতো আচরণ করে (এই সমন্বয়ের
নেটওয়ার্কিং দিকটি ../computer-networks/ কোর্সে বিস্তারিত কভার হয়েছে)।
এমবেডেড সিস্টেমEmbedded Systemএকটি নির্দিষ্ট, একক উদ্দেশ্যের হার্ডওয়্যারে চলা OS, যার রিসোর্স (মেমরি, প্রসেসিং পাওয়ার) ফিক্সড ও সীমিত। একটি নির্দিষ্ট-উদ্দেশ্যের হার্ডওয়্যারে (যেমন একটি রাউটার বা একটি ওয়াশিং মেশিন কন্ট্রোলার) চলে — রিসোর্স খুবই সীমিত ও ফিক্সড, এবং প্রায়ই এর সাথে কিছু রিয়েল-টাইম প্রয়োজনীয়তাও জড়িত থাকে।
৫ · একটি তুলনামূলক সিমুলেশন
নিচের কোড সেলে প্রতিটি OS প্রকারের রেসপন্সিভনেস প্রয়োজনীয়তা ও একটি বাস্তব উদাহরণ পাশাপাশি রেখে একটি তুলনামূলক টেবিল তৈরি করা হলো।
# 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 ডিজাইন নেই — প্রতিটি প্রকার একটি নির্দিষ্ট ট্রেড-অফের জন্য অপ্টিমাইজ করা। এই কোর্সের বাকি অংশ মূলত টাইম-শেয়ারিং সিস্টেমের অভ্যন্তরীণ ব্যবস্থাপনা (প্রসেস, শিডিউলিং, মেমরি) নিয়ে, কারণ এটিই আজকের সবচেয়ে সাধারণ মডেল — তবে হার্ড রিয়েল-টাইমের কঠোরতা ও ডিস্ট্রিবিউটেড সিস্টেমের সমন্বয়ের ধারণা পরের পাঠগুলোতেও মাঝে মাঝে ফিরে আসবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি স্মার্টফোনের OS-কে কি টাইম-শেয়ারিং, সফট রিয়েল-টাইম, নাকি এমবেডেড বলা উচিত?
বাস্তবে এটি একাধিক ক্যাটাগরির মিশ্রণ হতে পারে — আধুনিক স্মার্টফোন OS (Android/iOS) মূলত টাইম-শেয়ারিং (একাধিক অ্যাপ দ্রুত সুইচ করে ইন্টারঅ্যাক্টিভভাবে চলে), কিন্তু ভিডিও কল বা অডিও প্লেব্যাকের মতো অংশে সফট রিয়েল-টাইম প্রয়োজনীয়তাও থাকে (ফ্রেম দেরিতে এলে কোয়ালিটি কমে, ক্র্যাশ হয় না)। এই ক্যাটাগরিগুলো পারস্পরিক exclusive নয় — একটি বাস্তব OS প্রায়ই একাধিক ধরনের বৈশিষ্ট্য একসাথে ধারণ করে।
প্র ০২ একটি পেসমেকার (হার্ড রিয়েল-টাইম) ও একটি ভিডিও স্ট্রিমিং সার্ভিস (সফট রিয়েল-টাইম) — উভয়েই "ডেডলাইন" নিয়ে কাজ করে। তাহলে পার্থক্যটা ঠিক কোথায়?
পার্থক্যটা ডেডলাইন মিস করার পরিণতি-তে, ডেডলাইনের উপস্থিতিতে নয়। পেসমেকারে একটি সিগন্যাল সময়মতো না গেলে জীবন-বিপন্নকারী পরিণতি হতে পারে — এটি সম্পূর্ণ সিস্টেম ব্যর্থতা হিসেবে গণ্য হয়। ভিডিও স্ট্রিমিং-এ একটি ফ্রেম দেরিতে এলে সাময়িক বাফারিং হয় — অস্বস্তিকর কিন্তু বিপর্যয়কর নয়, এবং সিস্টেম স্বাভাবিকভাবেই পরবর্তী ফ্রেমের সাথে চলতে থাকে।
প্র ০৩ ব্যাচ সিস্টেম আজ প্রায় বিলুপ্ত হলেও, ব্যাচ-স্টাইল প্রসেসিংয়ের ধারণা কোথায় এখনও দেখা যায়?
অনেক আধুনিক সিস্টেমেই ব্যাচ-স্টাইল প্রসেসিং টিকে আছে যেখানে তাৎক্ষণিক ইন্টারঅ্যাকশনের দরকার নেই — যেমন রাতের বেলা চলা বড় ডেটাবেস ব্যাকআপ জব, পে-রোল হিসাব, বা বড় ডেটা-প্রসেসিং পাইপলাইন (analytics batch job)। পার্থক্য শুধু এটাই যে আজ এগুলো একটি সম্পূর্ণ টাইম-শেয়ারিং OS-এর ভেতরে একটি নির্দিষ্ট ধরনের "জব" হিসেবে চলে, পুরো মেশিনের একমাত্র অপারেটিং মডেল হিসেবে নয়।
অনুশীলন
-
চিন্তা করুন: আপনার বাসার মাইক্রোওয়েভ ওভেন, রাউটার ও স্মার্ট টিভি — প্রতিটির OS-কে কোন প্রকারে (এমবেডেড/রিয়েল-টাইম/টাইম-শেয়ারিং) ফেলবেন এবং কেন?
মাইক্রোওয়েভ ও রাউটার সাধারণত এমবেডেড সিস্টেম — নির্দিষ্ট, সীমিত রিসোর্সে একটিমাত্র কাজের জন্য ডিজাইন করা, প্রায়ই এর ভেতরে কিছু হার্ড/সফট রিয়েল-টাইম উপাদানও থাকে (যেমন রাউটারের প্যাকেট ফরওয়ার্ডিং টাইমিং)। স্মার্ট টিভির OS আজকাল প্রায়ই একটি ছোট টাইম-শেয়ারিং সিস্টেম (একাধিক অ্যাপ চালানো যায়), সাথে ভিডিও প্লেব্যাকের জন্য সফট রিয়েল-টাইম প্রয়োজনীয়তা যুক্ত থাকে।
-
পরীক্ষা করুন: উপরের কোড সেলে
os_typesডিকশনারিতে নিজের একটি নতুন এন্ট্রি (যেমন "গেমিং কনসোল") যোগ করে Run চাপুন — আউটপুটে এটি ঠিক কোথায় দেখা যায়?Python-এর ডিকশনারি Python 3.7+ থেকে insertion order (যে ক্রমে key যোগ করা হয়েছে) সংরক্ষণ করে, তাই নতুন এন্ট্রি সবসময় শেষে (এমবেডেডের পরে) প্রিন্ট হবে, ডিকশনারিতে এটি কোথায় লেখা হয়েছে তার উপর নির্ভর করে — এটি দেখায়
for key, value in dict.items()লুপ ঠিক কোন ক্রমে আইটেম প্রসেস করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরবর্তী পাঠ — সিস্টেম কল ও OS সার্ভিস L03 একটি প্রোগ্রাম কীভাবে OS-কে অনুরোধ পাঠায়, এবং user mode বনাম kernel mode আসলে কী।
- Computer Networks কোর্স সহোদর কোর্স ডিস্ট্রিবিউটেড সিস্টেমের নেটওয়ার্কিং দিকটি (একাধিক মেশিনের মধ্যে যোগাযোগ) বিস্তারিতভাবে দেখুন।
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৬টি পাঠ সব মডিউল ও পাঠের তালিকা এক জায়গায়।