তন্ময়-অন-রান.ব্লগস্পট.কম যারা প্রথম প্রব্লেমটি মিস করছেন তারা এই লিংক থেকে দেখে নিতে পারেন।
"ফার্স্ট কাম ফার্স্ট সার্ভড" - বাংলায় - ব্রিফ
"ফার্স্ট কাম ফার্স্ট সার্ভড" - ইংরেজীতে - ডিটেইলস
----------------------------------------------------------------------------
আমার ব্লগে পুরো প্রবলেমটা এক্সপ্লেইন করেছি। এখানে টেবিল-টুবিল লেখা কঠিন তাই পুরোটা এখানে লিখতে পারলাম না। একটু ব্রিফলি এক্সপ্লেইন করছি।
প্রোগ্রামে আপনাকে প্রথমেই বলে দেওয়া হবে যে কতটি প্রসেস দেওয়া হবে।
অতঃপর আপনি প্রতিটি প্রসেসর জন্য নিচের মতো করে ইনপুট নিবেন।
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) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।