Algoritmia - algoritmo del planeador de procesos

 
Vista:

algoritmo del planeador de procesos

Publicado por marcos romero (1 intervención) el 22/05/2001 01:26:08
Alguien me podría dar una ayuda de cómo hacer el algoritmo del planeador de procesos ROBIN ROUND,PRIORIDAD Y PEPS.
Si ya lo tuvieran les agradecería me lo proporcionasen como referencia.
Muchas 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

Algoritmos de planificación de procesos

Publicado por Alejandro (307 intervenciones) el 27/02/2024 21:03:14
Marcos, aquí tienes ejemplos básicos en Python de los algoritmos de planificación de procesos Round Robin (RR), Prioridad y PEPS (proceso más corto primero):

1. Round Robin (RR):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def round_robin(procesos, quantum):
    cola = procesos.copy()
    tiempo_total = 0
    while cola:
        proceso_actual = cola.pop(0)
        tiempo_ejecucion = min(quantum, proceso_actual['tiempo_restante'])
        tiempo_total += tiempo_ejecucion
        proceso_actual['tiempo_restante'] -= tiempo_ejecucion
        if proceso_actual['tiempo_restante'] > 0:
            cola.append(proceso_actual)
        print(f"Ejecutando proceso {proceso_actual['nombre']} durante {tiempo_ejecucion} unidades de tiempo.")
 
# Ejemplo de uso:
procesos_rr = [{'nombre': 'P1', 'tiempo_restante': 8},
               {'nombre': 'P2', 'tiempo_restante': 6},
               {'nombre': 'P3', 'tiempo_restante': 10}]
quantum_rr = 3
round_robin(procesos_rr, quantum_rr)

2. Prioridad:
1
2
3
4
5
6
7
8
9
10
11
12
13
def prioridad(procesos):
    cola = sorted(procesos, key=lambda x: x['prioridad'], reverse=True)
    tiempo_total = 0
    while cola:
        proceso_actual = cola.pop(0)
        tiempo_total += proceso_actual['tiempo_ejecucion']
        print(f"Ejecutando proceso {proceso_actual['nombre']} durante {proceso_actual['tiempo_ejecucion']} unidades de tiempo.")
 
# Ejemplo de uso:
procesos_prioridad = [{'nombre': 'P1', 'tiempo_ejecucion': 8, 'prioridad': 3},
                      {'nombre': 'P2', 'tiempo_ejecucion': 6, 'prioridad': 1},
                      {'nombre': 'P3', 'tiempo_ejecucion': 10, 'prioridad': 2}]
prioridad(procesos_prioridad)

3. PEPS (proceso más corto primero):
1
2
3
4
5
6
7
8
9
10
11
12
13
def peps(procesos):
    cola = sorted(procesos, key=lambda x: x['tiempo_ejecucion'])
    tiempo_total = 0
    while cola:
        proceso_actual = cola.pop(0)
        tiempo_total += proceso_actual['tiempo_ejecucion']
        print(f"Ejecutando proceso {proceso_actual['nombre']} durante {proceso_actual['tiempo_ejecucion']} unidades de tiempo.")
 
# Ejemplo de uso:
procesos_peps = [{'nombre': 'P1', 'tiempo_ejecucion': 8},
                 {'nombre': 'P2', 'tiempo_ejecucion': 6},
                 {'nombre': 'P3', 'tiempo_ejecucion': 10}]
peps(procesos_peps)

Ten en cuenta que estos son ejemplos básicos para ilustrar la lógica de cada algoritmo. En un entorno real, los procesos pueden tener más atributos, y podrías necesitar manejar situaciones más complejas como la llegada de nuevos procesos durante la ejecución.
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