Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
MEMORIA por Mind Map: MEMORIA

1. Proceso de administración de memoria

1.1. El sistema operativo gestiona la MMU o Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas.

1.1.1. Verifica que partes de la memoria están en uso y cuáles no. Asigna memoria a los procesos y la recupera cuando ya no la necesitan. Gestiona el intercambio entre memoria principal y virtual cuando se requiere

1.2. Objetivos de la Gestión de Memoria

1.2.1. Ofrecer a cada proceso un espacio lógico propio.

1.2.2. Proporcionar protección entre los procesos.

1.2.3. Permitir que los procesos compartan memoria.

1.2.4. Maximizar el rendimiento del sistema.

1.3. Requisitos de la Gestión de Memoria

1.3.1. Reubicación: los procesos deben ser cargados y descargados de memoria.

1.3.2. Protección: al sistema operativo y a los otros procesos de posibles accesos que se puedan realizar a sus espacios de direcciones.

1.3.3. Compartición: bajo la supervisión y control del sistema operativo, puede ser provechoso que los procesos puedan compartir memoria.

1.3.4. Organización Lógica: Debe existir correspondencia entre el sistema operativo y el hardware al tratar los datos y los programas de los usuarios de acuerdo con la estructura lógica que ellos presenten.

1.3.5. Organización Física: Debe ser parte de la administración de memoria, la organización del flujo de información entre la memoria principal y la memoria secundaria.

2. Esquemas de administración de memoria

2.1. Contigua: particiones fijas y variables

2.1.1. La memoria está dividida en espacios (Particiones). Un proceso necesita ejecutarse -> Se le asigna uno de dichos espacios (Partición). Cada partición puede contener un único proceso.

2.1.1.1. Particiones Fijas

2.1.1.1.1. Todas el mismo tamaño

2.1.1.1.2. Con diferentes Tamaños.

2.1.1.2. Particiones Variables.

2.1.1.2.1. Toda la memoria (salvo partición del S.O.) disponible para procesos, como si fuese un gran hueco. Llega un proceso: Se introduce en un hueco libre y el espacio no ocupado será un nuevo hueco.

2.1.1.2.2. Cada zona de memoria ocupada es una partición.

2.1.1.2.3. El proceso termina: Libera su zona de memoria. y se convierte en un hueco que se fusiona con los adyacentes.

2.1.1.2.4. Se conserva una tabla de partes de memoria ocupadas y libres y la cola de entrada de procesos en memoria.

2.1.1.2.5. Fragmentación de Particiones Variables:

2.2. Paginación

2.2.1. Permite que la memoria de un proceso no sea contigua. Hay una distinción entre direcciones lógicas y físicas. La memoria física la dividimos en bloques de tamaño fijo: marcos. La memoria lógica: La dividimos en bloques llamados: páginas de igual tamaño que el marco. Las páginas de un proceso se cargan en los marcos de la memoria principal que estén disponibles: Tenemos “trozos” del proceso allí donde la memoria está disponible.

2.2.1.1. La dirección lógica generada consta de dos partes: Número de Pagina (P) y desplazamiento dentro de la página (D). La tabla de páginas: (contiene la dirección base en memoria física), permite establecer una correspondencia entre el número de página y un número de marco de memoria física. La dirección física es el número de marco y el desplazamiento.

2.2.2. El SO traduce direcciones usando una copia de la tabla páginas en memoria, Implementación Hardware de la Tabla de Páginas:

2.2.2.1. Un conjunto de registros (circuitos lógicos de alta velocidad):

2.2.2.1.1. Habrá que cargar estos registros en un cambio de contexto.

2.2.2.1.2. Se usa para pocas entradas (unas 256)

2.2.2.2. Tabla en memoria principal y registro base cuyo contenido apunta a la tabla de páginas:

2.2.2.2.1. Para cambiar de tabla de páginas, basta con cambiar de registro base.

2.2.2.2.2. Menor tiempo de cambio de contexto, pero mayor de acceso a memoria

2.2.2.2.3. Accedemos dos veces a memoria para obtener un dato en memoria.

2.2.2.2.4. Para tablas grandes (millones de entradas)

2.2.2.3. Registros Asociativos ((translation look-aside buffers TLB): pequeña caché de acceso rápido

2.2.2.3.1. Los registros contienen solo unas pocas entradas de una T.páginas

2.2.2.3.2. Dos partes en cada registro: Una clave (número de página) y un valor (número de Marco).

2.2.2.3.3. Compara el valor de la página deseada con todas las claves. Si la clave está: Proporciona el número de marco asociado. Si no está: Se accede a la tabla de páginas de memoria.

2.2.3. Protección de memoria en entorno con paginación:

2.2.3.1. En la tabla de páginas pueden encontrarse unos bits de protección asociados a cada marco.

2.2.3.2. Indican si la página es de sólo lectura o lectura y escritura.

2.2.3.3. Cuando se consulta el número de marco, se consultan además los bits de protección.

2.2.3.4. Se debe controlar que el número de página no supere el total de páginas usadas por el proceso (sería una dirección incorrecta).

2.3. Segmentación

2.3.1. El espacio de direcciones lógicas se compone de un conjunto de segmentos: Cada uno tiene un nombre y una longitud. Para el usuario las direcciones especifican el nombre del segmento y el desplazamiento dentro de él. El nombre del segmento se numera (es un número). Los programas se separan en: Segmento de Código, Segmento de Datos, Segmento de Pila. Hay una división lógica del proceso en diferentes segmentos

2.3.1.1. Hardware de segmentación mediante Tabla de segmentos: Establece la correspondencia entre direcciones físicas y lógicas. Se busca en la tabla de acuerdo con el número de segmento. Cada entrada 2 registros: base (dir. Física inicial del segmento en memoria) límite de segmento (longitud del segmento) Se compara límite del segmento con desplazamiento. Si desplazamiento válido, se suma a la dirección el registro base.

2.3.1.1.1. Implementación Hardware de la tabla de segmentos: Puede ubicarse en registros rápidos o memoria (como paginación). Si está en memoria: Un registro base STBR (segment table base register) indica inicio de la tabla de segmentos en memoria. Un registro límite indica longitud de la tabla de segmentos.

2.3.1.1.2. Protección: Bits de protección: Segmento de sólo lectura o lectura y escritura. Se consultan antes de acceder al segmento.

2.3.1.1.3. Compartición de código: Puede realizarse a nivel de segmento (código o datos). Cada proceso tendrá una tabla de segmentos. Compartir un segmento significa que una entrada de la tabla de segmentos coincide en varios procesos (igual posición física).

2.4. Segmentación paginada

2.4.1. La Memoria lógica está dividida en bloque llamados segmentos que contienen las regiones de un proceso. Dirección lógica: nº segmento, desplazamiento: S,d Los segmentos están divididos en páginas de igual tamaño que los marcos (potencias de 2). Las páginas de un proceso se cargan en marcos de la memoria principal. Cada segmento tiene asociada una tabla de páginas Se usa un registro límite y base de la tabla de páginas para cada segmento.