diff --git a/allocate.c b/allocate.c index 6ad9bb75187e3eea1388c84f03640bcd8b75ff32..f03d0e35437cb323b706b5e0c5d0fbc5d1d58165 100644 --- a/allocate.c +++ b/allocate.c @@ -73,7 +73,6 @@ int main(int argc, char *argv[]) { float averageTurnaroundTime = 0; llist *completedProcesses, paralellizedProcesses, arrivalLounge; completedProcesses = llist_create(NULL);// is making list - //headNULL(completedProcesses); paralellizedProcesses = llist_create(NULL); @@ -169,7 +168,7 @@ int main(int argc, char *argv[]) { parableProcess[i].parallelisable = newProcess->parallelisable; parableProcess[i].timeCompleted = -1; parableProcess[i].timeRemaining = parableProcess[i].executionTime; - parableProcess[i].timeRemAtStartTime = newProcess->timeRemAtStartTime; + parableProcess[i].timeRemAtStartTime = parableProcess[i].executionTime; addProcessToQueue(CPUs[i].processQueue, ¶bleProcess[i], currentTime, i); CPUs[i].totalExecutionTimeRemaining += newProcess->executionTime; } @@ -186,7 +185,7 @@ int main(int argc, char *argv[]) { while ( currNode ){ if ( currProc!= NULL && currProc->timeCompleted <= currentTime && !currProc->finished) { printf("%d,FINISHED,pid=%s,proc_remaining=%d\n", - currProc->timeCompleted, currProc->processID, numProcessesLeft); + currProc->timeCompleted, currProc->processID, numProcessesLeft-1); currProc->finished = -1; } currNode = currNode->next; @@ -212,7 +211,7 @@ int main(int argc, char *argv[]) { } // No more processes to be read in, just need to finish the ones in the queues - //printf("No more processes to be read in\n"); + int tr; while (numProcessesLeft) { // find how big the next time step is - its the smallest of the times remaining on each queue's head process @@ -226,6 +225,7 @@ int main(int argc, char *argv[]) { } } } + currentTime += deltaTime; // update time CPU totalExecutionTimeRemaining and advance processes for (int j = 0; j < numCPU; j++) { @@ -243,7 +243,7 @@ int main(int argc, char *argv[]) { headData(completedProcesses); process * currProc = currNode->data; while ( currNode ){ - if ( currProc!= NULL && currProc->timeCompleted >= currentTime && currProc->finished ) { + if ( currProc!= NULL && currProc->timeCompleted >= currentTime ) {//&& currProc->finished printf("%d,FINISHED,pid=%s,proc_remaining=%d\n", currProc->timeCompleted, currProc->processID, numProcessesLeft); currProc->finished = -1; @@ -382,7 +382,10 @@ process *parallelParent(llist *q, char *parentPid) { process *p; if (curr) p = curr->data; - while (curr && !strncmp(p->processID, parentPid, strlen(parentPid))) { + int pid = atoi(p->processID); + int intparentPid = atoi(parentPid); + + while (curr && pid!=intparentPid ) { //!strncmp(p->processID, parentPid, strlen(parentPid)) curr = curr->next; p = curr->data; }