Question: Please add on buddy system in my c++ coding. #include #include using namespace std; class sched { public int Nprocesses, BurstT[10], ArrivalT[10], TurnAT[10], WaitingT[10], RemainingT[10],

Please add on buddy system in my c++ coding.

#include #include

using namespace std;

class sched { public int Nprocesses, BurstT[10], ArrivalT[10], TurnAT[10], WaitingT[10], RemainingT[10], finish[10], TotalWaitingT, TotalTurnAT, TotalBurstT; void readData(); void SPN(); void computeSRT(); void Init(); void dispTime(); int getNextProcess(int); void computeRR(); };

void sched::readData() { cout <<"Enter no. of processes "; cin >> Nprocesses; cout <<" Enter the burst times in order:\ n"; for (int i = 0; i < Nprocesses; i++) cin >> BurstT[i]; cout <<" Enter the arrival times in order: "; for (int i = 0; i < Nprocesses; i++) cin >> ArrivalT[i]; }

void sched::Init() { TotalBurstT = 0; TotalWaitingT = 0; TotalTurnAT = 0; for (int i = 0; i < Nprocesses; i++) { RemainingT[i] = BurstT[i]; finish[i] = 0; WaitingT[i] = 0; TurnAT[i] = 0; TotalBurstT += BurstT[i]; } }

void sched::SPN() { int i,n,p[10]={1,2,3,4,5,6,7,8,9,10},min,k=1,btime=0; int bt[10],temp,j,at[10],wt[10],tt[10],ta=0,sum=0; float wavg=0,tavg=0,tsum=0,wsum=0; cout<<"********** Shortest Process Next (SPN) ************ "; cout<<" Enter the No. of processes : "; cin>>n; cout<<" "; for(i=0;i>at[i]; cout<<"\tService time : "; cin>>bt[i]; cout<<" "; }

/*Sorting According to Arrival Time*/

for(i=0;i

/*Arranging the table according to Burst time, Execution time and Arrival Time Arrival time <= Execution time */

for(j=0;j=at[i] && bt[i]

wt[0]=0; for(i=1;i

wavg=(wsum/n); for(i=0;i

tavg=(tsum/n);

cout<<" ****************************************************************"; cout<<" Process\t Burst\t Arrival\t Turn-around";

for(i=0;i

cout<<" Average Turnaround Time : "<

}

void sched::dispTime() { for (int i = 0; i

TotalWaitingT += WaitingT[i]; TurnAT[i] = WaitingT[i] + BurstT[i]; TotalTurnAT += TurnAT[i]; cout << "Waiting time for P" << (i + 1) << " = " << WaitingT[i] << ", Turnaround time = " << TurnAT[i] << endl; }

cout << "Avg Waiting time = " << (double)TotalWaitingT / Nprocesses << " and Avg Turnaround time = " << (double)TotalTurnAT / Nprocesses << endl; cout << "Scheduling complete "; }

int sched::getNextProcess(int time) {

int i, low; for (i = 0; i

}

void sched::computeRR() { readData(); Init(); int time; int finishprocessinqueue[64]; for (int j = 0; j < Nprocesses; j++) { finishprocessinqueue[j] = TotalBurstT; } int m = -1, q, i, k = -1, decrease = 0; int queue[64] = { 0 }; cout << "Enter the time quantum: "; cin >> q; cout << "Gantt Chart "; for (time = 0; time < TotalBurstT;) { //cout << "time is " << time << endl; for (i = Nprocesses - 1; i >= 0; i--) { if (ArrivalT[i] <= time && finish[i] == 0 && BurstT[i] == RemainningT[i]) { //cout << "Process " << i + 1 << " arrive is arrive " << endl; //cout << "This process have " << RemainningT[i] << " Remainning Time " << endl; if (RemainningT[i] < q) { //cout << "this process remainning time is less than quantum" << endl; decrease = RemainningT[i]; } else { //cout << "this process remainning time is equal or more than quantum" << endl; decrease = q; } //cout << "now place into queue" << endl; for (int l = 1; l <= decrease; l++) { k++; queue[k] = i + 1; //cout << "place " << i + 1 << " into queue " << k << endl; } RemainningT[i] = RemainningT[i] - decrease; if (RemainningT[i] == 0) { //cout << "this processes is finish" << endl; finish[i] = 1; finishprocessinqueue[i] = k; } } else if (ArrivalT[i] <= time && finish[i] == 0 && BurstT[i] != RemainningT[i]) { bool foundinqueue = false; for (int n = m + 1; n <= k; n++) { if (queue[n] == i + 1) { foundinqueue = true; break; } } if (!foundinqueue) { //cout << "This process have " << RemainningT[i] << " Remainning Time " << endl; if (RemainningT[i] < q) { //cout << "this process remainning time is less than quantum" << endl; decrease = RemainningT[i]; } else { //cout << "this process remainning time is equal or more than quantum" << endl; decrease = q; } //cout << "now place into queue" << endl; for (int l = 1; l <= decrease; l++) { k++; queue[k] = i + 1; //cout << "place " << i + 1 << " into queue " << k << endl; } RemainningT[i] = RemainningT[i] - decrease; if (RemainingT[i] == 0) { //cout << "this processes is finish" << endl; finish[i] = 1; finishprocessinqueue[i] = k; } } } } m++; for (int j = 0; j <= Nprocesses - 1; j++) { if (queue[m] != j + 1 && m < finishprocessinqueue[j] && ArrivalT[j] <= time) { WaitingT[j]++; } } if (queue[m - 1] != queue[m]) cout << "(" << time << ")|==P" << queue[m] << "==|"; time++; } cout << "(" << TotalBurstT << ")" << endl; dispTime(); }

void main() { sched s; int ch = 0;

while (ch != 3) { cout << "1.Shortest Remaining time 2.Round Robin 3.Exit Enter choice: "; cin >> ch; switch (ch) { case 1: s.computeSRT(); break; case 2: s.computeRR(); break; case 3: break; default: cout << "Invalid Option "; } } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!