salvadoreña qué que nombres nacional llamado literatura literario grupo generación generacion fue dio cual contexto consistió comprometida caracteristicas aporte windows memory-management

windows - qué - literatura de la generacion del 44



¿Cuál es la diferencia entre la memoria reservada y la comprometida? (3)

En el contexto de Win32, "reservado" significa que el espacio de direcciones se asigna dentro del proceso que lo solicitó . Esto se puede usar, por ejemplo, para reservar espacio para un buffer grande que no se necesita de inmediato, pero cuando se necesita, debe ser contiguo.

La reserva de memoria no interactúa con otros procesos, ya que cada proceso tiene su propio espacio de direcciones privadas. Por lo tanto, la afirmación de que "cuando está reservada, ningún otro proceso puede usarla" no tiene sentido, ya que los procesos normalmente no pueden asignar memoria en el espacio de direcciones de otro proceso de todos modos.

Cuando se solicita que se comprometan las páginas reservadas (almacén de respaldo asignado para ellas), esa operación puede fallar debido a la falta de memoria física (o archivo de paginación).

Entiendo que la memoria debe reservarse antes de comprometerse. Y cuando está reservado, ningún otro proceso puede usarlo. Sin embargo, la memoria reservada no cuenta contra la RAM disponible. ¿Pero no debería? Porque si nadie más puede usarlo, ¿de qué sirve estar "disponible"?

¿O hay alguna diferencia más grande?


La memoria virtual de proceso (espacio de direcciones) y la RAM real son ambas diferentes. puede tener 512 MB de RAM física, pero aún así su proceso puede abordar el espacio de direcciones virtuales de 4 GB (espacio de usuario de 2 GB). Todas las direcciones de un proceso se pueden considerar libres, reservadas o comprometidas en cualquier momento.

Un proceso comienza con todas las direcciones libres, lo que significa que son libres de comprometerse con la memoria o reservadas para uso futuro. Antes de que se pueda usar cualquier dirección libre, primero debe asignarse como reservada O comprometida. Pero no necesita ser reservado para que pueda ser comprometido.

reservar memoria significa reservar el espacio de direcciones virtaul para propósitos futuros. no está asociado con la RAM física (asignada a direcciones de RAM). En donde la memoria comprometida significa que se asociará con la RAM real para que pueda almacenar datos en ella.

http://msdn.microsoft.com/en-us/library/ms810627.aspx


Me gusta ver Reserved como reservar el espacio de direcciones para que nadie más pueda asignarlo (pero no puedo usar la memoria en esa dirección porque todavía no está disponible). Y Committed como mapeo que direcciona el espacio a la memoria física para que pueda ser utilizado.

¿Por qué querría reservar ? ¿Por qué no solo obtener memoria comprometida? Hay varias razones que tengo en mente:

  1. Algunas aplicaciones necesitan un rango de direcciones específico, digamos desde 0x400000 a 0x600000, pero no necesitan memoria para almacenar nada. Se usa para atrapar el acceso a la memoria. Por ejemplo, si algún código accede a dicha área, será capturado. (Útil por alguna razón)

  2. Algún hilo necesita almacenar datos en expansión progresiva. Y los datos deben estar en un pedazo contiguo de memoria. Se prefiere no comprometer memoria física grande de una vez porque no es necesaria y sería un desperdicio. La memoria puede ser utilizada por algunos otros hilos primero. La memoria física se compromete solo a pedido.