From d7bb439a2a8d0b4b9e566e3e83de2101523521b8 Mon Sep 17 00:00:00 2001 From: cdez Date: Mon, 18 Mar 2024 22:08:55 -0700 Subject: [PATCH] Savepoint, started the allocate memory management stuff. +- simulator.c --- Sim03/logfile_1.lgf | 2 +- Sim03/sim03 | Bin 68600 -> 68680 bytes Sim03/simulator.c | 74 +++++++++++++++++++++++++++++++++----------- 3 files changed, 57 insertions(+), 19 deletions(-) diff --git a/Sim03/logfile_1.lgf b/Sim03/logfile_1.lgf index 0a374fe..52b0e91 100644 --- a/Sim03/logfile_1.lgf +++ b/Sim03/logfile_1.lgf @@ -1,4 +1,4 @@ -0.000001, OS: Simulator start +0.000000, OS: Simulator start READY state from NEW state ate diff --git a/Sim03/sim03 b/Sim03/sim03 index e58449eb06cbc18acd465c37bff685bf97c2ad90..b426ccf781e83b4b681544122b26144cff88bde2 100755 GIT binary patch delta 17495 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 delta 17275 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 diff --git a/Sim03/simulator.c b/Sim03/simulator.c index a91f9c8..1583ecb 100644 --- a/Sim03/simulator.c +++ b/Sim03/simulator.c @@ -2,7 +2,8 @@ /* Name: accessMemory -Process: checks offset from the PCB +Process: checks that the memory is between the offset and the size. + checks that the memory is ??? Function Input/Parameters: source PCB (ProcessControlBlock *), offset (int), size (int) Function Output/Parameters: none Function Output/Returned: boolean to indicate success or failure of accessed memory @@ -90,15 +91,15 @@ ProcessControlBlockLL *createProcessList() /* Name: deallocMemory -Process: 'deallocates' memory within the PCB, removes offset and size within it's PCB -Function Input/Parameters: source PCB (ProcessControlBlock *), offset (int), size (int) +Process: 'deallocates' memory within the PCB, removes every offset and size within it's PCB +Function Input/Parameters: source PCB (ProcessControlBlock *) Function Output/Parameters: none Function Output/Returned: boolean to indicate success or failure of allocated memory Device Input/Device: none Device Output/Device: none Dependencies: ??? */ -bool deallocMemory(ProcessControlBlock *singlePCB, int offset, int size) +bool deallocMemory(ProcessControlBlock *singlePCB) { // return true (temp) return true; @@ -377,12 +378,12 @@ Process: checks to make sure an allocate will be successful, Function Input/Parameters: PCBList (ProcessControlBlockLL *), memory code (MEMORY_SIGNALS), offset (int), size (int), configuration data (ConfigDataType *) Function Output/Parameters: none -Function Output/Returned: none? +Function Output/Returned: boolean for success or failure of memory management Device Input/Device: none Device Output/Device: none Dependencies: ??? */ -void memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offset, int size, ConfigDataType *configPtr, ProcessControlBlock *singlePCB) +bool memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offset, int size, ConfigDataType *configPtr, ProcessControlBlock *singlePCB) { bool memDisplay = configPtr->memDisplay; ProcessControlBlock *wkgPtr; @@ -402,8 +403,11 @@ void memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offs // count up the total used memory within each process control block. for(memIterator = 0; memIterator < wkgPtr->memArraySize; memIterator++) { - // grab how much memory is used by that process - usedMem = usedMem + wkgPtr->allocatedMemSizes[memIterator]; + if(wkgPtr->allocatedMemSizes[memIterator] != -1) + { + // grab how much memory is used by that process + usedMem = usedMem + wkgPtr->allocatedMemSizes[memIterator]; + } totalArraySize = totalArraySize + 1; } // move to the next pointer @@ -456,9 +460,19 @@ void memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offs break; case MEMORY_ALLOCATE: - // grab the offset and size, store it, using the allocate memory function. + // check if the memory allocation can happen before storing it. + if(size <= availableMem - usedMem + 1) + { + // grab the offset and size, store it, using the allocate memory function. + subFunctionSuccess = allocMemory(singlePCB, offset, size); + usedMem = usedMem + size; + } + else + { + // set the subfunction success to false. + subFunctionSuccess = false; + } // if the function returns true, then it successfully did the operation, display as such. - subFunctionSuccess = allocMemory(singlePCB, offset, size); if (memDisplay) { if(subFunctionSuccess) @@ -507,7 +521,7 @@ void memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offs break; case MEMORY_DEALLOCATE: - subFunctionSuccess = deallocMemory(singlePCB, offset, size); + subFunctionSuccess = deallocMemory(singlePCB); if (memDisplay) { if (subFunctionSuccess) @@ -545,7 +559,8 @@ void memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offs } // clear out the dynamic array free(memorySizeArray); - // no return, void (temp) + // return if the subfunction succeeded, if applicable + return subFunctionSuccess; } /* @@ -625,13 +640,14 @@ void runProcess(ProcessControlBlock *singlePCB, ConfigDataType *configPtr, Proce char *argument; int intArg; int intArgTwo; + bool memManagerSuccess = true; // char *inOutArg; command = workingMeta->command; argument = workingMeta->strArg1; intArg = workingMeta->intArg2; intArgTwo = workingMeta->intArg3; // inOutArg = workingMeta->inOutArg; - while (!(compareString(command, "app") == EQUIV && compareString(argument, "end") == EQUIV) && !(compareString(command, "sys") == EQUIV && compareString(argument, "end") == EQUIV)) + while (!(compareString(command, "app") == EQUIV && compareString(argument, "end") == EQUIV) && !(compareString(command, "sys") == EQUIV && compareString(argument, "end") == EQUIV) && memManagerSuccess) { // check to see what operation will be performed if (compareString(command, "cpu") == EQUIV && compareString(argument, "process") == EQUIV) @@ -652,14 +668,26 @@ void runProcess(ProcessControlBlock *singlePCB, ConfigDataType *configPtr, Proce sprintf(processOutput, "%f, Process: %d, %s %s request (%d, %d)\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid, command, argument, intArg, intArgTwo); logOutput(configPtr, processOutput, false); // run the memory manager in allocate mode - memManager(pcbList, MEMORY_ALLOCATE, intArg, intArgTwo, configPtr, singlePCB); + memManagerSuccess = memManager(pcbList, MEMORY_ALLOCATE, intArg, intArgTwo, configPtr, singlePCB); + if(!memManagerSuccess) + { + // + sprintf(processOutput, "%f, Process: %d, failed %s %s request (%d, %d)\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid, command, argument, intArg, intArgTwo); + logOutput(configPtr, processOutput, false); + } } else if(compareString(argument, "access") == EQUIV) { sprintf(processOutput, "%f, Process: %d, %s %s request (%d, %d)\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid, command, argument, intArg, intArgTwo); logOutput(configPtr, processOutput, false); // run the memory manager in access mode - memManager(pcbList, MEMORY_ACCESS, intArg, intArgTwo, configPtr, singlePCB); + memManagerSuccess = memManager(pcbList, MEMORY_ACCESS, intArg, intArgTwo, configPtr, singlePCB); + if (!memManagerSuccess) + { + // + sprintf(processOutput, "%f, Process: %d, failed %s %s request (%d, %d)\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid, command, argument, intArg, intArgTwo); + logOutput(configPtr, processOutput, false); + } } } workingMeta = workingMeta->nextNode; @@ -668,9 +696,19 @@ void runProcess(ProcessControlBlock *singlePCB, ConfigDataType *configPtr, Proce intArg = workingMeta->intArg2; intArgTwo = workingMeta->intArg3; } - // display the process exited - sprintf(processOutput, "\n%f, OS: Process %d ended\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid); - logOutput(configPtr, processOutput, false); + // display the process exited, if not segfaulted. + if(memManagerSuccess) + { + // + sprintf(processOutput, "\n%f, OS: Process %d ended\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid); + logOutput(configPtr, processOutput, false); + } + else + { + // + sprintf(processOutput, "\n%f, OS: Segmentation Fault, Process %d ended\n", accessTimer(LAP_TIMER, timeStringy), singlePCB->uniquePid); + logOutput(configPtr, processOutput, false); + } // deallocate the memory for the process memManager(pcbList, MEMORY_DEALLOCATE, intArg, intArgTwo, configPtr, singlePCB); }