Podcast
Questions and Answers
¿Cuál es la principal función del hardware de mapeo en la gestión de memoria?
¿Cuál es la principal función del hardware de mapeo en la gestión de memoria?
¿Qué sucede cuando un programa intenta llamar a una rutina que no ha sido cargada?
¿Qué sucede cuando un programa intenta llamar a una rutina que no ha sido cargada?
¿Qué característica distingue a las bibliotecas enlazadas dinámicamente (DLLs) de las bibliotecas estáticas?
¿Qué característica distingue a las bibliotecas enlazadas dinámicamente (DLLs) de las bibliotecas estáticas?
¿Cuál es una ventaja de la carga dinámica de rutinas en comparación con la carga estática?
¿Cuál es una ventaja de la carga dinámica de rutinas en comparación con la carga estática?
Signup and view all the answers
¿Quién es principalmente responsable de diseñar programas que aprovechen la carga dinámica?
¿Quién es principalmente responsable de diseñar programas que aprovechen la carga dinámica?
Signup and view all the answers
¿Cuál es la función principal del registro de reubicación en un sistema con protección de memoria?
¿Cuál es la función principal del registro de reubicación en un sistema con protección de memoria?
Signup and view all the answers
¿Qué ocurre cuando el despachador carga los registros de reubicación y límite durante el cambio de contexto?
¿Qué ocurre cuando el despachador carga los registros de reubicación y límite durante el cambio de contexto?
Signup and view all the answers
¿Cómo se relacionan las DLLs con la memoria en un sistema operativo?
¿Cómo se relacionan las DLLs con la memoria en un sistema operativo?
Signup and view all the answers
En el contexto de la asignación de memoria contigua, ¿dónde generalmente se ubica el sistema operativo en los SO modernos?
En el contexto de la asignación de memoria contigua, ¿dónde generalmente se ubica el sistema operativo en los SO modernos?
Signup and view all the answers
¿Cuál de las siguientes afirmaciones es incorrecta sobre el registro límite en un sistema de protección de memoria?
¿Cuál de las siguientes afirmaciones es incorrecta sobre el registro límite en un sistema de protección de memoria?
Signup and view all the answers
Study Notes
Memoria Principal
- La administración de la memoria es fundamental, dado que se comparte entre múltiples procesos.
- La mayoría de los algoritmos de administración de memoria requieren soporte de hardware (HW) y del sistema operativo (SO), por lo que muchos sistemas tienen una gestión de memoria estrechamente integrada entre el HW y el SO.
- La memoria consta de una gran arreglo de bytes, cada uno con su dirección propia.
- A medida que un programa se ejecuta, la unidad de memoria solo ve un flujo de direcciones de memoria; no comprende cómo se generan ni su utilidad (instrucciones o datos).
Generalidades
- La administración de la memoria es fundamental, dado que ésta se comparte entre múltiples procesos.
- La mayoría de los algoritmos de administración de memoria requieren soporte de HW, por lo que muchos sistemas tienen una gestión de memoria estrechamente integrada entre el HW y el SO.
- La memoria consta de un gran arreglo de bytes, cada uno con su propia dirección.
- A medida que un programa se ejecuta, la unidad de memoria solo ve un flujo de direcciones de memoria; no sabe cómo se generan ni para qué sirven (instrucciones o datos).
- En consecuencia, se puede ignorar cómo se genera una dirección de memoria; solo interesa la secuencia de direcciones de memoria generadas por el programa en ejecución.
Hardware Básico
- Se debe proteger el SO de los procesos del usuario, así como también proteger los procesos de los usuarios entre sí.
- El HW debe proporcionar esta protección, ya que el SO no suele intervenir entre la CPU y sus accesos a la memoria (por razones de rendimiento).
- Primero se debe asegurar que cada proceso tenga un espacio de memoria separado.
- Esta disposición protege los procesos entre sí, dado que es fundamental contar con múltiples procesos cargados en la memoria y ejecutarlos concurrentemente.
- A su vez, se necesita determinar el rango de direcciones legales a las que puede acceder el proceso y garantizar que el proceso solo pueda acceder a dichas direcciones.
- Esta protección se puede proveer mediante el uso de dos registros: un registro base y un registro límite.
Enlace de Direcciones (Address Binding)
- Un programa pasa por varias etapas (algunas opcionales) antes de ejecutarse.
- Las direcciones se representan de diferentes formas en estas etapas.
- Las direcciones en el programa fuente son generalmente simbólicas (ej.: una variable).
- El compilador enlaza estas direcciones simbólicas a direcciones reubicables (ej.: 14 bytes desde el comienzo de este módulo).
- El enlazador (linker) o cargador (loader) enlaza las direcciones reubicables a direcciones absolutas (ej.: 74014).
- Cada enlace (binding) es una asignación de un espacio de direcciones a otro.
Enlace de Instrucciones y Datos a Direcciones de Memoria
- El enlace de instrucciones y datos a direcciones de memoria se puede realizar en tiempo de compilación, en tiempo de carga o en tiempo de ejecución.
- Tiempo de compilación: si se sabe en tiempo de compilación dónde residirá el proceso en memoria, se puede generar código absoluto.
- Tiempo de carga: si no se sabe en tiempo de compilación dónde residirá el proceso en memoria, el compilador debe generar código reubicable.
- Tiempo de ejecución: si el proceso se puede mover durante su ejecución, el enlace se retrasa hasta la ejecución; para esto se requiere hardware especial.
Espacio de Direcciones Lógico versus Físico
- Una dirección generada por la CPU es una dirección lógica, mientras que una dirección en la unidad de memoria es una dirección física.
- El enlace de direcciones en tiempo de compilación o carga genera direcciones lógicas y físicas idénticas; sin embargo, el esquema en tiempo de ejecución resulta en direcciones lógicas y físicas diferentes.
- Una dirección lógica también se conoce como una dirección virtual.
- El conjunto de todas las direcciones lógicas generadas por un programa se denomina espacio de direcciones lógicas.
- El conjunto de todas las direcciones físicas correspondientes a estas direcciones lógicas se denomina espacio de direcciones físicas.
- En el esquema de enlace de direcciones en tiempo de ejecución, los espacios de direcciones lógicos y físicos difieren.
Memoria Principal (RAM)
- La CPU carga las instrucciones solo desde la memoria; los programas deben cargarse primero en la memoria para ejecutarse (ciclo instrucción-ejecución).
- La memoria principal es un lugar pequeño para almacenar todos los programas y datos necesarios de forma permanente.
- La memoria principal es volátil, lo que significa que perderá su contenido cuando apaga la computadora.
- La memoria secundaria (como los discos duros, las memorias USB, las unidades flash y las cintas) almacena grandes cantidades de datos permanentemente.
Paginación
- Permite que el espacio de direcciones físicas de un proceso no sea contiguo.
- Evita la fragmentación externa y la compactación, dos problemas de la asignación de memoria contigua.
- Ofrece numerosas ventajas, utilizada en la mayoría de los SOs.
- Se implementa mediante la cooperación entre el SO y el hardware.
Paginación (Método Básico)
- Dividir la memoria física en bloques de tamaño fijo llamados marcos.
- Dividir la memoria lógica en bloques del mismo tamaño llamado páginas.
- Cuando un proceso se ejecuta, sus páginas se cargan en cualquier marco disponible.
- El espacio de direcciones lógicas podría estar totalmente separado del espacio de direcciones físicas.
- Cada dirección generada por la CPU se divide en dos partes: número de página y desplazamiento de página.
Paginación (Soporte de Hardware)
- El TLB (Translation Lookaside Buffer) es un búfer de hardware que almacena pares de direcciones lógicas y físicas.
- Cuando el SO genera una dirección lógica, el HW primero consulta el TLB.
- Si el par de direcciones lógicas y físicas deseada está presente en el TLB, el mapa se denomina "hit".
- Si no está presente, se denomina "miss", se consulta la tabla de páginas y se actualiza el TLB.
Paginación (Protección)
- La protección de la memoria se logra mediante bits asociados a cada marco dentro de la tabla de páginas.
- Un bit puede indicar si una página es de lectura-escritura o de solo lectura.
- Un intento de escribir en una página en solo lectura provoca una interrupción al SO.
- Se pueden extender funciones de HW para proporcionar protección de ejecución.
Asignación de Memoria Contigua
- La memoria se divide en dos particiones: una para el SO y otra para los procesos de usuario.
- Posibles estrategias: primer ajuste, mejor ajuste y peor ajuste.
- La fragmentación externa es un problema en esta asignación.
- Las simulaciones indican que las estrategias de primer y mejor ajuste son más eficientes que la de peor ajuste en tiempo y uso de espacio.
Fragmentación
- Fragmentación externa es cuando hay memoria disponible, pero no contigua, lo que dificulta la asignación de un bloque de memoria.
- Fragmentación interna es cuando un proceso solo utiliza una parte de la memoria asignada, lo que desperdicia memoria.
- Una solución al problema de la fragmentación externa es la compactación.
Swapping (Intercambio)
- Un proceso, o parte de un proceso, puede sacarse temporalmente de la memoria a un almacenamiento de respaldo.
- El swapping permite que el número de procesos en ejecución en la memoria sea mayor que el número de marcos disponibles.
- El swapping con paginación es una técnica que permite intercambiar páginas de un proceso en lugar de todo el proceso.
Swapping en Sistemas Móviles
- Los sistemas móviles generalmente no admiten intercambio en la misma medida que los sistemas de escritorio.
- Los dispositivos móviles utilizan memorias flash para almacenamientos no volátiles (y no discos duros).
- La restricción de espacio, la duración de las transacciones y las propiedades de volatilidad de la memoria flash son los motivos para evitar intercambio (swapping).
- En sistemas iOS y Android se utiliza la finalizar aplicaciones para reducir el consumo de memoria.
Segmentación
- Un programador considera un programa principal con un conjunto de métodos, procedimientos o funciones.
- Cada uno de estos módulos o elementos de datos se conoce por su nombre, sin importar qué direcciones en memoria ocupan.
- Las instrucciones del segmento se identifican por su desplazamiento desde el principio del segmento; la primera instrucción del programa, la quinta instrucción de Sqrt(), etc.
Memoria Compartida
- Permite que varios procesos compartan el mismo código.
- Más eficiente en la utilización de la memoria.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Este cuestionario se centra en la comprensión de la administración de la memoria en los sistemas operativos. Explora cómo se comparte la memoria entre múltiples procesos y la relación entre el hardware y el software en su gestión. También se discuten conceptos como las direcciones de memoria y la ejecución de programas.