प्रक्रिया, प्रक्रिया का बर्स्ट समय और एक क्वांटम सीमा दी गई है; कार्य नॉन-प्रीमेप्टिव शॉर्टेस्ट जॉब फर्स्ट शेड्यूलिंग विधि का उपयोग करके प्रतीक्षा समय, टर्नअराउंड समय और उनके संबंधित औसत समय को खोजना और प्रिंट करना है।
शॉर्टेस्ट जॉब फर्स्ट शेड्यूलिंग क्या है?
शॉर्टेस्ट जॉब फर्स्ट शेड्यूलिंग वह जॉब या प्रोसेस शेड्यूलिंग एल्गोरिदम है जो नॉन-प्रीमेप्टिव शेड्यूलिंग अनुशासन का पालन करता है। इसमें, शेड्यूलर वेटिंग कतार से उस प्रक्रिया का चयन करता है जिसका पूरा होने का समय सबसे कम होता है और उस जॉब या प्रोसेस को CPU आवंटित करता है। शॉर्टेस्ट जॉब फर्स्ट FIFO एल्गोरिदम से अधिक वांछनीय है क्योंकि SJF अधिक इष्टतम है क्योंकि यह औसत प्रतीक्षा समय को कम करता है जिससे थ्रूपुट बढ़ता है।
टर्नअराउंड समय, प्रतीक्षा समय और पूर्णता समय क्या है?
- पूर्णता समय वह समय है जो प्रक्रिया को अपना निष्पादन पूरा करने के लिए आवश्यक होता है
टर्नअराउंड समय एक प्रक्रिया के सबमिशन और उसके पूरा होने के बीच का समय अंतराल है।
टर्नअराउंड समय = एक प्रक्रिया का पूरा होना - एक प्रक्रिया का सबमिशन
प्रतीक्षा समय टर्नअराउंड समय और बर्स्ट समय का अंतर है
प्रतीक्षा समय = टर्नअराउंड समय - बर्स्ट समय
उदाहरण
हमें प्रक्रियाओं P1, P2, P3, P4 और P5 दिए गए हैं जिनके संबंधित बर्स्ट समय नीचे दिए गए हैं
| प्रक्रिया | बर्स्ट समय |
|---|---|
| P1 | 4 |
| P2 | 2 |
| P3 | 8 |
| P4 | 1 |
| P5 | 9 |
चूंकि प्रक्रिया P4 का बर्स्ट समय सभी प्रक्रियाओं में न्यूनतम है इसलिए इसे पहले CPU आवंटित किया जाएगा। उसके बाद, P2 कतारबद्ध होगा फिर P1, P3 और P5।

औसत प्रतीक्षा समय गैंट चार्ट के आधार पर गणना की जाती है। P1 को 3 के लिए इंतजार करना पड़ता है, P2 को 1 के लिए, P3 को 7 के लिए, P4 को 0 के लिए और P5 को 15 के लिए। तो, उनका औसत प्रतीक्षा समय होगा −

एल्गोरिदम
शुरुआत चरण 1-> फ़ंक्शन swap(int *a, int *b) में temp = *a सेट करें *a = *b सेट करें *b = temp सेट करें चरण 2-> फ़ंक्शन arrangeArrival(int num, int mat[][3]) में लूप i=0 से i<num और i++ तक लूप j=0 से j<num-i-1 और j++ तक यदि mat[1][j] > mat[1][j+1] तो, k=0 से k<5 और k++ तक के लिए swap(mat[k][j], mat[k][j+1]) फ़ंक्शन कॉल करें चरण 3-> फ़ंक्शन 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<num और i++ तक temp = mat[3][i-1] सेट करें low = mat[2][i] सेट करें लूप j=i से j<num और j++ तक यदि temp >= 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]) फ़ंक्शन कॉल करें चरण 4-> फ़ंक्शन int main() में num = 3, temp घोषित करें और सेट करें mat[6][3] = {1, 2, 3, 3, 6, 4, 2, 3, 4} घोषित करें और सेट करें प्रोसेस ID, आगमन समय, बर्स्ट समय प्रिंट करें लूप i=0 से i<num और i++ तक mat[0][i], mat[1][i], mat[2][i] के मान प्रिंट करें arrangeArrival(num, mat) फ़ंक्शन कॉल करें completionTime(num, mat) फ़ंक्शन कॉल करें प्रोसेस ID, आगमन समय, बर्स्ट समय, प्रतीक्षा समय, टर्नअराउंड समय प्रिंट करें लूप i=0 से i<num और i++ तक mat[0][i], mat[1][i], mat[2][i], mat[4][i], mat[5][i] के मान प्रिंट करें रुकेंउदाहरण
// आगमन समय के साथ शॉर्टेस्ट जॉब फर्स्ट को लागू करने के लिए C++ प्रोग्राम #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<num; i++) { for(int j=0; j<num-i-1; j++) { if(mat[1][j] > 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<num; i++) { temp = mat[3][i-1]; int low = mat[2][i]; for(int j=i; j<num; j++) { if(temp >= 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<<"व्यवस्था से पहले...\n"; cout<<"प्रोसेस ID\tआगमन समय\tबर्स्ट समय\n"; for(int i=0; i<num; i++) { cout<<mat[0][i]<<"\t\t"<<mat[1][i]<<"\t\t"<<mat[2][i]<<"\n"; } arrangeArrival(num, mat); completionTime(num, mat); cout<<"अंतिम परिणाम...\n"; cout<<"प्रोसेस ID\tआगमन समय\tबर्स्ट समय\tप्रतीक्षा समय\tटर्नअराउंड समय\n"; for(int i=0; i<num; i++) { cout<<mat[0][i]<<"\t\t"<<mat[1][i]<<"\t\t"<<mat[2][i]<<"\t\t"<<mat[4][i]<<"\t\t"<<mat[5][i]<<"\n"; } }आउटपुट
