Administración de Memoria (UTN FRC)
Document Details
![WarmerRing](https://quizgecko.com/images/avatars/avatar-19.webp)
Uploaded by WarmerRing
UTN-FRC
Tags
Summary
This document provides an overview of memory management strategies, including monoprogramming, multiprogramming with fixed partitions, dynamic partitions, and virtual memory. It covers topics such as relocation, protection, and various algorithms. The document focuses on memory management concepts in operating systems, suitable for an undergraduate computer science curriculum.
Full Transcript
# UTN FRC - Unidad Nº4 - Administración de memoria ## Estrategias de administración - Monoprogramación sin intercambio ni paginación - Se ejecuta un solo proceso a la vez. - Se asigna memoria, no se libera. - Baja utilización de la memoria. - Baja utilización del procesador. - Multi...
# UTN FRC - Unidad Nº4 - Administración de memoria ## Estrategias de administración - Monoprogramación sin intercambio ni paginación - Se ejecuta un solo proceso a la vez. - Se asigna memoria, no se libera. - Baja utilización de la memoria. - Baja utilización del procesador. - Multiprogramación con particiones fijas (ocurre fragmentación interna) - La multiprogramación aumenta el aprovechamiento de la CPU. - La memoria se divide en n partes de distinto tamaño, cada una con una cola de entrada. - Desventaja: **fragmentación interna**, cuando la cola de una partición grande está vacía, los trabajos pequeños tienen que esperar para entrar en memoria aunque haya mucha memoria desocupada. - Alternativas: - Mantener una sola cola de entrada - Examinar toda la cola cada vez que se desocupe una partición - Tener por lo menos una partición pequeña para ejecutar trabajos pequeños - **Reubicación** - El programador no sabe en qué parte de la memoria principal se situará el programa cuando se ejecute. - El programa se puede llevar al disco y traerse de nuevo a la memoria principal en un área diferente (reubicado). - Las referencias de memoria encontradas en el código del programa deben traducirse a direcciones físicas. ## Protección - Los procesos no deberían ser capaces de referenciar sin permiso posiciones de memoria principal de otro proceso. - Deben comprobarse en el tiempo de ejecución. - El procesador (hardware) es el que debe satisfacer el requisito de protección de la memoria. ## Espacio de direcciones - Un espacio de direcciones es el conjunto de direcciones que puede utilizar un proceso para direccionar la memoria. - Cada proceso tiene su propio espacio de direcciones, independiente de los que pertenecen a otros procesos. - Los espacios de direcciones no tienen que ser numéricos. ## Registro base y límite - La solución sencilla utiliza una versión muy simple de la reubicación dinámica. - Consiste en equipar a la máquina con dos registros especiales de hardware, llamados base y límite. - En la figura 3-2(c), los valores base y límite que se cargarían en estos registros al ejecutar el primer programa son *0* y *16,384*, respectivamente. - Cuando un proceso hace referencia a la memoria, el hardware suma de manera automática el valor base a la dirección generada por el proceso antes de enviar la dirección al bus de memoria. - Al mismo tiempo comprueba si la dirección ofrecida es igual o mayor que el valor resultante de sumar los valores de los registros límite y base, en cuyo caso se genera un fallo y se aborta el acceso. ## Administración de memoria - Administrador de memoria: parte del SO que administra todo lo referido a la memoria. - A veces no hay espacio suficiente en memoria principal para contener todos los procesos activos, así que los procesos excedentes se mantienen en disco y traerlos a la memoria en forma dinámica para que se ejecuten. - Enfoques: - **Intercambio (swapping)**: consiste en traer a la memoria un proceso entero, ejecutarlo durante un rato y regresarlo al disco. - **Memoria virtual**: permite que los programas se ejecuten, aunque sólo una parte de ellos esté en memoria. ## Intercambio (swapping) - Si la memoria física de la computadora es lo bastante grande como para contener todos los procesos, los esquemas descritos hasta ahora funcionarán en forma más o menos correcta. - A través de los años se han desarrollado dos esquemas generales para lidiar con la sobrecarga de memoria: - **Intercambio**: consiste en llevar cada proceso completo a memoria, ejecutarlo durante cierto tiempo y después regresarlo al disco. - **Memoria virtual**: consiste en llevar al disco los procesos inactivos (estos se despiertan periódicamente para realizar su trabajo y después vuelven a quedar inactivos). ## Espacio para crecer - Si los procesos pueden tener dos segmentos en crecimiento, por ejemplo, cuando el segmento de datos se utiliza como heap para las variables que se asignan y liberan en forma dinámica y un segmento de pila para las variables locales normales y las direcciones de retorno, un arreglo alternativo se sugiere por sí mismo, a saber, el de la figura 3-5(b). ## Multiprogramación con particiones variables (ocurre fragmentación externa) - Para vencer algunas de las dificultades con particionamiento fijo, se desarrolló una técnica conocida como particionamiento dinámico. - Con particionamiento dinámico, las particiones son de longitud y número variable. - Al llevar un proceso a la memoria principal, se le asigna exactamente tanta memoria como requiera y no más. ## Fragmentación externa - Este fenómeno se conoce como fragmentación externa, indicando que la memoria que es externa a todas las particiones se fragmenta de forma incremental. - Cualquier programa, sin importar lo pequeño que sea, ocupa una partición entera. - Este fenómeno, en el cual hay espacio interno malgastado debido al hecho de que el bloque de datos cargado es menor que la partición, se conoce con el nombre de fragmentación interna. - Una técnica para eliminar la fragmentación externa es la compactación: de vez en cuando, el sistema operativo desplaza los procesos en memoria, de forma que se encuentren contiguos y de este modo toda la memoria libre se encontrará unida en un bloque. ## Administración de memoria con mapa de bits - Con un mapa de bits, la memoria se divide en unidades de asignación, que pueden ser desde unas cuantas palabras hasta varios kilobytes. - A cada unidad de asignación corresponde un bit del mapa de bits. - El bit es 0 si la unidad está desocupada y 1 si está ocupada (o viceversa). ## Administración de memoria con listas enlazadas - Consiste en una lista enlazada de segmentos de memoria asignados y libres, donde un segmento es un proceso, o bien, un hueco vacío entre dos procesos. - Cada entrada de la lista especifica un hueco **(H)** o un proceso **(P)**, la dirección donde comienza, la longitud y un apuntador a la siguiente entrada. ## Algoritmos de asignación de memoria - **Primer ajuste**: es el método más simple. El administrador de memoria explora la lista de segmentos hasta hallar un hueco lo bastante grande. - **Siguiente ajuste**: funcionamiento similar al del primer ajuste, sólo que el algoritmo lleva un registro de donde encuentra cada vez que descubre un hueco adecuado. - **Mejor ajuste**: se explora toda la lista y se escoge el hueco más pequeño que sea adecuado. - **Peor ajuste**: asegura de escoger el hueco más grande disponible, de modo que el hueco restante sea lo bastante grande como para ser útil. - **Ajuste rápido**: mantiene listas separadas para algunos de los tamaños más comunes solicitados. ## Memoria virtual - La idea básica detrás de la memoria virtual es que cada programa tiene su propio espacio de direcciones, el cual se divide en trozos llamados páginas. - Cuando el programa hace referencia a una parte de su espacio de direcciones que no está en la memoria física, el sistema operativo recibe una alerta para buscar la parte faltante y volver a ejecutar la instrucción que falló. - Hay dos técnicas: - Paginación. - Segmentación. ## Paginación - La mayoría de los sistemas con memoria virtual utilizan una técnica llamada paginación. - Estas direcciones generadas por el programa se denominan *direcciones virtuales* y constituyen el espacio de direcciones virtual. - En computadoras sin memoria virtual, la dirección virtual se coloca en forma directa en el bus de memoria y esto hace que se lea o escriba la palabra física de memoria que tiene esa dirección. - Cuando se utiliza memoria virtual, las direcciones virtuales no se envían de manera directa al bus de memoria, sino a una *Unidad de Administración de Memoria (MMU, Memory Managment Unit)* que establece una correspondencia entre las direcciones virtuales y físicas de la memoria. - El espacio de direcciones virtuales se divide en unidades de tamaño fijo llamadas páginas. Las unidades correspondientes en la memoria física se denominan *marcos de página*. ## Tablas de página - El propósito de la tabla de páginas es establecer una correspondencia entre las páginas virtuales y los marcos de página. - Diseños para la implementación de tablas de páginas: - El diseño más sencillo consiste en tener una sola tabla de páginas conformada por un arreglo de registros rápidos de hardware. - En el otro extremo, la tabla de páginas podría estar en su totalidad en la memoria principal. - Tablas de páginas multinivel: dado que las tablas de páginas pueden ocupar mucha memoria, muchas computadoras utilizan una tabla de páginas multinivel. ## Estructura de una entrada de tabla de página - Número de marco de página: este es el campo más importante. - Bit presente/ausente: si este bit es 1, la entrada es válida y puede usarse; si es 0, la página virtual a la que la entrada corresponde no está en memoria. - Bits de protección: indican cuales tipos de accesos están permitidos. - Bit de modificada: cuando se escribe en una página, el hardware establece de manera automática el bit de modificada. Este bit es valioso cuando el sistema operativo decide reclamar un marco de página. - Bit de referenciada: se establece cada vez que una página es referenciada, ya sea para leer o escribir. - Bit caché: este bit permite inhabilitar el uso de caché con la página. ## Memoria asociativa (búferes de consulta para traducción) TLB - La solución que se halló consiste en equipar las computadoras con un pequeño dispositivo de hardware que traduce direcciones virtuales a direcciones físicas, sin pasar por la tabla de páginas. - Este dispositivo, llamado *búfer de consulta para traducción (TLB)*, también conocido como memoria asociativa. - Cuando se presenta una dirección virtual a la MMU para que la traduzca, el hardware verifica primero si su número de página virtual está presente en el TLB o no, comparándolo con todas las entradas simultáneamente. ## Algoritmos para el reemplazo de páginas - Cuando se presenta un fallo de página, el SO tiene que escoger la página que desalojará de la memoria para hacer espacio para colocar la página que traerá del disco. - Tipos de algoritmos: - Algoritmo óptimo de reemplazo de página - Algoritmo de reemplazo de páginas no usadas recientemente (NRU, Not Recently Used) - Algoritmo de reemplazo de páginas de primero en entrar, primero en salir (FIFO) - Algoritmo de reemplazo de páginas de segunda oportunidad - Algoritmo de reemplazo de páginas tipo reloj - Algoritmo de reemplazo de páginas menos usadas recientemente (LRU, Least Recently Used) ## Modelo del conjunto de trabajo (algoritmo de reemplazo de páginas de conjunto de trabajo) - Paginación por demanda; las páginas se traen cuando se necesitan, no por adelantado. - Localidad de referencia: durante cualquier fase de su ejecución, el proceso solo hace referencia a una fracción relativamente pequeña de sus páginas. - Conjunto de trabajo: es el conjunto de páginas que esté usando un proceso en un momento dado. - Los implementadores de los sistemas de memoria virtual tienen que elegir entre los principales algoritmos teóricos: entre el algoritmo de segunda oportunidad y el de envejecimiento, entre la asignación de páginas local o global, y entre la paginación bajo demanda o la prepaginación. ## Segmentación - Consiste en proporcionar a la máquina muchos espacios de direcciones por completo independientes (puede crecer), llamados segmentos. - Los segmentos pueden tener longitudes distintas, y por lo general así es. - Los distintos segmentos pueden crecer o reducirse de manera independiente, sin afectar unos a otros. - Para especificar una dirección en una memoria segmentada, el programador debe proporcionar una dirección de dos partes: un número de segmento y una dirección dentro del segmento. ## Paginación vs. Segmentación - La implementación de segmentación difiere de la paginación de una manera esencial: las páginas tienen un tamaño fijo y los segmentos no. ## Unidad Nº5 - Entrada / Salida - Interrupción: Prácticamente todos los computadores proporcionan un mecanismo mediante el cual otros módulos (E/S y memoria) pueden interrumpir la ejecución normal del procesador. - Las interrupciones constituyen una manera de mejorar la utilización del procesador, ya que permiten que el procesador ejecute otras instrucciones mientras se realiza una operación de E/S. - Clases de interrupciones: - De programa - De reloj - De E/S - Por fallo del hardware ## Interrupciones y el ciclo de instrucción - Con las interrupciones, el procesador se puede dedicar a la ejecución de otras instrucciones mientras una operación de E/S está en proceso. - Cuando el dispositivo externo esté disponible, el módulo de E/S de dicho dispositivo enviará una señal de solicitud de interrupción al procesador. - Éste responde suspendiendo la operación del programa en curso y bifurcándose a un programa que da servicio al dispositivo de E/S en particular, conocido como rutina de tratamiento de la interrupción, reanudando la ejecución original después de haber atendido al dispositivo. - Para que sean posibles las interrupciones, se añade un ciclo de interrupción al ciclo de instrucción. - En el ciclo de interrupción, el procesador comprueba si ha ocurrido alguna interrupción. ## Tratamiento de las interrupciones - Una interrupción desencadena una serie de sucesos, tanto en el hardware del procesador como en el software. - Cuando un dispositivo de E/S completa una operación de E/S, se produce en el hardware la siguiente secuencia de sucesos: - El dispositivo emite una señal de interrupción al procesador. - El procesador finaliza la ejecución de la instrucción en curso antes de responder a la interrupción. - El procesador envía una señal de reconocimiento al dispositivo que generó la interrupción. - El procesador necesita ahora prepararse para trasferir el control a la rutina de interrupción. - El procesador transfiere el control a la rutina de tratamiento de interrupción. - La rutina de tratamiento de interrupción procesa la interrupción. - Cuando se completa el tratamiento de la interrupción, se recuperan los valores de los registros que se salvaron y se restauran sobre los registros del procesador. - La próxima instrucción a ser ejecutada será el programa interrumpido previamente. ## Interrupciones múltiples - Enfoques para tratar las interrupciones multiples: - **Tratamiento secuencial** - **Definición de prioridades** ## Dispositivos de Entrada/Salida - Tipos de dispositivos: - **Dispositivos de Bloque** - **Dispositivos de Carácter** ## Controlador de dispositivos (Drivers) - Una unidad de E/S tiene dos componentes: componente mecánico, es el dispositivo mismo; y un componente electrónico, el controlador. - El SO accede al dispositivo por medio del controlador. ## Organización del sistema de la E/S - Técnicas de comunicación de la E/S: - **E/S programada** - **E/S dirigida por interrupciones** - **DMA (acceso directo a memoria)** ## Evolución de las funciones de E/S - El procesador controla directamente los dispositivos periféricos. - Se añade un controlador o módulo de E/S. - Igual que el punto anterior, pero utilizando interrupciones. - Se utiliza la técnica DMA. - El módulo de E/S pasa a ser un procesador separado con un conjunto de instrucciones especializadas para E/S. - El módulo de E/S pasa a tener su propia memoria local, convirtiéndose en una computadora independiente. ## Aspectos de diseño en los sistemas operativos - Objetivos del diseño: - **Eficiencia** - **Generalidad** ## Estructura lógica del sistema de E/S - Filosofia jerárquica: propone que las funciones del SO deben separarse según su complejidad, sus rangos característicos de tiempo y su nivel de abstracción. - Se llega a una organización del SO en un conjunto de niveles (o capas). - Cada capa ofrece servicios a la capa superior. - Las capas deben definirse de forma que los cambios en una capa no provoquen cambios en otras. - Capas: - **Manejador de Interrupciones** - **Manejador de dispositivo** - **Software de E/S independiente del dispositivo** ## Almacenamiento intermedio de la E/S (Buffering) - Buffering: técnica que soluciona los picos en la demanda de E/S. - Para evitar este problema lo que se hace es que se lea de los dispositivos de entrada y esos datos leídos se vallan almacenando en bloques en un almacenamiento intermedio, para que luego el programa de usuario lea los datos de ese almacenamiento intermedio o buffer. - Tipos de dispositivos: - **Dispositivos orientados a bloque** - **Dispositivos orientados a flujo** ## Memoria intermedia sencilla - Cuando un proceso de usuario realiza una solicitud de E/S, el SO le asigna a la operación un espacio en la parte del sistema de la memoria principal. - Para los dispositivos orientados a bloque, las transferencias de entrada se realizan en el espacio del sistema (memoria principal). - Esta técnica se llama lectura por adelantado o entrada anticipada. - El proceso de usuario puede procesar un bloque de datos mientras se está leyendo el siguiente, aumentando la velocidad. - Para la E/S con dispositivos orientados a flujo, el esquema de memoria intermedia sencilla puede aplicarse por líneas o por bytes. ## Memoria intermedia doble - Se puede realizar una mejora sobre la memoria intermedia sencilla asignando a la operación dos almacenes intermedios del sistema. - De esta forma, un proceso puede transferir datos hacia (o desde) una memoria intermedia mientras que el S.O. vacía (o rellena) el otro. ## Memoria intermedia circular - Si preocupa el rendimiento de un proceso determinado, sería deseable que las operaciones de E/S fueran capaces de ir al ritmo del proceso. - El conjunto de memorias intermedias se conoce como memoria intermedia circular. ## Planificación de discos - Parámetros de rendimiento del disco: - Tiempo de búsqueda - Retardo de giro - Tiempo de transferencia - Políticas de planificación de discos: - **Primero en entrar, primero en salir (FIFO)** - **Primero el tiempo de servicio más corto (SSTF, Shortest Service Time First)** - **SCAN** - **C-SCAN (SCAN circular)** ## RAID (Vector redundante de discos independientes) - Sistema de almacenamiento de datos que utiliza múltiples unidades de almacenamiento de datos (discos duros o SSD) entre los que se distribuyen o replican los datos. - RAID combina varios discos duros en una sola unidad lógica. - Características: - Conjunto de varios discos físicos que forman una única unidad lógica. - Los datos se distribuyen entre los diferentes discos. - Redundancia utilizada para la recuperación de datos en caso de fallos. - Se reemplaza un disco de gran capacidad por varios discos físicos. - Mejor rendimiento debido al acceso simultaneo de datos ubicados en discos diferentes. - Existen siete niveles de RAID, de 0 a 6 (arquitecturas de diseño diferentes). - Niveles: - RAID 0 (sin redundancia) - RAID 1 (mirroring) - RAID 2 (paridad por intercalación de bits) - RAID 3 (paridad por intercalación de bits) - RAID 4 (paridad por intercalación de bits) - RAID 5 (paridad por intercalación distribuida de bloques) - RAID 6 (paridad doble por intercalación distribuida de bloque) ## Unidad Nº6 - Seguridad - Amenazas a la seguridad: - Secreto - Integridad - Disponibilidad - Autenticidad - Tipos de amenazas: - Interrupción - Interceptación - Modificación - Invención - Componentes de un sistema informático: - Hardware - Software ## Caché de disco - El término memoria caché se aplica normalmente a una memoria más pequeña y más rápida que la memoria principal y que se sitúa entre ésta y el procesador. - El mismo concepto puede aplicarse a la memoria de disco. - Consideraciones sobre el diseño: - Solicitud de E/S - Estrategia de reemplazo - Política de escritura ## Unidad Nº6 - Seguridad - Amenazas a la seguridad: - **Secreto**: la información debe ser accedida solamente por partes autorizadas. - **Integridad**: los elementos pueden ser modificados sólo por partes autorizadas. - **Disponibilidad**: los elementos deben estar disponibles para las partes autorizadas. - **Autenticidad**: verificar la identidad de un usuario. - Tipos de amenazas: - **Interrupción**: se destruye un elemento del sistema o se hace inaccesible o inútil. Es un ataque a la disponibilidad. - **Interceptación**: una parte no autorizada consigue acceder a un elemento. Este es un ataque al secreto. - **Modificación**: una parte no autorizada no solo consigue acceder, sino que falsifica un elemento. - **Invención**: una parte no autorizada inserta objetos falsos en el sistema. - Componentes de un sistema informático: - **Hardware**: comprenden daños accidentales y deliberados a los equipos, así como el hurto. - **Software**