OS PROGRAMS
OS PROGRAMS
ID : f2022266476
ASSIGNMENT NO 2
TASK 1 :
SJF C++ PROGRAM:
#include <iostream>
#include <algorithm>
class Process {
public:
int pid;
int burstTime;
int waitingTime;
int turnaroundTime;
});
processes[0].waitingTime = 0;
};
Process::sortByBurstTime(processes, n);
Process::calculateWaitingTime(processes, n);
Process::calculateTurnaroundTime(processes, n);
totalWaitingTime += processes[i].waitingTime;
totalTurnaroundTime += processes[i].turnaroundTime;
cout << "\nAverage Turnaround Time: " << totalTurnaroundTime / n << endl;
int main() {
int n;
cin >> n;
Process processes[n];
for (int i = 0; i < n; ++i) {
processes[i].pid = i + 1;
cout << "Enter burst time for Process " << processes[i].pid << ": ";
SJF(processes, n);
return 0;
#include <algorithm>
class Process {
public:
int pid;
int burstTime;
int waitingTime;
int turnaroundTime;
});
processes[0].waitingTime = 0;
};
Process::sortByBurstTimeDesc(processes, n);
Process::calculateWaitingTime(processes, n);
Process::calculateTurnaroundTime(processes, n);
totalWaitingTime += processes[i].waitingTime;
totalTurnaroundTime += processes[i].turnaroundTime;
cout << "\nAverage Turnaround Time: " << totalTurnaroundTime / n << endl;
int main() {
int n;
cout << "Enter the number of processes: ";
cin >> n;
Process processes[n];
processes[i].pid = i + 1;
cout << "Enter burst time for Process " << processes[i].pid << ": ";
LJF(processes, n);
return 0;
Qno 3(SRTF):
#include <iostream>
#include <climits>
class Process {
public:
int pid;
int arrivalTime;
int burstTime;
int remainingTime;
int completionTime;
int waitingTime;
int turnaroundTime;
int currentTime = 0;
int completed = 0;
processes[i].remainingTime = processes[i].burstTime;
minIndex = -1;
minRemainingTime = INT_MAX;
minIndex = i;
minRemainingTime = processes[i].remainingTime;
if (minIndex == -1) {
currentTime++;
continue;
processes[minIndex].remainingTime--;
currentTime++;
if (processes[minIndex].remainingTime == 0) {
completed++;
processes[minIndex].completionTime = currentTime;
processes[minIndex].turnaroundTime = processes[minIndex].completionTime -
processes[minIndex].arrivalTime;
processes[minIndex].waitingTime = processes[minIndex].turnaroundTime -
processes[minIndex].burstTime;
cout << "P" << processes[i].pid << "\t\t" << processes[i].arrivalTime << "\t\t"
totalWaitingTime += processes[i].waitingTime;
totalTurnaroundTime += processes[i].turnaroundTime;
cout << "\nAverage Turnaround Time: " << totalTurnaroundTime / n << endl;
int main() {
int n;
cin >> n;
Process processes[n];
processes[i].pid = i + 1;
cout << "Enter arrival time for Process " << processes[i].pid << ": ";
SRTF(processes, n);
return 0;
QNO4(LRTF):
#include <iostream>
#include <climits>
class Process {
public:
int pid;
int arrivalTime;
int burstTime;
int remainingTime;
int completionTime;
int waitingTime;
int turnaroundTime;
};
int currentTime = 0;
int completed = 0;
processes[i].remainingTime = processes[i].burstTime;
maxIndex = -1;
maxRemainingTime = INT_MIN;
maxIndex = i;
maxRemainingTime = processes[i].remainingTime;
if (maxIndex == -1) {
currentTime++;
continue;
processes[maxIndex].remainingTime--;
currentTime++;
if (processes[maxIndex].remainingTime == 0) {
completed++;
processes[maxIndex].completionTime = currentTime;
processes[maxIndex].turnaroundTime = processes[maxIndex].completionTime -
processes[maxIndex].arrivalTime;
processes[maxIndex].waitingTime = processes[maxIndex].turnaroundTime -
processes[maxIndex].burstTime;
cout << "P" << processes[i].pid << "\t\t" << processes[i].arrivalTime << "\t\t"
totalWaitingTime += processes[i].waitingTime;
totalTurnaroundTime += processes[i].turnaroundTime;
cout << "\nAverage Turnaround Time: " << totalTurnaroundTime / n << endl;
int main() {
int n;
cin >> n;
Process processes[n];
processes[i].pid = i + 1;
cout << "Enter arrival time for Process " << processes[i].pid << ": ";
cout << "Enter burst time for Process " << processes[i].pid << ": ";
LRTF(processes, n);
return 0;
}
QNO 5(ROUND ROBIN):
#include <iostream>
#include <queue>
class Process {
public:
int pid;
int arrivalTime;
int burstTime;
int remainingTime;
int waitingTime;
int turnaroundTime;
int completionTime;
};
queue<int> readyQueue;
processes[i].remainingTime = processes[i].burstTime;
readyQueue.push(i);
inQueue[i] = true;
}
if (readyQueue.empty()) {
currentTime++;
continue;
readyQueue.pop();
inQueue[currentIndex] = false;
processes[currentIndex].remainingTime -= executionTime;
currentTime += executionTime;
readyQueue.push(i);
inQueue[i] = true;
if (processes[currentIndex].remainingTime > 0) {
readyQueue.push(currentIndex);
inQueue[currentIndex] = true;
} else {
completed++;
processes[currentIndex].completionTime = currentTime;
processes[currentIndex].turnaroundTime = processes[currentIndex].completionTime -
processes[currentIndex].arrivalTime;
processes[currentIndex].waitingTime = processes[currentIndex].turnaroundTime -
processes[currentIndex].burstTime;
cout << "P" << processes[i].pid << "\t\t" << processes[i].arrivalTime << "\t\t"
totalWaitingTime += processes[i].waitingTime;
totalTurnaroundTime += processes[i].turnaroundTime;
cout << "\nAverage Turnaround Time: " << totalTurnaroundTime / n << endl;
int main() {
int n, timeQuantum;
cin >> n;
Process processes[n];
processes[i].pid = i + 1;
cout << "Enter arrival time for Process " << processes[i].pid << ": ";
cout << "Enter burst time for Process " << processes[i].pid << ": ";
cin >> processes[i].burstTime;
RoundRobin(processes, n, timeQuantum);
return 0;