From 3233b868cee8dedb3e320e9a33218785a176a2f1 Mon Sep 17 00:00:00 2001 From: bakere1 <bakere1@student.unimelb.edu.au> Date: Mon, 29 Mar 2021 12:33:32 +1100 Subject: [PATCH] Sub proc execution times rounded up. Trying to fix procs remaining. --- allocate.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/allocate.c b/allocate.c index b383ca3..90edf67 100644 --- a/allocate.c +++ b/allocate.c @@ -27,7 +27,7 @@ typedef struct { //int CPUi; int totalExecutionTimeRemaining; //add all the times of the process llist *processQueue; - int numPorc; + int numProcessesRemaining; } CPU; void initializeProcess(char data[], process *newProcess); @@ -37,7 +37,7 @@ process *headData(llist *q); process *parallelParent(llist *processQueue, char *parentPid); void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, llist *processesComplete, - llist *parallelProcesses, int *numProcessesLeft, int *numProcessComplete, int cpuID); + llist *parallelProcesses, int *numProcessesLeft, int *numProcessComplete, CPU * CPUs, int cpuID); void printQEntry(process *p); @@ -101,15 +101,12 @@ int main(int argc, char *argv[]) { for (int i = 0; i < numCPU; i++) { CPUs[i].totalExecutionTimeRemaining = 0; CPUs[i].processQueue = llist_create(NULL);// is making list + CPUs[i].numProcessesRemaining = 0; } //main loop if (f != NULL) { - - //iterate over arriving processes - - - //while (fgets(line, sizeof line, f) != NULL) { + // iterate over arriving processes while (newProcess = getNextProcessB(f, arrivalLounge, readAhead)) { deltaTime = newProcess->timeArrived - currentTime; //update currentTime @@ -120,7 +117,7 @@ int main(int argc, char *argv[]) { advanceProcessQueue(CPUs[j].processQueue, currentTime, deltaTime, completedProcesses, paralellizedProcesses, &numProcessesLeft, - &numberProcessesFinished, j); + &numberProcessesFinished, CPUs, j); if (CPUs[j].totalExecutionTimeRemaining - deltaTime < 0) { CPUs[j].totalExecutionTimeRemaining = 0; } else { @@ -141,6 +138,7 @@ int main(int argc, char *argv[]) { currentTime, shortestTimeRemaining); numProcessesLeft += 1; CPUs[shortestTimeRemaining].totalExecutionTimeRemaining += newProcess->executionTime; + CPUs[shortestTimeRemaining].numProcessesRemaining += 1; } else if (newProcess->parallelisable == 'p') { // Parallelizable processes need to be split up // calculate number of sub processes and execution times for sub processes int quot = newProcess->executionTime / numCPU; @@ -162,6 +160,8 @@ int main(int argc, char *argv[]) { parableProcess[i].timeRemaining = parableProcess[i].executionTime; parableProcess[i].startTime = newProcess->startTime; addProcessToQueue(CPUs[i].processQueue, ¶bleProcess[i], currentTime, i); + CPUs[i].totalExecutionTimeRemaining += newProcess->executionTime; + CPUs[i].numProcessesRemaining += 1; } numProcessesLeft += 1; llist_push(paralellizedProcesses, newProcess); @@ -205,7 +205,7 @@ int main(int argc, char *argv[]) { for (int j = 0; j < numCPU; j++) { advanceProcessQueue(CPUs[j].processQueue, currentTime, deltaTime, completedProcesses, paralellizedProcesses, &numProcessesLeft, - &numberProcessesFinished, j); + &numberProcessesFinished, CPUs, j); if (CPUs[j].totalExecutionTimeRemaining - deltaTime < 0) { CPUs[j].totalExecutionTimeRemaining = 0; } else { @@ -319,7 +319,7 @@ process *parallelParent(llist *q, char *parentPid) { // period then pop them off the queue and add them to a completed processes list. void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, llist *processesComplete, llist *paralellProcesses, - int *numProcessesLeft, int *numProcessComplete, int cpuID) { + int *numProcessesLeft, int *numProcessComplete, CPU * CPUs, int cpuID) { process *headProcess; process *paralizedProcess; char parentPid[11]; @@ -352,6 +352,7 @@ void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, ll } llist_pop(processQueue); headProcess = headData(processQueue); + CPUs[cpuID].numProcessesRemaining -= 1; if (headProcess){ headProcess->justStarted = -1; headProcess->startTime = currentTime - deltaTime; @@ -366,6 +367,7 @@ void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, ll llist_push(processesComplete, headProcess); llist_pop(processQueue); headProcess = headData(processQueue); + CPUs[cpuID].numProcessesRemaining -= 1; if (headProcess){ headProcess->justStarted = -1; headProcess->startTime = currentTime - deltaTime; -- GitLab