void init_system_queues(FILE *ptr_file, queue *q_ready, queue *q_process)
{
	init_ready_queue(ptr_file, q_ready);

	if (empty_queue(q_ready)) {
		perror("No jobs were submitted for processing.\nExiting...\n");
		exit(EXIT_FAILURE);
	}

	process *curr_proc = NULL;
	while (!(empty_queue(q_ready))) {	/* move all processes in the ready queue to the processes queue */
		curr_proc = (process *) dequeue(q_ready);
		enqueue(q_process, curr_proc);
	}

	curr_proc = NULL;
	matrix_t i;
	for (i = 0; i < NPROC; i++) {		/* Move NPROC processes from the processes queue to the ready state */
		curr_proc = (process *) dequeue(q_process);
		curr_proc->row_index = i;	/* ensure to give the ready state processes proper indices into the matrices */
		increment_row_vector(curr_proc->max_need_vector, claim_matrix[curr_proc->row_index]);
		enqueue(q_ready, curr_proc);
	}
	return;
}
예제 #2
0
void scheduler_init() {
  init_ready_queue();
  currentRunningTask = (TaskDescriptor*)NULL;
}