The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
Sjf final
By Guest on 28th November 2022 02:25:44 AM | Syntax: TEXT | Views: 44



New paste | Download | Show/Hide line no. | Copy text to clipboard
  1. //Shortest job first
  2. #include<iostream>
  3. //#include<conio.h>
  4. using namespace std;
  5.  
  6. struct Process{
  7.   int PID;
  8.   int  arr_time;
  9.   int burst_time;
  10.   int start_time;
  11.   int completion_time;
  12.   int turnaround_time;
  13.   int response_time ;
  14.   int wait_time;
  15. };
  16.  
  17. class Scheduling{
  18.         int num;
  19.         Process *plist;
  20.         float totalturnar_time;
  21.         float totalresp_time;
  22.         float totalwait_time;
  23.         public :
  24.          void input();
  25. //       void fcfs();
  26.          void output();
  27.          void sort();
  28.          void SJF();
  29.          void sort_bursttime(int,int);
  30. };
  31. void Scheduling::sort(){
  32.         for(int i=0;i<=num-1;i++){
  33.                 for(int j=0;j<num-i-1;j++){
  34.                         if(plist[j].arr_time>plist[j+1].arr_time){
  35.                         Process x=plist[j];
  36.                         plist[j]=plist[j+1];
  37.                         plist[j+1]=x;          
  38.                         }
  39.         }
  40. }
  41. SJF();
  42. }
  43. void Scheduling::sort_bursttime(int start,int end){
  44.         for(int  i=start;i<=end;i++){
  45.                 for(int j=start;j<=end-1;j++){
  46.                         if(plist[j].burst_time>plist[j+1].burst_time){
  47.                         Process x=plist[j];
  48.                         plist[j]=plist[j+1];
  49.                         plist[j+1]=x;          
  50.                         }
  51.         }
  52. }
  53. }
  54.  void Scheduling::input(){
  55.          cout<<"Enter the number of processes ";
  56.          cin >>num;
  57.          plist=new struct Process[num];
  58.          for(int i=0;i<num;i++){
  59.                 cout<<"Enter the PID P"<<i+1<<" ";
  60.                 cin>>plist[i].PID;
  61.          }
  62.          cout<<endl;
  63.          for(int i=0;i<num;i++){
  64.                 cout<<"Enter the arrival time for P"<<i+1<<" ";
  65.                 cin>>plist[i].arr_time;
  66.          }
  67.          cout<<endl;
  68.           for(int i=0;i<num;i++){
  69.                 cout<<"Enter the burst time for P"<<i+1<<" ";
  70.                 cin>>plist[i].burst_time;
  71.          }
  72.  }
  73.  
  74. /*  void Scheduling::fcfs(){
  75.         int current_time =0;
  76.         for(int i=0;i<num;i++){
  77.                 if(plist[i].arr_time>current_time)
  78.                  current_time=plist[i].arr_time;
  79.                 plist[i].start_time=current_time;
  80.                
  81.                 plist[i].completion_time=current_time+plist[i].burst_time;
  82.                
  83.                 plist[i].turnaround_time=plist[i].completion_time-plist[i].arr_time;
  84.                
  85.                 plist[i].response_time=plist[i].start_time-plist[i].arr_time;
  86.                
  87.                 plist[i].wait_time=plist[i].response_time;
  88.                 current_time=plist[i].completion_time;
  89.                
  90.                 totalturnar_time=+plist[i].turnaround_time;
  91.            totalresp_time=+plist[i].response_time;
  92.            totalwait_time=+plist[i].wait_time;
  93.         }
  94.         sort();
  95.        
  96.   }*/
  97.   void Scheduling::SJF()
  98.   {
  99.         int j;
  100.         int start_time;
  101.         int current_time=0;
  102.         for(int i=0;i<=num-1;i++)
  103.         {
  104.                 start_time=i;
  105.                 for( j=i;j<=num-1;j++)
  106.                 {
  107.                         if(plist[j].arr_time<=current_time)
  108.                         {
  109.                                 continue;
  110.                         }
  111.                         else
  112.                         {
  113.                                 break;
  114.                         }
  115.                 }
  116.                         sort_bursttime(i,j-1);
  117.                
  118.         //              current_time=plist[i].arr_time;
  119.                 plist[i].start_time=current_time;
  120.                
  121.                 plist[i].completion_time=current_time+plist[i].burst_time;
  122.                
  123.                 plist[i].turnaround_time=plist[i].completion_time-plist[i].arr_time;
  124.                
  125.                 plist[i].response_time=plist[i].start_time-plist[i].arr_time;
  126.                
  127.                 plist[i].wait_time=plist[i].response_time;
  128.                 current_time=plist[i].completion_time;
  129.                
  130.                 totalturnar_time=+plist[i].turnaround_time;
  131.            totalresp_time=+plist[i].response_time;
  132.            totalwait_time=+plist[i].wait_time;
  133.                
  134.         }
  135.   }
  136.  void Scheduling::output(){
  137.         cout<<"Process | PID   | Arrivaltime |   Bursttime |   Starttime |    Completiontime |   turnaround time |   Response time|  wait time\n";
  138.         for(int i=0;i<num;i++){
  139.                 cout<<"P"<<plist[i].PID<<" "<<"\t"<<"|  "<<plist[i].PID<<"\t"<<"|  "<<plist[i].arr_time<<"\t"<<"      |  "<<plist[i].burst_time<<"\t"<<"    |  "<<plist[i].start_time<<"\t"<<"  |  "<<plist[i].completion_time<<"\t"<<"              |  "<<plist[i].turnaround_time<<"\t"<<"          |  "<<plist[i].response_time<<"\t"<<"           |  "<<plist[i].wait_time<<endl;   }      
  140.  
  141.    cout<<"\nTotal turn around time "<<totalturnar_time<<endl;
  142.     cout<<"\naverage turn around time "<<totalturnar_time/num<<endl;
  143.     cout<<"\nTotal response time "<<totalresp_time<<endl;
  144.      cout<<"\naverage  response time "<<totalresp_time/num<<endl;
  145.      cout<<"\nTotal wait time "<<totalwait_time<<endl;
  146.       cout<<"\naverage wait time "<<totalwait_time/num<<endl;
  147. }
  148.  int main(){
  149.         Scheduling obj;
  150.         obj.input();
  151.         obj.sort();
  152.  //     obj.fcfs();
  153.         obj.output();
  154. //      getch();
  155.         return 0;
  156.  }



  • Recent Pastes
  • Questions
    13 hours 7 mins 7 secs ago
  • Adrs
    13 hours 12 mins 17 secs ago
  • Docs
    13 hours 13 mins 1 sec ago
  • Servs
    13 hours 13 mins 44 secs ago
  • Srvs
    13 hours 18 mins 33 secs ago