fbpx
Wikipedia

Memoria virtual

En informática, la memoria virtual es una técnica de gestión de la memoria que se encarga de que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que esté disponible físicamente. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.

Cómo la memoria virtual se mapea a la memoria física.

Muchas aplicaciones requieren acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto.

Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.

Aunque la memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.

Operación

Cuando se usa memoria virtual, o cuando una dirección es leída o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:

  • la dirección real de memoria (la dirección de memoria física).
  • una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamado excepción de memoria virtual)

En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde debía y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situación y permitir que el programa siga ejecutando o aborte según sea el caso. La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los programas se ejecuten sin tener en cuenta el tamaño exacto de la memoria física.

La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria física y el resto almacenado en el disco, y puede ser referenciado fácilmente.

Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).

La memoria virtual ha llegado a ser un componente esencial de la mayoría de los sistemas operativos actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria. Es más, se ahorra tiempo, porque los fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el sistema operativo debe saber cómo gestionar este esquema.

La memoria virtual también simplifica la carga del programa para su ejecución, llamada reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.

En un estado estable, prácticamente toda la memoria principal estará ocupada con fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo a la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendrá que traer de nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginación: donde el procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el sistema operativo intenta adivinar, en función de la historia reciente, qué fragmentos se usarán con menor probabilidad en un futuro próximo (véase algoritmos de reemplazo de páginas).

Los argumentos anteriores se basan en el principio de cercanía de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Por lo tanto, es válida la suposición de que, durante cortos períodos de tiempo, se necesitarán sólo unos pocos fragmentos de un proceso.

Una manera de confirmar el principio de cercanía es considerar el rendimiento de un proceso en un entorno de memoria virtual.

El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar. Para que la memoria virtual sea práctica y efectiva, se necesitan dos ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria principal.

Justo después de obtener la dirección física, y antes de consultar el dato en memoria principal, se busca en memoria-cache. Si está entre los datos recientemente usados, la búsqueda tendrá éxito, pero si falla, la memoria virtual consultará la memoria principal o, en el peor de los casos, el disco (swapping).

Detalles

La traducción de las direcciones virtuales a reales es implementada por una Unidad de Manejo de Memoria (MMU). El sistema operativo es el responsable de decidir qué partes de la memoria del programa es mantenida en memoria física. Además mantiene las tablas de traducción de direcciones (si se usa paginación la tabla se denomina tabla de paginación), que proveen las relaciones entre direcciones virtuales y físicas, para uso de la MMU. Finalmente, cuando una excepción de memoria virtual ocurre, el sistema operativo es responsable de ubicar un área de memoria física para guardar la información faltante, trayendo la información desde el disco, actualizando las tablas de traducción y finalmente continuando la ejecución del programa que dio la excepción de memoria virtual desde la instrucción que causó el fallo.

En la mayoría de las computadoras, las tablas de traducción de direcciones de memoria se encuentran en memoria física. Esto implica que una referencia a una dirección virtual de memoria necesitará una o dos referencias para encontrar la entrada en la tabla de traducción, y una más para completar el acceso a esa dirección.

Para acelerar el desempeño de este sistema, la mayoría de las Unidades Centrales de Proceso (CPU) incluyen una MMU en el mismo chip, y mantienen una tabla de las traducciones de direcciones virtuales a reales usadas recientemente, llamada Translation Lookaside Buffer (TLB). El uso de este buffer hace que no se requieran referencias de memoria adicionales, por lo que se ahorra tiempo al traducir.

En algunos procesadores, esto es realizado enteramente por el hardware. En otros, se necesita de la asistencia del sistema operativo: se levanta una excepción, y en ella el sistema operativo reemplaza una de las entradas del TLB con una entrada de la tabla de traducción, y la instrucción que hizo la referencia original a memoria es reejecutada.

El hardware que tiene soporte para memoria virtual, la mayoría de la veces también permite protección de memoria. La MMU puede tener la habilidad de variar su forma de operación de acuerdo al tipo de referencia a memoria (para leer, escribir, o ejecutar), así como el modo en que se encontraba el CPU en el momento de hacer la referencia a memoria. Esto permite al sistema operativo proteger su propio código y datos (como las tablas de traducción usadas para memoria virtual) de corromperse por una aplicación, y de proteger a las aplicaciones que podrían causar problemas entre sí.

Paginación y memoria virtual

