C/Visual C - planificacion

 
Vista:

planificacion

Publicado por fernando (1 intervención) el 31/03/2003 19:42:10
Hola necesito que alguien me pase un codigo en c de una planificacion de procesos a ser posible pido el codigo sino que me digan como puedo hacerlo
Muchass gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

planificacion

Publicado por Alejandro (1153 intervenciones) el 13/05/2025 18:34:25
Claro, aquí tienes un ejemplo de cómo implementar un algoritmo de planificación de procesos en C. En este caso, te mostraré cómo implementar el algoritmo First Come First Served (FCFS), que es uno de los más simples y se basa en el principio de "el primero en llegar, es el primero en ser atendido".

Código en C para FCFS



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
 
typedef struct {
    int id;         // Identificador del proceso
    int tiempoLlegada; // Tiempo de llegada del proceso
    int tiempoEjecucion; // Tiempo de ejecución del proceso
    int tiempoEspera; // Tiempo de espera del proceso
    int tiempoFinal; // Tiempo de finalización del proceso
} Proceso;
 
void calcularTiempos(Proceso procesos[], int n) {
    int tiempoActual = 0;
 
    for (int i = 0; i < n; i++) {
        // Si el tiempo actual es menor que el tiempo de llegada, avanzamos el tiempo
        if (tiempoActual < procesos[i].tiempoLlegada) {
            tiempoActual = procesos[i].tiempoLlegada;
        }
 
        // Calcular tiempos
        procesos[i].tiempoEspera = tiempoActual - procesos[i].tiempoLlegada;
        tiempoActual += procesos[i].tiempoEjecucion;
        procesos[i].tiempoFinal = tiempoActual;
    }
}
 
void imprimirResultados(Proceso procesos[], int n) {
    printf("ID\tTiempo de llegada\tTiempo de ejecución\tTiempo de espera\tTiempo final\n");
    for (int i = 0; i < n; i++) {
        printf("%d\t%d\t\t\t%d\t\t\t%d\t\t\t%d\n",
               procesos[i].id,
               procesos[i].tiempoLlegada,
               procesos[i].tiempoEjecucion,
               procesos[i].tiempoEspera,
               procesos[i].tiempoFinal);
    }
}
 
int main() {
    Proceso procesos[] = {
        {1, 0, 5},  // Proceso 1: llega en 0, tiempo de ejecución 5
        {2, 1, 3},  // Proceso 2: llega en 1, tiempo de ejecución 3
        {3, 2, 8},  // Proceso 3: llega en 2, tiempo de ejecución 8
        {4, 3, 6}   // Proceso 4: llega en 3, tiempo de ejecución 6
    };
 
    int n = sizeof(procesos) / sizeof(procesos[0]);
 
    calcularTiempos(procesos, n);
    imprimirResultados(procesos, n);
 
    return 0;
}

Explicación del código



1. Estructura `Proceso`: Define un tipo de dato que contiene la información relevante de cada proceso, como su ID, tiempo de llegada, tiempo de ejecución, tiempo de espera y tiempo final.

2. Función `calcularTiempos`: Esta función calcula el tiempo de espera y el tiempo final para cada proceso. Se itera sobre los procesos y se actualiza el tiempo actual según el tiempo de llegada y el tiempo de ejecución.

3. Función `imprimirResultados`: Imprime los resultados de la planificación, mostrando el ID del proceso, su tiempo de llegada, tiempo de ejecución, tiempo de espera y tiempo final.

4. Función `main`: Aquí se inicializan algunos procesos de ejemplo y se llaman a las funciones para calcular y mostrar los resultados.

Cómo implementarlo



1. Compila el código: Usa un compilador de C, como GCC, para compilar el código. Por ejemplo, puedes usar el comando `gcc -o planificacion planificacion.c` en la terminal.

2. Ejecuta el programa: Una vez compilado, ejecuta el programa con `./planificacion` en la terminal.

3. Modifica los procesos: Puedes cambiar los valores de los procesos en el arreglo `procesos` para probar diferentes escenarios de planificación.

¡Espero que esto te sea útil, Fernando!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar