Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

BUENA NOTA Y EXELECTE, Ejercicios de Sistemas Operativos

MATERIA SISTEMA OPERATIVO ACTIVIDAD C++

Tipo: Ejercicios

2024/2025

Subido el 11/07/2025

yonika-mallerly-solorzano-garcia
yonika-mallerly-solorzano-garcia 🇪🇨

1 documento

1 / 6

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
NOMBRE:
DAVID STIVEN GARCIA CEDEÑO
PARALELO:
A
SEMESTRE:
SEGUNDO
ACTIVIDAD:
7
19 DE
SISTEMAS OPERATIVOS
ING. GABRIELA CUZME ROMERO , MG.
ING. WILSON IGNACIO INTRIAGO ROMERO, MG.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga BUENA NOTA Y EXELECTE y más Ejercicios en PDF de Sistemas Operativos solo en Docsity!

NOMBRE:

DAVID STIVEN GARCIA CEDEÑO

PARALELO:

“A”

SEMESTRE:

SEGUNDO

ACTIVIDAD:

19 DE

SISTEMAS OPERATIVOS

ING. GABRIELA CUZME ROMERO , MG.

ING. WILSON IGNACIO INTRIAGO ROMERO, MG.

SIMULACIÓN DE ASIGNACIÓN DE RECURSOS Y DETECCIÓN DE INTERBLOQUEOS

  1. INTRODUCCIÓN En este trabajo se presenta una simulación de asignación de recursos en un sistema operativo, utilizando diferentes técnicas para evitar o resolver los interbloqueos. Los recursos considerados son la memoria, la CPU y los dispositivos de entrada/salida, y los procesos que compiten por ellos tienen requisitos variables y dinámicos. El objetivo de esta práctica es analizar las ventajas y desventajas de cada técnica de asignación de recursos, así como proponer mejoras o alternativas para optimizar el uso de los recursos y el rendimiento del sistema. Para realizar la simulación, se ha desarrollado un programa en C++ que implementa las tres técnicas de asignación de recursos: asignación preventiva, asignación por solicitud y liberación, y asignación por detección y recuperación. El programa genera procesos aleatorios con requisitos de recursos distintos y los asigna según la técnica seleccionada. Además, el programa utiliza gráficos o visualizaciones para mostrar la asignación de recursos en tiempo real y facilitar el análisis de los resultados. El trabajo se estructura de la siguiente manera: en la primera parte se describe el planteamiento propuesto y la solución básica de asignación de recursos. En la segunda parte se explica el funcionamiento de cada técnica de asignación de recursos y se muestra el código fuente del programa. En la tercera parte se presentan los resultados de la simulación y se comparan las tres técnicas de asignación de recursos. Finalmente, en la cuarta parte se reflexiona sobre los mecanismos utilizados y se proponen mejoras o alternativas para evitar o solucionar los interbloqueos en el escenario simulado.
  2. DESARROLLO 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 #include 2 #include 3 #include 4 5 using namespace std; 6 7 // Estructura para representar un proceso 8 struct Proceso { 9 string nombre; 10 int memoriaRequerida; 11 int cpuRequerida; 12 }; 13 14 // Vector de procesos 15 vector procesos; 16 17 // Función para asignar recursos preventivamente 18 void asignacionPreventiva(int memoriaDisponible, int velocidadCPU) {

78 if (interbloqueo) { 79 // Proceso está en estado de interbloqueo 80 } else { 81 //Proceso NO recibe los recursos 82 } 83 } 84 } 85 } 86 87 int main() { 88 // Definir los procesos 89 Proceso p1 = {"P1", 50 , 2 }; 90 Proceso p2 = {"P2", 200 , 1 }; 91 Proceso p3 = {"P3", 50 , 1 }; 92 // Agregar los procesos al vector de procesos 93 procesos.push_back(p1); 94 procesos.push_back(p2); 95 procesos.push_back(p3); 96 97 // Definir los recursos disponibles 98 int memoriaDisponible = 100 ; 99 int velocidadCPU = 4 ; 100 101 // Ejecutar los diferentes mecanismos de asignación de recursos 102 cout << "Asignación preventiva:" << endl; 103 asignacionPreventiva(memoriaDisponible, velocidadCPU); 104 105 cout << endl << "Asignación por solicitud y liberación:" << endl; 106 asignacionPorSolicitudYLiberacion(memoriaDisponible, velocidadCPU); 107 cout << endl << "Asignación por detección y recuperación:" << endl; asignacionPorDeteccionYRecuperacion(memoriaDisponible, velocidadCPU); return 0 ; } //R: 02InterbloqueoSimuladorTratamiento Con las modificaciones

Explicación: Estos resultados son coherentes con los requisitos de recursos definidos en los procesos y los valores de recursos disponibles que estableciste en el código. El programa simula un escenario donde algunos procesos pueden ser asignados correctamente mientras que otros no, dependiendo de los recursos que requieren y los recursos disponibles. Cambios: Se han introducido dos procesos adicionales (P4 y P5) a la lista de procesos ya existentes (procesos.push_back(p4); procesos.push_back(p5);). Cada uno de estos procesos tiene sus propias necesidades de memoria (memoriaRequerida) y velocidad de CPU (cpuRequerida). Ajuste de los recursos disponibles: Se han establecido los valores de nuevaMemoriaDisponible y nuevaVelocidadCPU como nuevos valores para simular un escenario distinto de recursos. Actualización de la función asignacionPreventiva: Se han modificado los mensajes de salida para indicar si un proceso ha sido asignado correctamente o si no ha podido ser asignado debido a la falta de recursos. Modificaciones en el código: Incorporación de nuevos procesos: Se han introducido dos procesos adicionales (P4 y P5) a la lista de procesos ya existentes (procesos.push_back(p4); procesos.push_back(p5);). Cada uno de estos procesos tiene sus propias necesidades de memoria (memoriaRequerida) y velocidad de CPU (cpuRequerida). Ajuste de los recursos disponibles: Se han establecido los valores de nuevaMemoriaDisponible y nuevaVelocidadCPU como nuevos valores para simular un escenario distinto de recursos. Actualización de la función asignacionPreventiva: Se han modificado los mensajes de salida para indicar si un proceso ha sido asignado correctamente o si no ha podido ser asignado debido a la falta de recursos. Analizando compilación : "Asignación preventiva con otros nuevos recursos:"