La memoria virtual usualmente (pero no necesariamente) es implementada usando paginación. En paginación, los bits menos significativos de la dirección de memoria virtual son preservados y usados directamente como los bits de orden menos significativos de la dirección de memoria física. Los bits más significativos son usados como una clave en una o más tablas de traducción de direcciones (llamadas tablas de paginación), para encontrar la parte restante de la dirección física buscada.

Véase también

  •   Datos: Q189401
  •   Multimedia: Virtual memory

memoria, virtual, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, agosto, 2020, informática, memoria, virtual, técnica, gestión, memoria, encarga, sistema, operativo, disponga, tanto, para, software, usu. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 9 de agosto de 2020 En informatica la memoria virtual es una tecnica de gestion de la memoria que se encarga de que el sistema operativo disponga tanto para el software de usuario como para si mismo de mayor cantidad de memoria que este disponible fisicamente La mayoria de los ordenadores tienen cuatro tipos de memoria registros en la CPU la memoria cache tanto dentro como fuera del CPU la memoria RAM y el disco duro En ese orden van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad Como la memoria virtual se mapea a la memoria fisica Muchas aplicaciones requieren acceso a mas informacion codigo y datos que la que se puede mantener en memoria fisica Esto es asi sobre todo cuando el sistema operativo permite multiples procesos y aplicaciones ejecutandose simultaneamente Una solucion al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su informacion en disco moviendola a la memoria principal cuando sea necesario Hay varias formas de hacer esto Una opcion es que la aplicacion misma sea responsable de decidir que informacion sera guardada en cada sitio segmentacion y de traerla y llevarla La desventaja de esto ademas de la dificultad en el diseno e implementacion del programa es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre si cada programador podria realizar su diseno teniendo en cuenta que es el unico programa ejecutandose en el sistema La alternativa es usar memoria virtual donde la combinacion entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha mas memoria principal RAM que la que realmente posee Este metodo es invisible a los procesos La cantidad de memoria maxima que se puede hacer ver que hay tiene que ver con las caracteristicas del procesador Por ejemplo en un sistema de 32 bits el maximo es 232 lo que da 4096 Megabytes 4 Gigabytes Todo esto hace el trabajo del programador de aplicaciones mucho mas facil al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria Aunque la memoria virtual podria estar implementada por el software del sistema operativo en la practica casi siempre se usa una combinacion de hardware y software dado el esfuerzo extra que implicaria para el procesador Indice 1 Operacion 2 Detalles 3 Paginacion y memoria virtual 4 Vease tambienOperacion EditarCuando se usa memoria virtual o cuando una direccion es leida o escrita por la CPU una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software direcciones virtuales en la direccion real de memoria la direccion de memoria fisica una indicacion de que la direccion de memoria deseada no se encuentra en memoria principal llamado excepcion de memoria virtual En el primer caso la referencia a la memoria es completada como si la memoria virtual no hubiera estado involucrada el software accede donde debia y sigue ejecutando normalmente En el segundo caso el sistema operativo es invocado para manejar la situacion y permitir que el programa siga ejecutando o aborte segun sea el caso La memoria virtual es una tecnica para proporcionar la simulacion de un espacio de memoria mucho mayor que la memoria fisica de una maquina Esta ilusion permite que los programas se ejecuten sin tener en cuenta el tamano exacto de la memoria fisica La ilusion de la memoria virtual esta soportada por el mecanismo de traduccion de memoria junto con una gran cantidad de almacenamiento rapido en disco duro Asi en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequena parte de el esta en memoria fisica y el resto almacenado en el disco y puede ser referenciado facilmente Debido a que solo la parte de memoria virtual que esta almacenada en la memoria principal es accesible a la CPU segun un programa va ejecutandose la proximidad de referencias a memoria cambia necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco mientras que otras ya ejecutadas se pueden volver a depositar en el disco archivos de paginacion La memoria virtual ha llegado a ser un componente esencial de la mayoria de los sistemas operativos actuales Y como en un instante dado en la memoria solo se tienen unos pocos fragmentos de un proceso dado se pueden mantener mas procesos en la memoria Es mas se ahorra tiempo porque los fragmentos que no se usan no se cargan ni se descargan de la memoria Sin embargo el sistema operativo debe saber como gestionar este esquema La memoria virtual tambien simplifica la carga del programa para su ejecucion llamada reubicacion este procedimiento permite que el mismo programa se ejecute en cualquier posicion de la memoria fisica En un estado estable practicamente toda la memoria principal estara ocupada con fragmentos de procesos por lo que el procesador y el S O tendran acceso directo a la mayor cantidad de procesos posibles y cuando el S O traiga a la memoria un fragmento debera expulsar otro Si expulsa un fragmento justo antes de ser usado tendra que traer de nuevo el fragmento de manera casi inmediata Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginacion donde el procesador consume mas tiempo intercambiando fragmentos que ejecutando instrucciones de usuario Para evitarlo el sistema operativo intenta adivinar en funcion de la historia reciente que fragmentos se usaran con menor probabilidad en un futuro proximo vease algoritmos de reemplazo de paginas Los argumentos anteriores se basan en el principio de cercania de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse Por lo tanto es valida la suposicion de que durante cortos periodos de tiempo se necesitaran solo unos pocos fragmentos de un proceso Una manera de confirmar el principio de cercania es considerar el rendimiento de un proceso en un entorno de memoria virtual El principio de cercania sugiere que los esquemas de memoria virtual pueden funcionar Para que la memoria virtual sea practica y efectiva se necesitan dos ingredientes Primero tiene que existir un soporte de hardware y en segundo lugar el S O debe incluir un software para gestionar el movimiento de paginas o segmentos entre memoria secundaria y memoria principal Justo despues de obtener la direccion fisica y antes de consultar el dato en memoria principal se busca en memoria cache Si esta entre los datos recientemente usados la busqueda tendra exito pero si falla la memoria virtual consultara la memoria principal o en el peor de los casos el disco swapping Detalles EditarLa traduccion de las direcciones virtuales a reales es implementada por una Unidad de Manejo de Memoria MMU El sistema operativo es el responsable de decidir que partes de la memoria del programa es mantenida en memoria fisica Ademas mantiene las tablas de traduccion de direcciones si se usa paginacion la tabla se denomina tabla de paginacion que proveen las relaciones entre direcciones virtuales y fisicas para uso de la MMU Finalmente cuando una excepcion de memoria virtual ocurre el sistema operativo es responsable de ubicar un area de memoria fisica para guardar la informacion faltante trayendo la informacion desde el disco actualizando las tablas de traduccion y finalmente continuando la ejecucion del programa que dio la excepcion de memoria virtual desde la instruccion que causo el fallo En la mayoria de las computadoras las tablas de traduccion de direcciones de memoria se encuentran en memoria fisica Esto implica que una referencia a una direccion virtual de memoria necesitara una o dos referencias para encontrar la entrada en la tabla de traduccion y una mas para completar el acceso a esa direccion Para acelerar el desempeno de este sistema la mayoria de las Unidades Centrales de Proceso CPU incluyen una MMU en el mismo chip y mantienen una tabla de las traducciones de direcciones virtuales a reales usadas recientemente llamada Translation Lookaside Buffer TLB El uso de este buffer hace que no se requieran referencias de memoria adicionales por lo que se ahorra tiempo al traducir En algunos procesadores esto es realizado enteramente por el hardware En otros se necesita de la asistencia del sistema operativo se levanta una excepcion y en ella el sistema operativo reemplaza una de las entradas del TLB con una entrada de la tabla de traduccion y la instruccion que hizo la referencia original a memoria es reejecutada El hardware que tiene soporte para memoria virtual la mayoria de la veces tambien permite proteccion de memoria La MMU puede tener la habilidad de variar su forma de operacion de acuerdo al tipo de referencia a memoria para leer escribir o ejecutar asi como el modo en que se encontraba el CPU en el momento de hacer la referencia a memoria Esto permite al sistema operativo proteger su propio codigo y datos como las tablas de traduccion usadas para memoria virtual de corromperse por una aplicacion y de proteger a las aplicaciones que podrian causar problemas entre si Paginacion y memoria virtual EditarLa memoria virtual usualmente pero no necesariamente es implementada usando paginacion En paginacion los bits menos significativos de la direccion de memoria virtual son preservados y usados directamente como los bits de orden menos significativos de la direccion de memoria fisica Los bits mas significativos son usados como una clave en una o mas tablas de traduccion de direcciones llamadas tablas de paginacion para encontrar la parte restante de la direccion fisica buscada Vease tambien EditarPaginacion Datos Q189401 Multimedia Virtual memory Obtenido de https es wikipedia org w index php title Memoria virtual amp oldid 136618221, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos