Algoritmo del Banquero y Gestión de Memoria en Sistemas Operativos
Clasificado en Informática
Escrito el en español con un tamaño de 4,11 KB
Algoritmo del Banquero: Prevención de Deadlocks
El Algoritmo del Banquero es una técnica utilizada en sistemas operativos para evitar el deadlock (interbloqueo). Cuando se presentan las condiciones que podrían llevar a un deadlock, este algoritmo propone una asignación cuidadosa de recursos para evitarlo.
Funcionamiento del Algoritmo del Banquero
Un sistema operativo (SO) comparte un número fijo (t) de unidades de recursos idénticas (por ejemplo, unidades de cinta) entre un número fijo (n) de usuarios o procesos.
- Cada usuario especifica por adelantado el número máximo de unidades de recurso que utilizará durante la ejecución de su trabajo.
- El SO aceptará la petición si la necesidad máxima de ese usuario no es mayor que t.
- Un usuario puede obtener o liberar unidades de recurso una a una. Podría tener que esperar por un recurso adicional, pero el SO garantiza una espera finita.
- El número de unidades de recurso asignadas a un usuario nunca superará la necesidad máxima declarada.
Se dice que el estado actual del sistema es seguro si el SO puede permitir que todos los usuarios terminen sus trabajos en un tiempo finito. Si no es así, el estado es inseguro.
Gestión de Memoria y Traducción de Direcciones
Conceptos Básicos de Memoria
- Memoria/Almacenamiento: Se refiere a cualquier dispositivo capaz de almacenar datos.
- Memoria Primaria (RAM): Es la memoria principal de acceso aleatorio, rápida pero volátil.
- Memoria Real: Sinónimo de memoria primaria.
Los programas y datos residen en la memoria principal para su ejecución. La memoria principal es más cara que la memoria secundaria (como discos duros). Antes de la memoria virtual, la memoria principal era el único espacio disponible. La memoria principal es un recurso caro y limitado.
Direcciones Virtuales y Físicas
Las direcciones generadas por los programas durante su ejecución (direcciones virtuales) no son, necesariamente, las mismas que las direcciones físicas en la memoria principal (direcciones reales). Las direcciones virtuales suelen pertenecer a un espacio de direcciones mucho mayor que el disponible físicamente.
Para poder utilizar las direcciones virtuales, estas deben ser traducidas o mapeadas a direcciones de memoria física mediante un mecanismo de "traducción de direcciones". Esta traducción debe ser rápida para no ralentizar el sistema.
Una dirección virtual, v, se representa como un par ordenado (b, d), donde:
- b: Número de bloque (o página, o segmento) donde se encuentra el elemento referenciado.
- d: Desplazamiento dentro del bloque (o página, o segmento).
Traducción de Direcciones con la Tabla de Correspondencia de Bloques (TCB)
Para encontrar la dirección física de un proceso a partir de su dirección virtual V = (B, D), se sigue este proceso:
- Cada proceso tiene su propia Tabla de Correspondencia de Bloques (TCB), también llamada "Tabla de Página" en sistemas paginados o "Tabla de Segmentos" en sistemas segmentados. Esta tabla reside en la memoria principal.
- La TCB tiene una dirección inicial (Dirección Base), que se almacena en un registro especial de la CPU llamado "Registro de Origen de la TCB".
- La TCB contiene la dirección base en la memoria física donde se encuentra el bloque (o página, o segmento) del proceso. Esta dirección (B') se obtiene sumando el número de bloque (B) a la dirección base de la TCB (A). Es decir, B' = A + B.
- Finalmente, la dirección real (R) se calcula sumando la dirección base del bloque (B') y el desplazamiento (D): R = B' + D.
Este mecanismo permite que un proceso acceda a su espacio de direcciones virtuales, mientras que el sistema operativo gestiona la ubicación real de los datos en la memoria física.