ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Simulación de asignación de recursos y detección de interbloqueos


Enviado por   •  17 de Agosto de 2023  •  Documentos de Investigación  •  857 Palabras (4 Páginas)  •  58 Visitas

Página 1 de 4

[pic 1][pic 2]

[pic 3][pic 4][pic 5] 


Autónoma # 3 Simulación de asignación de recursos y detección de interbloqueos

1. Introducción[a]

2. Resumen teórico[b]

3. Desarrollo

Para el desarrollo de este apartado se considerará lo siguiente:

  1. Se pretende diseñar un escenario que simule que varios procesos compitan por recursos y utilicen diferentes mecanismos de asignación de recursos, como asignación preventiva, asignación por solicitud y liberación, y asignación por detección y recuperación.
  2. Deberá utilizar gráficos o visualizaciones para mostrar la asignación de recursos en tiempo real y analizar los resultados obtenidos. Al finalizar, deberán reflexionar sobre los mecanismos utilizados y proponer mejoras o alternativas para evitar o solucionar los interbloqueos en el escenario simulado.

Parte I. Planteamiento propuesto

En esta actividad se necesita desarrollar en C++  un programa o simulación de asignación de recursos como la memoria, la CPU o los dispositivos de entrada/salida en un sistema operativo.

Solución Básica de asignación de recursos

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

#include <iostream>

#include <vector>

#include <string>

using namespace std;

// Estructura para representar un proceso

struct Proceso {

    string nombre;

    int memoria;

    int velocidadCPU;

    int solicitudMemoria;

    int solicitudCPU;

};

int main() {

    // Definir el número de procesos en la simulación

    int numProcesos = 3;

    // Crear un vector para almacenar los procesos

    vector<Proceso> procesos(numProcesos);

    // Inicializar los procesos con valores de ejemplo

    procesos[0] = {"Proceso A", 100, 2, 50, 1};

    procesos[1] = {"Proceso B", 150, 3, 80, 2};

    procesos[2] = {"Proceso C", 200, 1, 100, 3};

    // Definir la cantidad de memoria disponible y la velocidad de la CPU

    int memoriaDisponible = 500;

    int velocidadCPU = 4;

    // Ejecutar la simulación

    for (int i = 0; i < numProcesos; i++) {

        // Verificar si el proceso puede obtener los recursos solicitados

        if (procesos[i].solicitudMemoria <= memoriaDisponible &&

            procesos[i].solicitudCPU <= velocidadCPU) {

            // Asignar los recursos al proceso

            memoriaDisponible -= procesos[i].solicitudMemoria;

            velocidadCPU -= procesos[i].solicitudCPU;

            // Mostrar mensaje de asignación de recursos

            cout << "Proceso " << procesos[i].nombre << " obtiene " << procesos[i].solicitudMemoria << "MB de memoria y " << procesos[i].solicitudCPU << "GHz de CPU." << endl;

        } else {

            // Mostrar mensaje de rechazo de asignación de recursos

            cout << "Proceso " << procesos[i].nombre << " no puede obtener los recursos solicitados." << endl;

        }

    }

    return 0;

}

...

Descargar como (para miembros actualizados)  txt (5.3 Kb)   pdf (188.6 Kb)   docx (38.3 Kb)  
Leer 3 páginas más »
Disponible sólo en Clubensayos.com