sched done

This commit is contained in:
Jai Sharma Sharma 2024-09-30 23:50:29 +05:30
parent b032ac4783
commit fc7925be3e
1 changed files with 596 additions and 588 deletions

View File

@ -296,17 +296,25 @@ void pre_sjf() {
if(processes[i].in_cpu != 1) {
if(time.timer == processes[i].burst_times[0]) {
ready_queue.push(&processes[i]);
if(CPU != NULL) {
if(CPU != NULL && CPU->burst_times[CPU->current_burst_index] != 0) {
ready_queue.push(CPU);
CPU->in_cpu = 0;
out_string += " " + to_string(time.timer);
out_strings.push_back(out_string);
CPU = NULL;
// output_file << " " << time.timer << endl;
CPU = ready_queue.top();
CPU->in_cpu = 1;
out_string = "P" + to_string(CPU->pid+1) + "," + to_string((CPU->current_burst_index + 1 ) / 2) + " " + to_string(time.timer);
// output_file << "P" << CPU->pid+1 << "," << (CPU->current_burst_index + 1) / 2 << " " << time.timer; // New entry time
ready_queue.pop();
// CPU = ready_queue.top();
// CPU->in_cpu = 1;
// out_string = "P" + to_string(CPU->pid+1) + "," + to_string((CPU->current_burst_index + 1 ) / 2) + " " + to_string(time.timer);
// // output_file << "P" << CPU->pid+1 << "," << (CPU->current_burst_index + 1) / 2 << " " << time.timer; // New entry time
// ready_queue.pop();
}
else if(CPU != NULL && CPU->burst_times[CPU->current_burst_index] == 0) {
waiting[CPU->pid] = CPU; // because times up!!
CPU->in_cpu = 0;
CPU->current_burst_index++;
CPU = NULL;
}
processes[i].current_burst_index++;
@ -319,19 +327,19 @@ void pre_sjf() {
if(waiting[j] != NULL) {
if(waiting[j]->burst_times[waiting[j]->current_burst_index] == 0) {
ready_queue.push(waiting[j]);
if(CPU != NULL) {
ready_queue.push(CPU);
CPU->in_cpu = 0;
out_string += " " + to_string(time.timer);
out_strings.push_back(out_string);
// output_file << " " << time.timer << endl;
CPU = ready_queue.top();
CPU->in_cpu = 1;
out_string = "P" + to_string(CPU->pid+1) + "," + to_string((CPU->current_burst_index + 1 ) / 2) + " " + to_string(time.timer);
// output_file << "P" << CPU->pid+1 << "," << (CPU->current_burst_index + 1) / 2 << " " << time.timer; // New entry time
ready_queue.pop();
// if(CPU != NULL && CPU->burst_times[processes[j].current_burst_index] != 0) {
// ready_queue.push(CPU);
// CPU->in_cpu = 0;
// out_string += " " + to_string(time.timer);
// out_strings.push_back(out_string);
// // output_file << " " << time.timer << endl;
// CPU = ready_queue.top();
// CPU->in_cpu = 1;
// out_string = "P" + to_string(CPU->pid+1) + "," + to_string((CPU->current_burst_index + 1 ) / 2) + " " + to_string(time.timer);
// // output_file << "P" << CPU->pid+1 << "," << (CPU->current_burst_index + 1) / 2 << " " << time.timer; // New entry time
// ready_queue.pop();
}
// }
waiting[j]->current_burst_index++;
waiting[j] = NULL; // Process leaves waiting queue
}
@ -516,7 +524,7 @@ int main(int argc, char **argv) {
char *scheduler_algorithm = argv[2];
ifstream file(file_to_search_in, ios::binary);
// ifstream file("../WorkloadFiles/process1.dat", ios::binary);
// ifstream file("../WorkloadFiles/process2.dat", ios::binary);
string buffer;
int pid = 0;
@ -544,7 +552,7 @@ int main(int argc, char **argv) {
temp["rr"] = 4;
string temp1 = scheduler_algorithm;
// string temp1 = "sjf";
// string temp1 = "pre_sjf";
// Start time point
auto start = std::chrono::high_resolution_clock::now();