APRESENTAÇÃO DE ESCALONAMENTO (SO)
*/
/* Simulador de Escalonamento de Processos: (1) FIFO (2) SJF com preempção (3) Round Robin */
#include <stdio.h>
#include <stdlib.h> /* Estrutura */ struct processos { int id; /* Identifição do processo*/ int surto; /* Tempo de duração do processo*/ int prioridade; int execucao; /* Tempo de execução do processo*/ int espera; /* Tempo de espera do processo*/ struct processos *prox;
};
/* Declarações de funçães */ struct processos *init_processos (int id, int surto, int prioridade); void fcfs (struct processos *proc); void listprocs (struct processos *proc); void prioridade (struct processos *proc); void rr (struct processos *proc, int quantum); void sjf (struct processos *proc); int main (void) { /* Criação da lista ligada aos processos*/ struct processos *plist, *ptmp; plist = init_processos(1, 10, 3); plist->prox = init_processos(2, 1, 1); ptmp = plist->prox; ptmp->prox = init_processos(3, 2, 3); ptmp = ptmp->prox; ptmp->prox = init_processos(4, 1, 4); ptmp = ptmp->prox; ptmp->prox = init_processos(5, 5, 2); /* Simulações executadas: simula a execução dos processos*/ listprocs(plist); fcfs(plist); sjf(plist); prioridade(plist); rr(plist,0); /* Libera espaço na memória utilizada pelos processos*/ while (plist != NULL) { ptmp = plist; plist = plist->prox; free(ptmp); }; return(0);
};
/* Inicialização de entrada da lista de processos*/ struct processos *init_processos (int id, int surto, int prioridade) { struct processos *proc; proc = (struct processos*)malloc(sizeof(struct processos)); if (proc == NULL) { printf("Erro Fatal: Falha Alocacao de memoria.\nFinalizar.\n"); exit(1); }; proc->id = id;