Escolar Documentos
Profissional Documentos
Cultura Documentos
h>
#include <stdlib.h>
#include <time.h>
#define MAX_PROCESS 10
void cria_processo();
void define_info(DescProc* processo);
DescProc tab_desc[MAX_PROCESS];
DescProcLista desc_livre;
DescProcLista espera_cpu;
DescProcLista usando_cpu;
DescProcLista bloqueados;
int main() {
int i;
tab_desc[i].proximo = NULL;
desc_livre.primeiro = &tab_desc[0];
desc_livre.ultimo = &tab_desc[MAX_PROCESS - 1];
espera_cpu.primeiro = NULL;
espera_cpu.ultimo = NULL;
usando_cpu.primeiro = NULL;
usando_cpu.ultimo = NULL;
bloqueados.primeiro = NULL;
bloqueados.ultimo = NULL;
printf("Done!\n");
return 0;
}
void cria_processo() {
if (desc_livre.primeiro == NULL) {
printf("Não há mais descritores disponíveis.\n");
return;
}
define_info(processo);
printf("Atualizando a fila desc_livre... O processo em execucao esta usando um
dos descritores.\n");
printf("Processo criado... migramos ele para a fila espera_cpu.\n");
if(espera_cpu.primeiro == NULL) {
espera_cpu.primeiro = espera_cpu.ultimo = processo;
} else {
espera_cpu.ultimo->proximo = processo;
espera_cpu.ultimo = processo;
processo->proximo = NULL;
}
printf("Processo criado:\n");
printf("Estado: %c\n", processo->estado_atual);
printf("Prioridade: %d\n", processo->prioridade);
printf("Inicio de Memória: %u\n", processo->inicio_memoria);
printf("Tamanho de Memória: %u\n", processo->tamanho_memoria);
printf("Tempo de CPU: %u\n", processo->tempo_cpu);
printf("PC: %u\n", processo->proc_pc);
printf("SP: %u\n", processo->proc_sp);
printf("ACC: %u\n", processo->proc_acc);
printf("RX: %u\n", processo->proc_rx);
printf("\n");
}