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