Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

एफसीएफएस शेड्यूलिंग के लिए सी कार्यक्रम

हमें n प्रक्रियाओं की संख्या यानी P1, P2, P3, ……, Pn और उनके संगत बर्स्ट समय दिए गए हैं। कार्य FCFS CPU शेड्यूलिंग एल्गोरिथम का उपयोग करके औसत प्रतीक्षा समय और औसत टर्नअराउंड समय ज्ञात करना है।

प्रतीक्षा समय और टर्नअराउंड समय क्या है?

  • टर्नअराउंड समय एक प्रक्रिया प्रस्तुत करने और उसके पूरा होने के बीच का समय अंतराल है।

    टर्नअराउंड समय =एक प्रक्रिया का पूरा होना - एक प्रक्रिया प्रस्तुत करना

  • वेटिंग टाइम टर्नअराउंड टाइम और बर्स्ट टाइम के बीच का अंतर है

    वेटिंग टाइम =टर्नअराउंड टाइम - बर्स्ट टाइम

FCFS शेड्यूलिंग क्या है?

पहले आओ, पहले पाओ (एफसीएफएस) जिसे फर्स्ट इन, फर्स्ट आउट (फीफो) के रूप में भी जाना जाता है, सीपीयू शेड्यूलिंग एल्गोरिदम है जिसमें सीपीयू को तैयार कतार में कतारबद्ध क्रम में प्रक्रियाओं को आवंटित किया जाता है।

FCFS नॉन-प्रीमेप्टिव शेड्यूलिंग का पालन करता है, जिसका अर्थ है कि एक बार CPU को एक प्रक्रिया के लिए आवंटित कर दिया जाता है, यह CPU को तब तक नहीं छोड़ता जब तक कि प्रक्रिया समाप्त नहीं हो जाती या कुछ I/O रुकावट के कारण रुका हुआ हो।

उदाहरण

मान लीजिए, अनुक्रम में चार प्रक्रियाएं आ रही हैं जैसे कि पी 2, पी 3, पी 1 उनके संबंधित निष्पादन समय के साथ जैसा कि नीचे दी गई तालिका में दिखाया गया है। साथ ही, उनके आने का समय 0.

प्रक्रिया आगमन क्रम निष्पादन समय मिसे में
P1 3 15
P2 1 3
P3 2 3

सिस्टम में P1, P2 और P3 प्रक्रियाओं के प्रतीक्षा समय को दर्शाने वाला गैंट चार्ट

एफसीएफएस शेड्यूलिंग के लिए सी कार्यक्रम

जैसा कि ऊपर दिखाया गया है,

प्रक्रिया P2 का प्रतीक्षा समय 0

. है

प्रक्रिया P3 का प्रतीक्षा समय 3

. है

प्रक्रिया P1 का प्रतीक्षा समय 6

. है

औसत समय =(0 + 3 + 6) / 3 =3 मिसे.

चूंकि हमने आगमन का समय 0 लिया है इसलिए टर्न अराउंड समय और पूरा होने का समय समान होगा।

उदाहरण

Input-:  processes = P1, P2, P3
        Burst time = 5, 8, 12
Output-:
Processes  Burst    Waiting    Turn around
1          5        0           5
2          8        5           13
3          12       13          25
Average Waiting time = 6.000000
Average turn around time = 14.333333

एल्गोरिदम

Start                                                                                                     Step 1-> In function int waitingtime(int proc[], int n, int burst_time[], int wait_time[])
   Set wait_time[0] = 0
   Loop For i = 1 and i < n and i++
      Set wait_time[i] = burst_time[i-1] + wait_time[i-1]
   End For
Step 2-> In function int turnaroundtime( int proc[], int n, int burst_time[], int wait_time[], int tat[])
   Loop For  i = 0 and i < n and i++
      Set tat[i] = burst_time[i] + wait_time[i]
   End For
Step 3-> In function int avgtime( int proc[], int n, int burst_time[])
   Declare and initialize wait_time[n], tat[n], total_wt = 0, total_tat = 0;
   Call waitingtime(proc, n, burst_time, wait_time)
   Call turnaroundtime(proc, n, burst_time, wait_time, tat)
   Loop For  i=0 and i<n and i++
      Set total_wt = total_wt + wait_time[i]
      Set total_tat = total_tat + tat[i]
      Print process number, burstime wait time and turnaround time
   End For
   Print "Average waiting time =i.e. total_wt / n
   Print "Average turn around time = i.e. total_tat / n
