Added untested codes.
This commit is contained in:
parent
b5f96daec6
commit
a4f3f5d7ba
65
Codes/FCFS.py
Executable file
65
Codes/FCFS.py
Executable file
@ -0,0 +1,65 @@
|
||||
'''
|
||||
Every process is an obj with it's own wt,bt,at etc.
|
||||
the table is an obj of table class.
|
||||
Our table is just a list of process objects
|
||||
wt,tat,ct are calculated by waitCalculator()
|
||||
createTable() displays table neatly
|
||||
'''
|
||||
|
||||
|
||||
|
||||
|
||||
class ProcessClass:
|
||||
def __init__(self): #constructor in Py
|
||||
self.name =input("Enter Process Name: ")
|
||||
self.at = int(input("Enter Arrival Time: "))
|
||||
self.bt = int(input("Enter Burst Time: "))
|
||||
self.wt = 0
|
||||
self.tat = 0
|
||||
self.ct = 0
|
||||
def display(self):
|
||||
print(f"{self.name}:\t{self.at}\t{self.bt}\t{self.wt}\t{self.ct}\t\t{self.tat}\n")
|
||||
|
||||
class Table_class:
|
||||
|
||||
def __init__(self):
|
||||
self.table = []
|
||||
self.table1 = []
|
||||
print("Enter Processes:\n")
|
||||
while True:
|
||||
ch = int(input("\n\nAdd a new process?\t"))
|
||||
if ch:
|
||||
p = ProcessClass()
|
||||
self.table.append(p)
|
||||
else: break
|
||||
def fcfs(self):
|
||||
time = 0
|
||||
self.table1 = sorted(self.table, key= lambda p: p.at) #sorts array based on arrival time
|
||||
for cp in self.table1:
|
||||
cp.ct = cp.bt + time
|
||||
cp.wt = time - cp.at
|
||||
cp.tat = cp.wt + cp.bt
|
||||
time+= cp.bt
|
||||
def createTable(self):
|
||||
print(f"\n\nThe Table is:")
|
||||
print(f"Process\tArrival\tBurst\tWaiting\tCompletedAt\tT.A.T\n")
|
||||
for p in self.table1:
|
||||
p.display()
|
||||
|
||||
def sjf(self):
|
||||
time = 0
|
||||
self.table1 = sorted(self.table,key= lambda p: p.bt) #sorts array based on arrival time
|
||||
for cp in self.table1:
|
||||
cp.ct = cp.bt + time
|
||||
if time:
|
||||
cp.wt = time - cp.at
|
||||
else:
|
||||
cp.wt = 0
|
||||
cp.tat = cp.wt + cp.bt
|
||||
time+= cp.bt
|
||||
|
||||
# Code by Afan Shaikh.
|
||||
tab = Table_class()
|
||||
print("Using sjf!!\n\n")
|
||||
tab.sjf()
|
||||
tab.createTable()
|
BIN
Codes/Pri_SJF.doc
Normal file
BIN
Codes/Pri_SJF.doc
Normal file
Binary file not shown.
67
Codes/RR.cpp
Executable file
67
Codes/RR.cpp
Executable file
@ -0,0 +1,67 @@
|
||||
#include <iostream>
|
||||
#include <queue>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct Process {
|
||||
int id;
|
||||
int burstTime;
|
||||
int remainingTime;
|
||||
int waitingTime;
|
||||
int turnaroundTime;
|
||||
};
|
||||
|
||||
void roundRobinScheduling(vector<Process> &processes, int quantum) {
|
||||
int n = processes.size();
|
||||
queue<int> readyQueue;
|
||||
vector<int> completionTimes(n, 0);
|
||||
|
||||
int currentTime = 0;
|
||||
|
||||
for (int i = 0; i < n; ++i) {
|
||||
readyQueue.push(i);
|
||||
processes[i].remainingTime = processes[i].burstTime;
|
||||
}
|
||||
|
||||
while (!readyQueue.empty()) {
|
||||
int currentProcessId = readyQueue.front();
|
||||
readyQueue.pop();
|
||||
|
||||
if (processes[currentProcessId].remainingTime <= quantum) {
|
||||
currentTime += processes[currentProcessId].remainingTime;
|
||||
processes[currentProcessId].remainingTime = 0;
|
||||
processes[currentProcessId].turnaroundTime = currentTime;
|
||||
processes[currentProcessId].waitingTime = processes[currentProcessId].turnaroundTime - processes[currentProcessId].burstTime;
|
||||
completionTimes[currentProcessId] = currentTime;
|
||||
} else {
|
||||
currentTime += quantum;
|
||||
processes[currentProcessId].remainingTime -= quantum;
|
||||
readyQueue.push(currentProcessId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cout<<"Time Quantum = 4";
|
||||
cout << "Process ID\tBurst Time\tWaiting Time\tTurnaround Time\n";
|
||||
for (int i = 0; i < n; ++i) {
|
||||
cout << processes[i].id << "\t\t" << processes[i].burstTime << "\t\t" << processes[i].waitingTime
|
||||
<< "\t\t" << processes[i].turnaroundTime << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
vector<Process> processes = {
|
||||
{1, 6, 0, 0, 0},
|
||||
{2, 8, 0, 0, 0},
|
||||
{3, 7, 0, 0, 0},
|
||||
{4, 3, 0, 0, 0}
|
||||
};
|
||||
|
||||
int timeQuantum = 4;
|
||||
|
||||
roundRobinScheduling(processes, timeQuantum);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
53
Codes/priority.cpp
Executable file
53
Codes/priority.cpp
Executable file
@ -0,0 +1,53 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct Process {
|
||||
int id;
|
||||
int burstTime;
|
||||
int priority;
|
||||
int waitingTime;
|
||||
int turnaroundTime;
|
||||
};
|
||||
|
||||
bool comparePriority(Process a, Process b) {
|
||||
return a.priority > b.priority;
|
||||
}
|
||||
|
||||
void priorityScheduling(vector<Process> &processes) {
|
||||
int n = processes.size();
|
||||
|
||||
sort(processes.begin(), processes.end(), comparePriority);
|
||||
|
||||
processes[0].waitingTime = 0;
|
||||
processes[0].turnaroundTime = processes[0].burstTime;
|
||||
for (int i = 1; i < n; ++i) {
|
||||
processes[i].waitingTime = 0;
|
||||
for (int j = 0; j < i; ++j) {
|
||||
processes[i].waitingTime += processes[j].burstTime;
|
||||
}
|
||||
processes[i].turnaroundTime = processes[i].waitingTime + processes[i].burstTime;
|
||||
}
|
||||
|
||||
cout << "Process ID\tBurst Time\tPriority\tWaiting Time\tTurnaround Time\n";
|
||||
for (const auto &p : processes) {
|
||||
cout << p.id << "\t\t" << p.burstTime << "\t\t" << p.priority
|
||||
<< "\t\t" << p.waitingTime << "\t\t" << p.turnaroundTime << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
vector<Process> processes = {
|
||||
{1, 6, 2, 0, 0},
|
||||
{2, 8, 1, 0, 0},
|
||||
{3, 7, 3, 0, 0},
|
||||
{4, 3, 4, 0, 0}
|
||||
};
|
||||
|
||||
priorityScheduling(processes);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user