আমাদের কথা খুঁজে নিন

   

প্রোগ্রামাররা আসুন, সলভ করি : প্রসেস শিডিউলিং এর প্রথম এ্যালগোরিদম

তন্ময়-অন-রান.ব্লগস্পট.কম আমার ব্লগে পুরো প্রবলেমটা এক্সপ্লেইন করেছি। এখানে টেবিল-টুবিল লেখা কঠিন তাই পুরোটা এখানে লিখতে পারলাম না। একটু ব্রিফলি এক্সপ্লেইন করছি। প্রসেস শিডিউলিং এ চারটা এ্যালগোরিদম পড়ছি। এটা সবচেয়ে সহজ এন্ড আমি মনে করি যে এটা ব্যবহৃত হয় না।

তারপরও প্রথম এটা দিয়েই শুরু করছি। প্রোগ্রামে আপনাকে প্রথমেই বলে দেওয়া হবে যে কতটি প্রসেস দেওয়া হবে। অতঃপর আপনি প্রতিটি প্রসেসর জন্য নিচের মতো করে ইনপুট নিবেন। Arrival Process Burst Time 0 1 3 1 2 2 2 3 1 টেস্ট ইনপুট এ বড়জোড় ৫-৬ টা প্রসেস দেওয়া হবে। বার্স্ট টাইম হলো টাইম ইউনিট, ধরতে পারেন সেকেন্ড।

সেই হিসেবে এখানে প্রসেস-১ ৩ সেকেন্ড কাজ করবে, প্রসেস-২ ২ সেকেন্ড, প্রসেস-৩ ১ সেকেন্ড কাজ করবে। তাহলে কাজ হচ্ছে এরকম যে, ০তম সেকেন্ডে প্রসেস-১ এর ১ সেকেন্ড কাজ করে, বাকি থাকে ২ সেকেন্ড ১ম সেকেন্ডে প্রসেস-১ এর ১ সেকেন্ড কাজ করে, বাকি থাকে ১ সেকেন্ড ২য় সেকেন্ডে প্রসেস-১ এর ১ সেকেন্ড কাজ করে, বাকি থাকে ০ সেকেন্ড ৩য় সেকেন্ডে প্রসেস-২ এর ১ সেকেন্ড কাজ করে, বাকি থাকে ১ সেকেন্ড ৪র্থ সেকেন্ডে প্রসেস-২ এর ১ সেকেন্ড কাজ করে, বাকি থাকে ০ সেকেন্ড ৫ম সেকেন্ডে প্রসেস-৩ এর ১ সেকেন্ড কাজ করে, বাকি থাকে সেকেন্ড কাজ শেষ। কিন্তু দেখা যাচ্ছে। প্রসেস-২ এসেছিলো ১ তম সেকেন্ডে অথচ তার কাজ শুরু করেছে ৩য় সেকেন্ডে। তারমানে প্রসেস-২ ২ সেকেন্ড অপেক্ষা করছে।

আবার প্রসেস-৩ আসে ২ তম সেকেন্ডে এসেছে অথচ তার কাজ শুরু হইছে ৫ম সেকেন্ডে, অর্থাৎ প্রসেস-৩ অপেক্ষা করছে ৩ সেকেন্ড। কিন্তু প্রসেস-১ ০তম সেকেন্ডেই এসেছিলো এবং তার কাজ ০ তম সেকেন্ডেই শুরু হয় তাই তাকে অপেক্ষা করতে হইনি। তাহলে দাঁড়ালো যে মোট ওয়েটিং টাইম = ০+২+৩ = ৫ গড় ওয়েটিং টাইম দাঁড়ালো = (৫/৩) = ১.৬৬ এই পুরো আউটপুট আপনাকে নিম্নরূপে দেখাতে হবে ব্যাতিক্রম: এ বার নিচের ইনপুট ধরুন, Arrival Process Burst Time 0 1 3 55 2 2 60 3 1 দেখুন, প্রসেস-১ এর কাজ হবে ০তম, ১তম, ২ তম সেকেন্ডে। তারপর ৩ তম থেকে ৫৪ তম সেকেন্ড পর্যন্ত প্রসেসর এর কোন কাজ থাকবে না, অর্থাৎ আইডেল অবস্থায় থাকবে। এরপর আবার ৫৫তম, ৫৬তম সেকেন্ডে প্রসেস-২ এর কাজ করার পর ৫৭তম, ৫৮তম, ৫৯তম সেকেন্ড প্রসেসর আইডেল থাকবে।

৬০ তম সেকেন্ডে প্রসেস-৩ এর কাজ করবে। এখানে কোন প্রসেসকেই ওয়েট করতে হয় নাই তাই মোট ওয়েটিং টাইম ০, এভারেজ ওয়েটিং টাইমও ০. নীচের স্ক্রিনশটটি দেখুন। ওকে, বলে রাখি ইনপুট আউটপুট এক্সেসপশন নিয়ে মাথা ঘামানোর দরকার নাই, উল্টাপাল্টা ইনপুট দেওয়া হবে না। প্রসেসের নাম্বার সিরিয়ালি দেওয়া হবে, ১,২,৩...করে। একটি প্রসেসের এ্যারাইভাল টাইম তার আগের প্রসেসের এ্যারাইভাল টাইমের সমান বা তার চেয়ে বড় হতে পারে।

বার্স্ট টাইমও ১০-১৫ এরকমই দেওয়া হবে আরকি। আমার করা প্রোগ্রামটি এই লিংক থেকে ডাউনলোড করতে পারেন। পুরো এক্সপ্ল্যানাশেন এর জন্য এই লিংকে যান। ------------------------------------------------------------------------- পরবর্তী প্রবলেম: শর্টেস্ট জব ফার্স্ট -- বাংলায় -- ব্রিফ শর্টেস্ট জব ফার্স্ট -- ইংরেজীতে -- ডিটেইলস ।

অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।