Step 4-> In int main()
   Declare the input int proc[] = { 1, 2, 3}
   Declare and initialize n = sizeof proc / sizeof proc[0]
   Declare and initialize burst_time[] = {10, 5, 8}
   Call avgtime(proc, n, burst_time)
Stop

उदाहरण

#include <stdio.h>
// Function to find the waiting time for all processes
int waitingtime(int proc[], int n,
int burst_time[], int wait_time[]) {
   // waiting time for first process is 0
   wait_time[0] = 0;
   // calculating waiting time
   for (int i = 1; i < n ; i++ )
   wait_time[i] = burst_time[i-1] + wait_time[i-1] ;
   return 0;
}
// Function to calculate turn around time
int turnaroundtime( int proc[], int n,
int burst_time[], int wait_time[], int tat[]) {
   // calculating turnaround time by adding
   // burst_time[i] + wait_time[i]
   int i;
   for ( i = 0; i < n ; i++)
   tat[i] = burst_time[i] + wait_time[i];
   return 0;
}
//Function to calculate average time
int avgtime( int proc[], int n, int burst_time[]) {
   int wait_time[n], tat[n], total_wt = 0, total_tat = 0;
   int i;
   //Function to find waiting time of all processes
   waitingtime(proc, n, burst_time, wait_time);
   //Function to find turn around time for all processes
   turnaroundtime(proc, n, burst_time, wait_time, tat);
   //Display processes along with all details
   printf("Processes  Burst   Waiting Turn around \n");
   // Calculate total waiting time and total turn
   // around time
   for ( i=0; i<n; i++) {
      total_wt = total_wt + wait_time[i];
      total_tat = total_tat + tat[i];
      printf(" %d\t  %d\t\t %d \t%d\n", i+1, burst_time[i], wait_time[i], tat[i]);
   }
   printf("Average waiting time = %f\n", (float)total_wt / (float)n);
   printf("Average turn around time = %f\n", (float)total_tat / (float)n);
   return 0;
}
// main function
int main() {
   //process id's
   int proc[] = { 1, 2, 3};
   int n = sizeof proc / sizeof proc[0];
   //Burst time of all processes
   int burst_time[] = {5, 8, 12};
   avgtime(proc, n, burst_time);
   return 0;
}

आउटपुट

Processes  Burst    Waiting    Turn around
1          5        0           5
2          8        5           13
3          12       13          25
Average Waiting time = 6.000000
Average turn around time = 14.333333

  1. सी++ प्रोग्राम फॉर शॉर्टेस्ट जॉब फर्स्ट (एसजेएफ) शेड्यूलिंग (नॉन-प्रीमेप्टिव)

    प्रक्रिया को देखते हुए, क्रमशः एक प्रक्रिया का फटने का समय और एक क्वांटम सीमा; काम शॉर्टेस्ट जॉब फर्स्ट शेड्यूलिंग नॉन-प्रीमेप्टिव पद्धति का उपयोग करके प्रतीक्षा समय, टर्नअराउंड समय और उनके संबंधित औसत समय को ढूंढना और प्रिंट करना है। सबसे छोटा कार्य पहले शेड्यूलिंग क्या है? सबसे छोटा जॉब फर्स्ट

  1. सी++ प्रोग्राम फॉर प्रायोरिटी शेड्यूलिंग

    हमें n प्रक्रियाओं की संख्या दी गई है अर्थात P1, P2, P3, ……,Pn उनके संगत बर्स्ट समय और प्रत्येक प्रक्रिया से जुड़ी प्राथमिकताओं के साथ। कार्य प्राथमिकता सीपीयू शेड्यूलिंग एल्गोरिदम का उपयोग करके औसत प्रतीक्षा समय, औसत टर्नअराउंड समय और प्रक्रिया निष्पादन का क्रम खोजना है। प्रतीक्षा समय और टर्नअराउं

  1. आसान समय-निर्धारण के लिए सर्वश्रेष्ठ समय क्षेत्र परिवर्तक

    एक ऐसी दुनिया में जो पहले से कहीं अधिक दूर से काम कर रही है, एक-दूसरे के टाइमज़ोन को जानना पहले से कहीं अधिक महत्वपूर्ण हो गया है। कई कार्यकर्ता जीएमटी, पीडीटी, पीएसटी और अन्य समय-क्षेत्र के योगों से खुद को परिचित करना शुरू कर रहे हैं। सहकर्मियों का दुनिया भर में फैलना जितना अच्छा है, यह थोड़ा समस्य