CS480-Projects/Sim02/simulator.h
cdez 93904cb2f3 Started outlining the CS480 Simulator 2 project, analyzed a testfile, and added SimTimer stuff
++ simtimer.c/h
++ testfile-dnw.mdf
+- simulator.c/h
-- Sim01 Grading
2024-02-14 13:20:04 -07:00

89 lines
No EOL
2.5 KiB
C

#ifndef SIMULATORX
#define SIMULATORX
#include "StandardConstants.h"
#include "configops.h"
#include "metadataops.h"
#include "simtimer.h"
// data structures
typedef enum{
PROCESS_STATE_NEW = 0,
PROCESS_STATE_READY,
PROCESS_STATE_RUNNING,
PROCESS_STATE_BLOCKED,
PROCESS_STATE_TERMINATED
} PROCESS_STATES;
typedef struct ProcessControlBlockStruct
{
int uniquePid;
PROCESS_STATES process_state;
// need a process start ptr for where the process starts.
// this will be a mini loop within the master loop that goes until it
// hits the app end command.
// it may hold the next opcode, since you don't need to traverse backward
// have an IO cycle count here
// have a CPU cycle count here
// maybe have a total cycle count here
// time left could be calculated from these.
// potentially could change the cycles or have a 'left' variable to
// see how many are left.
// also need a time left state here?
} ProcessControlBlock;
/*
Name: ???
Process: ???
Function Input/Parameters: ???
Function Output/Parameters: none
Function Output/Returned: none
Device Input/Device: none
Device Output/Device: none
Dependencies: ???
*/
// need a function (or functions) to handle FILE I/O?
// runSim function will have a FILE *
// will have a function that gets the FILE * and
// adds whatever operation occurred
/*
Name: ???
Process: ???
// Function Input/Parameters: ???
Function Output/Parameters: none
Function Output/Returned: none
Device Input/Device: none
Device Output/Device: none
Dependencies: ???
*/
// need a function for the global/local timer (given??? may need to just import)
// need a function for scheduler/dispatcher
// this could use a switch statement to tell which scheduling method to choose from.
// Sim02 only requires FCFS working atm.
// need a function called createProcessList
// this makes a linked list of PCBs, loads the first instruction after app start
// and ...
// need a function called destroyProcessList
// deallocated the ll of PCBs recursively, frees the rest of the struct.
//
/*
Name: runSim
Process: primary simulation driver
Function Input/Parameters: configuration data (ConfigDataType *),
metadata (OpCodeType *)
Function Output/Parameters: none
Function Output/Returned: none
Device Input/Device: none
Device Output/Device: none
Dependencies: ???
*/
void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr);
#endif // SIMULATORX