প্রসেস, তাদের burst time এবং কোয়ান্টাম লিমিট দেওয়া আছে; কাজ হলো শর্টেস্ট জব ফার্স্ট শিডিউলিং নন-প্রি-এম্পটিভ পদ্ধতিতে ওয়েটিং টাইম, টার্নআরাউন্ড টাইম এবং তাদের গড় মান বের করে প্রিন্ট করা।
শর্টেস্ট জব ফার্স্ট শিডিউলিং কী?
শর্টেস্ট জব ফার্স্ট শিডিউলিং হলো একটি প্রসেস শিডিউলিং অ্যালগরিদম যা নন-প্রি-এম্পটিভ শিডিউলিং ডিসিপ্লিন মেনে চলে। এতে শিডিউলার ওয়েটিং কিউ থেকে সবচেয়ে কম কমপ্লিশন টাইম বালা প্রসেস সিলেক্ট করে সেটি সিপিইউ alok করে। SJF FIFO অ্যালগরিদমের চেয়ে বেশি উপযোগী কারণ এটি গড় ওয়েটিং টাইম কমায় এবং থ্রুপুট বাড়ায়।
টার্নআরাউন্ড টাইম, ওয়েটিং টাইম এবং কমপ্লিশন টাইম কী?
- কমপ্লিশন টাইম হলো প্রসেস তার এক্সিকিউশন কমপ্লিট করতে যায় সময়।
টার্নআরাউন্ড টাইম হলো প্রসেস সাবমিশন থেকে কমপ্লিশন পর্যন্ত সময় अन्तর।
টার্নআরাউন্ড টাইম = প্রসেসের কমপ্লিশন - প্রসেসের সাবমিশন
ওয়েটিং টাইম হলো টার্নআরাউন্ড টাইম এবং burst time-এর পার্থক্য।
ওয়েটিং টাইম = টার্নআরাউন্ড টাইম - burst time
উদাহরণ
প্রসেস P1, P2, P3, P4, P5 এবং তাদের burst time নিচে দেওয়া হলো:
| প্রসেস | বার্স্ট টাইম |
|---|---|
| P1 | 4 |
| P2 | 2 |
| P3 | 8 |
| P4 | 1 |
| P5 | 9 |
P4-এর burst time সবচেয়ে কম, তাই এটি প্রথমে সিপিইউ পাবে। তারপর P2, P1, P3, P5।

গ্যান্ট চার্টের ভিত্তিতে গড় ওয়েটিং টাইম: P1 অপেক্ষা ৩, P2 অপেক্ষা ১, P3 অপেক্ষা ৭, P4 অপেক্ষা ০, P5 অপেক্ষা ১৫। গড় ওয়েটিং টাইম:

অ্যালগরিদম
শুরু
ধাপ ১ -> swap(int *a, int *b) ফাংশনে
temp = *a সেট
*a = *b সেট
*b = temp সেট
ধাপ ২ -> arrangeArrival(int num, int mat[][3]) ফাংশনে
লুপ i=0 থেকে i mat[1][j+1] হয়, তবে
লুপ k=0 থেকে k<5 এবং k++
swap(mat[k][j], mat[k][j+1]) কল
ধাপ ৩ -> completionTime(int num, int mat[][3]) ফাংশনে
temp, val ঘোষণা
mat[3][0] = mat[1][0] + mat[2][0] সেট
mat[5][0] = mat[3][0] - mat[1][0] সেট
mat[4][0] = mat[5][0] - mat[2][0] সেট
লুপ i=1 থেকে i= mat[1][j] && low >= mat[2][j] হয়, তবে
low = mat[2][j] সেট
val = j সেট
শেষ
mat[3][val] = temp + mat[2][val] সেট
mat[5][val] = mat[3][val] - mat[1][val] সেট
mat[4][val] = mat[5][val] - mat[2][val] সেট
লুপ k=0 থেকে k<6 এবং k++
swap(mat[k][val], mat[k][i]) কল
শেষ
ধাপ ৪ -> int main() ফাংশনে
num = 3, temp ঘোষণা এবং সেট
mat[6][3] = {1, 2, 3, 3, 6, 4, 2, 3, 4} ঘোষণা এবং সেট
প্রসেস আইডি, আরাইভাল টাইম, বার্স্ট টাইম প্রিন্ট
লুপ i=0 থেকে i
উদাহরণ
// C++ program to implement Shortest Job first with Arrival Time
#include<iostream>
using namespace std;
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void arrangeArrival(int num, int mat[][3]) {
for(int i=0; i mat[1][j+1]) {
for(int k=0; k<5; k++) {
swap(mat[k][j], mat[k][j+1]);
}
}
}
}
}
void completionTime(int num, int mat[][3]) {
int temp, val;
mat[3][0] = mat[1][0] + mat[2][0];
mat[5][0] = mat[3][0] - mat[1][0];
mat[4][0] = mat[5][0] - mat[2][0];
for(int i=1; i= mat[1][j] && low >= mat[2][j]) {
low = mat[2][j];
val = j;
}
}
mat[3][val] = temp + mat[2][val];
mat[5][val] = mat[3][val] - mat[1][val];
mat[4][val] = mat[5][val] - mat[2][val];
for(int k=0; k<6; k++) {
swap(mat[k][val], mat[k][i]);
}
}
}
int main() {
int num = 3, temp;
int mat[6][3] = {1, 2, 3, 3, 6, 4, 2, 3, 4};
cout<<"Before Arrange...\n";
cout<<"Process ID\tArrival Time\tBurst Time\n";
for(int i=0; i
আউটপুট
