174k views
0 votes
This programming project is to simulate a few CPU scheduling policies discussed in the class. You willwrite a C program to implement a simulator with different scheduling algorithms. The simulator selects atask to run from ready queue based on the scheduling algorithm. Since the project intends to simulate aCPU scheduler, so it does not require any actual process creation or execution. When a task is scheduled,the simulator will simply print out what task is selected to run at a time. It outputs the way similar to Ganttchart style.

User Taylorsuk
by
5.1k points

1 Answer

6 votes

Answer:

FCFS Scheduling Algorithm:-

// C++ program for implementation of FCFS

// scheduling

#include<iostream>

using namespace std;

// Function to find the waiting time for all

// processes

void findWaitingTime(int processes[], int n,

int bt[], int wt[])

{

// waiting time for first process is 0

wt[0] = 0;

// calculating waiting time

for (int i = 1; i < n ; i++ )

wt[i] = bt[i-1] + wt[i-1] ;

}

// Function to calculate turn around time

void findTurnAroundTime( int processes[], int n,

int bt[], int wt[], int tat[])

{

// calculating turnaround time by adding

// bt[i] + wt[i]

for (int i = 0; i < n ; i++)

tat[i] = bt[i] + wt[i];

}

//Function to calculate average time

void findavgTime( int processes[], int n, int bt[])

{

int wt[n], tat[n], total_wt = 0, total_tat = 0;

//Function to find waiting time of all processes

findWaitingTime(processes, n, bt, wt);

//Function to find turn around time for all processes

findTurnAroundTime(processes, n, bt, wt, tat);

//Display processes along with all details

cout << "Processes "<< " Burst time "

<< " Waiting time " << " Turn around time\\";

// Calculate total waiting time and total turn

// around time

for (int i=0; i<n; i++)

{

total_wt = total_wt + wt[i];

total_tat = total_tat + tat[i];

cout << " " << i+1 << "\t\t" << bt[i] <<"\t "

<< wt[i] <<"\t\t " << tat[i] <<endl;

}

cout << "Average waiting time = "

<< (float)total_wt / (float)n;

cout << "\\Average turn around time = "

<< (float)total_tat / (float)n;

}

// Driver code

int main()

{

//process id's

int processes[] = { 1, 2, 3};

int n = sizeof processes / sizeof processes[0];

//Burst time of all processes

int burst_time[] = {10, 5, 8};

findavgTime(processes, n, burst_time);

return 0;

}

Step-by-step explanation:

See output

This programming project is to simulate a few CPU scheduling policies discussed in-example-1
User Nguyen Manh Cuong
by
4.8k points