From 0b6d2d0b0c151745eadf4c4ad459018e678a4b49 Mon Sep 17 00:00:00 2001 From: cdez Date: Wed, 13 Mar 2024 16:28:20 -0700 Subject: [PATCH] SJF Scheduling is incomplete, and does not work past a certain point. Trying to figure out how not to break FCFS while working on SJF. +- simulator.c --- Sim03/logfile_1.lgf | 1 + Sim03/sim03 | Bin 66616 -> 66712 bytes Sim03/simulator.c | 68 +++++++++++++++++++++++++++++++++----------- 3 files changed, 52 insertions(+), 17 deletions(-) diff --git a/Sim03/logfile_1.lgf b/Sim03/logfile_1.lgf index 91abba2..0a374fe 100644 --- a/Sim03/logfile_1.lgf +++ b/Sim03/logfile_1.lgf @@ -4,3 +4,4 @@ ate ate + diff --git a/Sim03/sim03 b/Sim03/sim03 index b640cd6f1fca192f8320369e9ebc17912395137f..2cba5917951551929709eb745a4d7b5d565d89e3 100755 GIT binary patch delta 11936 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 delta 11675 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 diff --git a/Sim03/simulator.c b/Sim03/simulator.c index 21770f3..d913f97 100644 --- a/Sim03/simulator.c +++ b/Sim03/simulator.c @@ -429,6 +429,8 @@ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr) // string variable for the timer stuff char simulatorOutput[MAX_STR_LEN]; char timeStringy[MAX_STR_LEN]; + int processCount = 0; + int processIterator; accessTimer(ZERO_TIMER, timeStringy); // Operating System start timer goes here, log it. @@ -443,12 +445,13 @@ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr) pcbList = fillProcessList(configPtr, metaDataMstrPtr, pcbList); pcbPtr = pcbList->headPtr; - // calculate pcb total time + // calculate pcb total time, number of processes int totalPCBTime = 0; while(pcbPtr != NULL) { totalPCBTime = totalPCBTime + pcbPtr->timeLeft; pcbPtr = pcbPtr->nextPtr; + processCount = processCount + 1; } pcbPtr = pcbList->headPtr; @@ -461,26 +464,57 @@ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr) // set the current process id to the first scheduled process currentPid = scheduleProcess(pcbList, configPtr); // loop until current process is hit - while(pcbPtr != NULL) + // while(pcbPtr->process_state != PROCESS_STATE_TERMINATED && pcbPtr != NULL && processCount != 0) + // { + // if(pcbPtr->uniquePid == currentPid) + // { + // // needs to set from READY to RUNNING + // pcbPtr->process_state = PROCESS_STATE_RUNNING; + // sprintf(simulatorOutput, "%f, OS: Process %d set to RUNNING state from READY state\n\n", accessTimer(LAP_TIMER, timeStringy), pcbPtr->uniquePid); + // logOutput(configPtr, simulatorOutput, false); + // pthread_t runThread; + // pthread_create(&runThread, NULL, (void *)&simThread, (void *)processTimeLeft); + // runProcess(pcbPtr, configPtr); + // // when finished, set to terminated + // sprintf(simulatorOutput, "%f, OS: Process %d set to TERMINATED state from RUNNING state\n\n", accessTimer(LAP_TIMER, timeStringy), pcbPtr->uniquePid); + // logOutput(configPtr, simulatorOutput, false); + // pcbPtr->process_state = PROCESS_STATE_TERMINATED; + // processCount = processCount - 1; + // pthread_join(runThread, NULL); + // } + // processTimeLeft = pcbPtr->timeLeft; + // pcbPtr = pcbPtr->nextPtr; + // currentPid = scheduleProcess(pcbList, configPtr); + // if(configPtr->cpuSchedCode == CPU_SCHED_SJF_N_CODE && pcbPtr == NULL) + // { + // // + // pcbPtr = pcbList->headPtr; + // } + // } + for(processIterator = 0; processIterator < processCount; processIterator++) { - if(pcbPtr->uniquePid == currentPid) + while (pcbPtr != NULL) { - // needs to set from READY to RUNNING - pcbPtr->process_state = PROCESS_STATE_RUNNING; - sprintf(simulatorOutput, "%f, OS: Process %d set to RUNNING state from READY state\n\n", accessTimer(LAP_TIMER, timeStringy), pcbPtr->uniquePid); - logOutput(configPtr, simulatorOutput, false); - pthread_t runThread; - pthread_create(&runThread, NULL, (void *)&simThread, (void *)processTimeLeft); - runProcess(pcbPtr, configPtr); - // when finished, set to terminated - sprintf(simulatorOutput, "%f, OS: Process %d set to TERMINATED state from RUNNING state\n\n", accessTimer(LAP_TIMER, timeStringy), pcbPtr->uniquePid); - logOutput(configPtr, simulatorOutput, false); - pcbPtr->process_state = PROCESS_STATE_TERMINATED; - pthread_join(runThread, NULL); + if (pcbPtr->uniquePid == currentPid) + { + // needs to set from READY to RUNNING + pcbPtr->process_state = PROCESS_STATE_RUNNING; + sprintf(simulatorOutput, "%f, OS: Process %d set to RUNNING state from READY state\n\n", accessTimer(LAP_TIMER, timeStringy), pcbPtr->uniquePid); + logOutput(configPtr, simulatorOutput, false); + pthread_t runThread; + pthread_create(&runThread, NULL, (void *)&simThread, (void *)processTimeLeft); + runProcess(pcbPtr, configPtr); + // when finished, set to terminated + sprintf(simulatorOutput, "%f, OS: Process %d set to TERMINATED state from RUNNING state\n\n", accessTimer(LAP_TIMER, timeStringy), pcbPtr->uniquePid); + logOutput(configPtr, simulatorOutput, false); + pcbPtr->process_state = PROCESS_STATE_TERMINATED; + pthread_join(runThread, NULL); + } + processTimeLeft = pcbPtr->timeLeft; + pcbPtr = pcbPtr->nextPtr; } - processTimeLeft = pcbPtr->timeLeft; - pcbPtr = pcbPtr->nextPtr; currentPid = scheduleProcess(pcbList, configPtr); + pcbPtr = pcbList->headPtr; } pthread_join(cpuThread, NULL); sprintf(simulatorOutput, "%f, OS: System Stop\n", accessTimer(LAP_TIMER, timeStringy));