Skip to content

Commit

Permalink
scheduler alternate logic
Browse files Browse the repository at this point in the history
  • Loading branch information
Tamoziit committed Nov 16, 2024
1 parent 14ca5b1 commit 37136bd
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
14 changes: 9 additions & 5 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ void table2(Pr *P, int n, int qt, int st, int switchCount, int tt);
Pr *sortProcesses(Pr *arr, int n);
void enQueue(QL **front, QL **rear, Pr val);
Pr deQueue(QL **front);
//void *scheduler(void *threadargs);
void *scheduler2(void *threadargs);
void *scheduler(void *threadargs);
//void *scheduler2(void *threadargs);

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t turn_cond = PTHREAD_COND_INITIALIZER;
Expand Down Expand Up @@ -62,12 +62,16 @@ int main()
printf("Sorting Processes according to Arrival Time...\n");
P = sortProcesses(P, n);
printf("Sorted processes:\n");
for (i = 0; i < n; i++)
printf("%s:(%d); index = %d ", P[i].name, P[i].at, P[i].index);
table1(P, n, qt, st);
printf("\n");

/* Round Robin Init */
turn = P[0].index;
for(i=1; i<n; i++) {
if(P[i].at == P[0].at)
enQueue(&front, &rear, P[i]); //handling same initial AT for multiple processes
}

tt = P[0].at;
printf("Initially; tt = %d\n\nEvaluating Gantt Chart...\n\n", tt);

Expand All @@ -87,7 +91,7 @@ int main()
args->processArray = P;
args->numProcesses = n;

if ((status = pthread_create(&threads[i], NULL, &scheduler2, (void *)args)))
if ((status = pthread_create(&threads[i], NULL, &scheduler, (void *)args)))
{
printf("Thread creation failed\n");
exit(0);
Expand Down
4 changes: 2 additions & 2 deletions processSorter.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ void maxHeapify(Pr *arr, int i, int size)
int max;
Pr t;

if (l < size && arr[l].at > arr[i].at)
if (l < size && ((arr[l].at > arr[i].at) || (arr[l].at == arr[i].at && arr[l].bt > arr[i].bt) || (arr[l].at == arr[i].at && arr[l].bt == arr[i].bt && arr[l].index > arr[i].index)))
max = l;
else
max = i;

if (r < size && arr[r].at > arr[max].at)
if (r < size && ((arr[r].at > arr[max].at) || (arr[r].at == arr[max].at && arr[r].bt > arr[max].bt) || (arr[r].at == arr[max].at && arr[r].bt == arr[max].bt && arr[r].index > arr[max].index)))
max = r;

if (max != i)
Expand Down
2 changes: 1 addition & 1 deletion table1.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void table1(Pr *P, int n, int qt, int st)
printf("\nProcess\tArrival Time\tBurst Time\tIndex\n");
for (i = 0; i < n; i++)
{
printf("P%d\t%d\t\t%d\t\t%d\n", i + 1, P[i].at, P[i].bt, P[i].index);
printf("%s\t%d\t\t%d\t\t%d\n", P[i].name, P[i].at, P[i].bt, P[i].index);
}
printf("\nTime Quantum = %d\n", qt);
printf("Context Switching = %d\n\n", st);
Expand Down

0 comments on commit 37136bd

Please sign in to comment.