tratamiento qué psicologico pelo para niños nacio imagenes cura con circulo causa bebes bebe areata alopecia c# .net

c# - psicologico - qué causa la alopecia en niños



¿Son 2 GB realmente mi máximo? (2)

La respuesta de Eric Lipperts es 100% correcta y deberías leerla primero, pero tengo un par de cosas que agregar:

  • Puede aumentar el límite de espacio de direcciones del modo de usuario de 2 GB a 3 GB mediante el llamado conmutador / 3G ; esta es una configuración por máquina que reduce el espacio de direcciones utilizado por el sistema operativo a 1 GB (desde 2 GB), liberando ese adicional de 1 GB para usar en el espacio de direcciones del modo de usuario.
  • Si está ejecutando su proceso de 32 bits en un sistema operativo de 64 bits, entonces el límite máximo de espacio de direcciones de modo de usuario se incrementa a 4 GB (aunque su aplicación se compila como un proceso de 32 bits); esto podría ser útil si (por ejemplo) está restringido a apuntar a la arquitectura x86 debido a que algunas referencias siguen siendo solo de 32 bits.

Tenga en cuenta que las dos soluciones anteriores requieren que se IMAGE_FILE_LARGE_ADDRESS_AWARE indicador IMAGE_FILE_LARGE_ADDRESS_AWARE . Consulte ¿Cómo creo una aplicación .NET (32 bits) para usar 3 GB de RAM? para obtener algunos consejos sobre cómo puede hacer esto para una aplicación .NET.

Process Address Space me dice que mi aplicación .NET como máximo solo puede usar 2 GB en Windows XP. ¿Es eso cierto?

Pero, ¿y si tuviera un disco duro de 20 tercios? ¿No podrá usar parte de ese espacio de disco?


Las respuestas que dicen que esto tiene que ver con RAM son profundamente incorrectas. Es importante comprender correctamente la relación entre el espacio en disco, la memoria RAM y el espacio de direcciones.

Así es como realmente funciona.

Cada proceso en Windows de 32 bits tiene un espacio de direcciones de 4 GB.

De ese espacio de direcciones de 4 GB, 2 GB están reservados para el uso del sistema operativo y los otros 2 GB están disponibles para que el código de usuario en el proceso lo use como lo considere conveniente.

Ahora déjenme ser extremadamente claro sobre este punto: el espacio de direcciones no es memoria . Un proceso puede tener tanta memoria como desee. Lo diré de nuevo: un proceso puede tener más de 4 GB de memoria asignados . El límite es que solo se pueden mapear 2 GB de esa memoria en el espacio de direcciones del modo de usuario en cualquier momento .

No mencioné la RAM porque la RAM es irrelevante para la cuestión del espacio de direcciones . No importa si el sistema operativo está almacenando la memoria del proceso en RAM o en disco o lo que sea. La RAM es solo una optimización del rendimiento que permite que el sistema operativo almacene la memoria en un chip rápido en lugar de en un disco lento.

Su proceso le dice al sistema operativo cuánta memoria quiere y dónde ubicar esa memoria en el espacio de direcciones de 2 GB. Si el proceso necesita más de 2 GB de memoria, no podrá mapearlo todo en el espacio de direcciones; dicho proceso debe escribirse inteligentemente para indicarle al sistema operativo qué páginas de la memoria asignar y desasignar del espacio de direcciones, o utilizar menos memoria. Si no lo hace, fallará con una excepción de falta de memoria.

Quizás una analogía ayudaría. Su edificio tiene un estacionamiento con cien espacios. Eso es RAM. Tienes un estacionamiento en la calle con diez mil espacios. Eso es disco. Usted y todos los demás en el edificio tienen un llavero con espacio para diez llaves. Eso es espacio de direcciones por proceso. ¿El hecho de que solo tengas espacio para diez teclas significa que puedes tener solo diez autos? ¡No! Puedes tener tantos autos como quieras, pero si quieres acceder a once de esos automóviles, tendrás que quitar una de las llaves del llavero, guardarla en otro lugar y poner la nueva llave en el llavero. . Eso es mapear la memoria dentro y fuera del espacio de direcciones .

¿Qué pasa si todos en el edificio intentan estacionar diez autos en la RAM? Si el estacionamiento se llena, tendrán que cambiar algunos de esos autos al estacionamiento por la calle. ¿Eso les impide tener llaves en sus llaveros? No, obviamente no. Simplemente lo hace lento cuando quieren conducir un automóvil que está estacionado en el disco.

¿Qué pasaría si hubiera un servicio de valet que descubriera qué automóviles era más probable que usaran las personas, y que trasladara los menos usados ​​al estacionamiento de la calle? Ese es el administrador de memoria que coloca páginas de memoria utilizadas menos recientemente en el archivo de intercambio.

Usted señala que tiene un gran disco. Supongamos que tiene un archivo de 10 GB en ese disco. Ciertamente puede usar el contenido de ese archivo en su programa .NET, pero no puede tener todo cargado en el espacio de direcciones contiguas a la vez. Tienes que leerlo en pedazos. Si fue inteligente, podría mapearlo en la memoria de proceso, todo de una vez, tiene mucha memoria , pero no podría asignar 10 GB de memoria a 2 GB de espacio de direcciones .

En general, es más fácil no tratar de obtener esa cantidad de memoria en primer lugar; solo léelo en unos cientos de KB a la vez.

Es muy común que las personas confundan el espacio de direcciones con la memoria física, pero no han sido lo mismo durante décadas. Para obtener más detalles, consulte mi artículo sobre este tema, "Sin memoria" no se refiere a la memoria física .