From d5705e42a478c00e5d003f57711f68227a9f85fd Mon Sep 17 00:00:00 2001 From: cdez Date: Sun, 17 Mar 2024 14:09:20 -0700 Subject: [PATCH] Started Memory operations on simulator +- simulator.c --- Sim03/logfile_1.lgf | 2 +- Sim03/sim03 | Bin 66808 -> 67792 bytes Sim03/simulator.c | 85 ++++++++++++++++++++++++++++++++++++++++++++ Sim03/simulator.h | 11 ++++++ 4 files changed, 97 insertions(+), 1 deletion(-) 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 6b254d6179639ea4730c68cea368b2eecc9ff3aa..fa0a6df74e036263afd8ca5bca7b9ef5705f2c21 100755 GIT binary patch literal 67792 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 M4&%8LLF&=_Uva_+P5=M^ literal 66808 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 diff --git a/Sim03/simulator.c b/Sim03/simulator.c index f5acfb5..e878dff 100644 --- a/Sim03/simulator.c +++ b/Sim03/simulator.c @@ -1,5 +1,20 @@ #include "simulator.h" +/* +Name: accessMemory +Process: checks offset from the PCB +Function Input/Parameters: source PCB (ProcessControlBlock *), offset (int), size (int) +Function Output/Parameters: none +Function Output/Returned: none? +Device Input/Device: none +Device Output/Device: none +Dependencies: ??? +*/ +void accessMemory(ProcessControlBlock *singlePCB, int offset, int size) +{ + // no return, void (temp) +} + /* Name: addProcess Process: allocates the memory for the pcb, grabs the data from the created PCB, @@ -31,6 +46,21 @@ ProcessControlBlock *addProcess(const ProcessControlBlock source) return workingNode; } +/* +Name: allocMemory +Process: 'allocates' memory within the PCB, stores offset and size within it's PCB +Function Input/Parameters: source PCB (ProcessControlBlock *), offset (int), size (int) +Function Output/Parameters: none +Function Output/Returned: none? +Device Input/Device: none +Device Output/Device: none +Dependencies: ??? +*/ +void allocMemory(ProcessControlBlock *singlePCB, int offset, int size) +{ + // no return, void (temp) +} + /* Name: createProcessList Process: reads through the opcode struct to fill out the linked list of PCBs @@ -52,6 +82,21 @@ ProcessControlBlockLL *createProcessList() return headBlock; } +/* +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) +Function Output/Parameters: none +Function Output/Returned: none? +Device Input/Device: none +Device Output/Device: none +Dependencies: ??? +*/ +void deallocMemory(ProcessControlBlock *singlePCB, int offset, int size) +{ + // no return, void (temp) +} + /* Name: destroyProcessList Process: deallocates memory used for the linked list struct @@ -304,6 +349,46 @@ void logOutput(ConfigDataType *configPtr, char *logStr, bool isEnd) } } +/* +Name: memManager +Process: checks to make sure an allocate will be successful, + makes sure that an access will not segfault (or return segfault if it does), + and initializes memory and deallocates memory +Function Input/Parameters: PCBList (ProcessControlBlockLL *), memory code (MEMORY_SIGNALS), + offset (int), size (int), configuration data (ConfigDataType *) +Function Output/Parameters: none +Function Output/Returned: none? +Device Input/Device: none +Device Output/Device: none +Dependencies: ??? +*/ +void memManager(ProcessControlBlockLL *pcbList, MEMORY_SIGNALS memCode, int offset, int size, ConfigDataType *configPtr) +{ + // switch case for each memory code + switch (memCode) + { + case MEMORY_INITIALIZE: + /* code */ + break; + + case MEMORY_ALLOCATE: + /* code */ + break; + + case MEMORY_ACCESS: + /* code */ + break; + + case MEMORY_DEALLOCATE: + /* code */ + break; + + default: + break; + } + // no return, void (temp) +} + /* Name: runCPU Process: runs the CPU operations for however long it takes diff --git a/Sim03/simulator.h b/Sim03/simulator.h index 4ccba46..30541cb 100644 --- a/Sim03/simulator.h +++ b/Sim03/simulator.h @@ -17,6 +17,13 @@ typedef enum{ PROCESS_STATE_TERMINATED } PROCESS_STATES; +typedef enum{ + MEMORY_INITIALIZE = 0, + MEMORY_ACCESS, + MEMORY_ALLOCATE, + MEMORY_DEALLOCATE + } MEMORY_SIGNALS; + typedef struct ProcessControlBlockStruct { int uniquePid; @@ -37,6 +44,10 @@ typedef struct ProcessControlBlockStruct // see how many are left. // also need a time left state here? double timeLeft; + // allocated memory array (stores the offsets) + int *allocatedMemOffsets; + // allocated memory array sizes (stores the sizes for each offset) + int *allocatedMemSizes; // connect to the next process control block here struct ProcessControlBlockStruct *nextPtr; } ProcessControlBlock;