Skip to content

Leandrogbm/MiniCurso

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

MiniCurso

#include <stdio.h> #include <locale.h>

#define MAX_PROCESSOS 10 #define QUANTUM 30 // Definindo o quantum fixo em 30 segundos

// Estrutura de um processo typedef struct { int id; int tempo_execucao; int tempo_restante; } Processo;

// Função para o escalonamento Round Robin void escalonamento_round_robin(Processo processos[], int num_processos) { int tempo_total = 0; // Tempo total de execução int concluidos = 0; // Número de processos concluídos int i; // Declarar a variável fora do loop para evitar erros em padrões mais antigos

printf("Executando o escalonamento Round Robin:\n\n");

while (concluidos < num_processos) {
    for (i = 0; i < num_processos; i++) { // Usando a variável já declarada
        // Verifica se o processo ainda precisa ser executado
        if (processos[i].tempo_restante > 0) {
            printf("Tempo atual: %d segundos | Executando processo P%d\n", tempo_total, processos[i].id);
            
            // Se o tempo restante do processo for menor ou igual ao quantum
            if (processos[i].tempo_restante <= QUANTUM) {
                // Executa o processo até que ele seja concluído
                tempo_total += processos[i].tempo_restante;
                printf("Processo P%d concluído no tempo %d segundos\n", processos[i].id, tempo_total);
                
                // Marca o processo como concluído
                processos[i].tempo_restante = 0;
                concluidos++;
            } else {
                // Executa o processo pelo tempo do quantum
                tempo_total += QUANTUM;
                processos[i].tempo_restante -= QUANTUM;
                printf("Processo P%d pausado. Tempo restante: %d segundos\n", processos[i].id, processos[i].tempo_restante);
            }
        }
    }
}

printf("\nTodos os processos foram concluídos no tempo %d segundos.\n", tempo_total);

}

int main() { setlocale(LC_ALL, "Portuguese");

int num_processos;
int i; // Declarar a variável fora do loop para evitar erros em padrões mais antigos

printf("Informe o número de processos (máximo %d): ", MAX_PROCESSOS);
scanf("%d", &num_processos);

if (num_processos > MAX_PROCESSOS) {
    printf("Erro: número máximo de processos é %d.\n", MAX_PROCESSOS);
    return 1;
}

Processo processos[MAX_PROCESSOS];

// Lê os tempos de execução para cada processo
for (i = 0; i < num_processos; i++) { // Usando a variável já declarada
    processos[i].id = i + 1;
    printf("Informe o tempo de execução do processo P%d em segundos: ", processos[i].id);
    scanf("%d", &processos[i].tempo_execucao);
    processos[i].tempo_restante = processos[i].tempo_execucao;
}

// Executa o algoritmo de escalonamento Round Robin com quantum fixo
escalonamento_round_robin(processos, num_processos);

return 0;

}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published