From 672c26a5c72bf6997fc5a56895c6012839189fd2 Mon Sep 17 00:00:00 2001 From: cdez Date: Wed, 21 Feb 2024 13:36:15 -0700 Subject: [PATCH] Debugging fillProcessBlock functions, trying to figure out where memleaks are. +- simulator.c --- Sim02/sim02 | Bin 59264 -> 59600 bytes Sim02/simulator.c | 63 +++++++++++++++++++++++++++++++++++++--------- Sim02/simulator.h | 11 ++++++++ 3 files changed, 62 insertions(+), 12 deletions(-) diff --git a/Sim02/sim02 b/Sim02/sim02 index 05bf68643bcdcf8ca38312e2c60d689ddb372393..8ff2006b7551e2d976a27f3823e3125b270067d9 100755 GIT binary patch delta 15301 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 rpZ-mM#t-qoelyHca#$l?-VR!NAXHx$YyIz5J delta 14202 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 = source.uniquePid; + workingNode->cpuCycles = source.cpuCycles; + workingNode->ioCycles = source.ioCycles; + workingNode->nextOpCode = source.nextOpCode; + workingNode->process_state = source.process_state; + workingNode->timeLeft = source.timeLeft; + workingNode->totalCycles = source.totalCycles; + workingNode->nextPtr = NULL; + printf("uniquePID: %d\n", workingNode->uniquePid); + printf("process state: %d\n", workingNode->process_state); + printf("io cycles: %d\n", workingNode->ioCycles); + printf("cpu cycles: %d\n", workingNode->cpuCycles); + printf("total cycles: %d\n", workingNode->totalCycles); + printf("time left in ms: %f\n\n", workingNode->timeLeft); + // return workingNode + return workingNode; +} /* Name: createProcessList @@ -188,6 +205,10 @@ ProcessControlBlockLL *fillProcessList(OpCodeType *metadataPtr, ProcessControlBl currentPCB.timeLeft = timeLeftCount; // increment the PID counter processId = processId + 1; + + ioCycleCount = 0; + cpuCycleCount = 0; + timeLeftCount = 0.0; } // move to the next bit of data wkgMetaPtr = wkgMetaPtr->nextNode; @@ -196,8 +217,8 @@ ProcessControlBlockLL *fillProcessList(OpCodeType *metadataPtr, ProcessControlBl // needs to add nodes to the end and all data once parsed // do both the metadata and PCBs - wkgPCBPtr = ¤tPCB; - wkgPCBPtr->nextPtr = NULL; + wkgPCBPtr = addProcess(currentPCB); + wkgPCBPtr = wkgPCBPtr->nextPtr; } // return null (temp) (should return the headpointer) return headPointer; @@ -226,6 +247,8 @@ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr) ProcessControlBlockLL *pcbList; // string variable for nextCode, temp unused // char *nextCode; + // int variable for process to run + int currentPid; // create the process list with createProcessList, store the pointed to address pcbList = createProcessList(); // fill the process list given the metadata @@ -243,6 +266,7 @@ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr) // function holds master loop, loops until sys end opcode found OR wkgPtrMaster nextNode != NULL while(wkgPtrMaster->nextNode != NULL || (compareString(argument, "end") && compareString(command, "sys"))) { + currentPid = scheduleProcess(pcbList, configPtr); // will have a loop that goes from app start to app end for a PCB // (checks to see if the next instruction is NOT app end), using getNextProcess? // this will getNextOpCode @@ -259,7 +283,7 @@ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr) // // deallocate the process list with destroyProcessList destroyProcessList(pcbList); - //printf("runSim called here"); + // once complete, log the output to FILE if required // void function, no return. } @@ -276,7 +300,9 @@ Dependencies: ??? */ int scheduleProcess(ProcessControlBlockLL *headPointer, ConfigDataType *configPtr) { + ProcessControlBlock *wkgPtr; int returnPid = -1; + wkgPtr = headPointer->headPtr; // switch case for each scheduling algorithm switch (configPtr->cpuSchedCode) { @@ -287,6 +313,19 @@ int scheduleProcess(ProcessControlBlockLL *headPointer, ConfigDataType *configPt // will set the state to READY, return the pid of the process which // was set to ready. // ignores any process which has a state of TERMINATED + // printf("uniquePID: %d\n", wkgPtr->uniquePid); + // printf("process state: %d\n", wkgPtr->process_state); + // printf("io cycles: %d\n", wkgPtr->ioCycles); + // printf("cpu cycles: %d\n", wkgPtr->cpuCycles); + // printf("total cycles: %d\n", wkgPtr->totalCycles); + // printf("time left in ms: %f\n", wkgPtr->timeLeft); + // while(wkgPtr->nextPtr != NULL || wkgPtr->process_state == PROCESS_STATE_NEW) + // { + // // + // returnPid = wkgPtr->uniquePid; + // printf("%d was selected.\n", returnPid); + // wkgPtr = wkgPtr->nextPtr; + // } break; case CPU_SCHED_FCFS_P_CODE: // TODO: First Come, First Served, Preemptive Scheduling diff --git a/Sim02/simulator.h b/Sim02/simulator.h index e9d5d58..fc06d28 100644 --- a/Sim02/simulator.h +++ b/Sim02/simulator.h @@ -143,6 +143,17 @@ Dependencies: ??? */ ProcessControlBlockLL *fillProcessList(OpCodeType *metadataPtr, ProcessControlBlockLL *headPointer); +/* +Name: logOutput +Process: Takes in a string, and then outputs it to monitor AND/OR file +Function Input/Parameters: string (char *), file pointer (FILE *) +Function Output/Parameters: none +Function Output/Returned: none +Device Input/Device: none +Device Output/Device: none +Dependencies: sprintf, ??? +*/ + /* Name: runSim Process: primary simulation driver