Upload Sim02 files for Syncronization.

+- simulator.c/h
This commit is contained in:
Charles Descamps 2024-02-19 18:43:06 -07:00
parent 62418ec35a
commit c828913809
2 changed files with 62 additions and 7 deletions

View file

@ -6,14 +6,14 @@
/*
Name: createProcessList
Process: reads through the opcode struct to fill out the linked list of PCBs
Function Input/Parameters: metadata (OpCodeType *)
Function Input/Parameters: none
Function Output/Parameters: none
Function Output/Returned: head pointer to the PCBs
Device Input/Device: none
Device Output/Device: none
Dependencies: malloc, sizeof, ???
*/
ProcessControlBlockLL *createProcessList(OpCodeType *metadataPtr)
ProcessControlBlockLL *createProcessList()
{
// allocate and create the ProcessControlBlockLL using malloc and size of
ProcessControlBlockLL *headBlock;
@ -68,6 +68,43 @@ ProcessControlBlock *destroyProcessListHelper(ProcessControlBlock *nodePtr)
return NULL;
}
/*
Name: fillProcessList
Process: iterates through the metadata LL, fills out each process as needed.
(Linking is left to the calling function, returns a pointer to the filled struct)
Function Input/Parameters: metadata (OpCodeType *)
Function Output/Parameters: none
Function Output/Returned: pointer to filled PCB (ProcessControlBlock *)
Device Input/Device: none
Device Output/Device: none
Dependencies: ???
*/
ProcessControlBlock *fillProcessList(OpCodeType *metadataPtr)
{
// initialize function/variables
// need a working pointer for the metadata
// need a pointer to save the location of first metadata opcode
// need a variable to count how many IO cycles are in the process
// need a variable to count how many CPU cycles are in the process
// need a variable to calculate the time left in ms for a process
// temp variables?
// loop through the process list, until you hit a sys end.
// if app start,
// set the unique ID
// set the process state to PROCESS_STATE_NEW
// set the nextOpCode as a pointer to the first place metadataPtr started
// loop while no longer have io or cpu instructions?
// count number of io cycles
// count number of cpu cycles
// set the ioCycles from variable
// set the cpuCycles from variable
// set totalCycles from adding both IO/CPU
// set the time left from (ioCycles * ioCycleRate) + (cpuCycles * procCyclesRate)
// this gets the number of ms in the process.
// return null (temp)
return (ProcessControlBlock *)NULL;
}
/*
Name: runSim
Process: primary simulation driver

View file

@ -78,9 +78,15 @@ Dependencies: ???
// 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
// this initializes the process control block ll.
// need a function called fillProcessList
// this fills the linked list of PCBs,
// loads the first instruction after app start
// and ...
// reads through the opcode struct to fill out the linked list of PCBs
// need a function called destroyProcessList
// deallocated the ll of PCBs recursively, frees the rest of the struct.
@ -90,15 +96,15 @@ Dependencies: ???
/*
Name: createProcessList
Process: reads through the opcode struct to fill out the linked list of PCBs
Function Input/Parameters: metadata (OpCodeType *)
Process: initializes head pointer to the PCBs
Function Input/Parameters: none
Function Output/Parameters: none
Function Output/Returned: head pointer to the PCBs
Device Input/Device: none
Device Output/Device: none
Dependencies: malloc, sizeof, ???
*/
ProcessControlBlockLL *createProcessList(OpCodeType *metadataPtr);
ProcessControlBlockLL *createProcessList();
/*
Name: destroyProcessList
@ -124,6 +130,18 @@ Dependencies: free, destroyProcessListHelper(recursively), ???
*/
ProcessControlBlock *destroyProcessListHelper(ProcessControlBlock *nodePtr);
/*
Name: fillProcessList
Process: iterates through the metadata LL, fills out each process as needed.
Function Input/Parameters: metadata (OpCodeType *)
Function Output/Parameters: none
Function Output/Returned: none
Device Input/Device: none
Device Output/Device: none
Dependencies: ???
*/
ProcessControlBlock *fillProcessList(OpCodeType *metadataPtr);
/*
Name: runSim
Process: primary simulation driver