Skip to content
Snippets Groups Projects
Commit 5d5f723b authored by Elizabeth Baker's avatar Elizabeth Baker
Browse files

Merge remote-tracking branch 'origin/master'

parents 90b2e89e 3233b868
No related branches found
No related tags found
No related merge requests found
......@@ -28,7 +28,7 @@ typedef struct {
//int CPUi;
int totalExecutionTimeRemaining; //add all the times of the process
llist *processQueue;
int numPorc;
int numProcessesRemaining;
} CPU;
void initializeProcess(char data[], process *newProcess);
......@@ -38,7 +38,7 @@ process *headData(llist *q);
process *parallelParent(llist *processQueue, char *parentPid);
void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, llist *processesComplete,
llist *parallelProcesses, int *numProcessesLeft, int *numProcessComplete, int cpuID);
llist *parallelProcesses, int *numProcessesLeft, int *numProcessComplete, CPU * CPUs, int cpuID);
void printQEntry(process *p);
......@@ -102,15 +102,12 @@ int main(int argc, char *argv[]) {
for (int i = 0; i < numCPU; i++) {
CPUs[i].totalExecutionTimeRemaining = 0;
CPUs[i].processQueue = llist_create(NULL);// is making list
CPUs[i].numProcessesRemaining = 0;
}
//main loop
if (f != NULL) {
// iterate over arriving processes
//while (fgets(line, sizeof line, f) != NULL) {
while (newProcess = getNextProcessB(f, arrivalLounge, readAhead)) {
//printf("process id:%s process arrival time: %d\n", newProcess->processID, newProcess->timeArrived);
......@@ -125,7 +122,7 @@ int main(int argc, char *argv[]) {
advanceProcessQueue(CPUs[j].processQueue, currentTime, deltaTime, completedProcesses,
paralellizedProcesses,
&numProcessesLeft,
&numberProcessesFinished, j);
&numberProcessesFinished, CPUs, j);
if (CPUs[j].totalExecutionTimeRemaining - deltaTime < 0) {
CPUs[j].totalExecutionTimeRemaining = 0;
} else {
......@@ -146,6 +143,7 @@ int main(int argc, char *argv[]) {
currentTime, shortestTimeRemaining);
numProcessesLeft += 1;
CPUs[shortestTimeRemaining].totalExecutionTimeRemaining += newProcess->executionTime;
CPUs[shortestTimeRemaining].numProcessesRemaining += 1;
} else if (newProcess->parallelisable == 'p') { // Parallelizable processes need to be split up
// calculate number of sub processes and execution times for sub processes
int quot = newProcess->executionTime / numCPU;
......@@ -167,6 +165,8 @@ int main(int argc, char *argv[]) {
parableProcess[i].timeRemaining = parableProcess[i].executionTime;
parableProcess[i].timeRemAtStartTime = newProcess->timeRemAtStartTime;
addProcessToQueue(CPUs[i].processQueue, &parableProcess[i], currentTime, i);
CPUs[i].totalExecutionTimeRemaining += newProcess->executionTime;
CPUs[i].numProcessesRemaining += 1;
}
numProcessesLeft += 1;
llist_push(paralellizedProcesses, newProcess);
......@@ -213,7 +213,7 @@ int main(int argc, char *argv[]) {
for (int j = 0; j < numCPU; j++) {
advanceProcessQueue(CPUs[j].processQueue, currentTime, deltaTime, completedProcesses, paralellizedProcesses,
&numProcessesLeft,
&numberProcessesFinished, j);
&numberProcessesFinished, CPUs, j);
if (CPUs[j].totalExecutionTimeRemaining - deltaTime < 0) {
CPUs[j].totalExecutionTimeRemaining = 0;
} else {
......@@ -328,7 +328,7 @@ process *parallelParent(llist *q, char *parentPid) {
// period then pop them off the queue and add them to a completed processes list.
void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, llist *processesComplete,
llist *paralellProcesses,
int *numProcessesLeft, int *numProcessComplete, int cpuID) {
int *numProcessesLeft, int *numProcessComplete, CPU * CPUs, int cpuID) {
process *headProcess;
process *paralizedProcess;
char parentPid[11];
......@@ -362,6 +362,7 @@ void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, ll
}
llist_pop(processQueue);
headProcess = headData(processQueue);
CPUs[cpuID].numProcessesRemaining -= 1;
if (headProcess){
headProcess->justStarted = -1;
headProcess->startTime = currentTime - deltaTime;
......@@ -377,6 +378,7 @@ void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, ll
llist_push(processesComplete, headProcess);
llist_pop(processQueue);
headProcess = headData(processQueue);
CPUs[cpuID].numProcessesRemaining -= 1;
if (headProcess){
headProcess->justStarted = -1;
headProcess->startTime = currentTime - deltaTime;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment