¿Por qué Windows 95 tenía un límite de RAM? Es un sistema operativo de 32 bits y debería ver 4 GB.

¿Por qué Windows 95 tenía un límite de RAM? Es un sistema operativo de 32 bits y debería ver 4 GB.

Solo tu segunda oración es falsa. Windows 95 no es un sistema operativo completo de 32 bits.

Windows 95 es un sistema operativo híbrido de 16/32 bits que utiliza DOS de 16 bits como gestor de arranque para un entorno operativo de 32 bits. Todavía es capaz de usar controladores de dispositivos de 16 bits y realizar llamadas a subrutinas de 16 bits mediante thunking, y lo hace con bastante frecuencia. Este fue solo uno de los muchos compromisos de diseño que Microsoft hizo para que Windows 95, que se había retrasado varias veces, fuera de la puerta.

Win95 fue concebido originalmente como un sistema operativo completo de 32 bits, y esto causó un problema para Intel cuando diseñó la CPU Pentium Pro. Creyendo que Win95 sería completamente de 32 bits, Intel no optimizó el diseño para ejecutar código de 16 bits. Entonces Microsoft tuvo tantos problemas para hacer esto que decidió implementar la API Win32 completa en un entorno operativo además de DOS, básicamente (en una explicación demasiado simplificada) tomando el Explorador de Windows desde NT y fusionándolo con una versión mejorada de Win32s para crear Windows 95. (Podrían haber movido el mercado de consumo al núcleo NT, pero no lo hicieron hasta XP). Intel tuvo que volver a trabajar el diseño de Pentium Pro y crear el Pentium II, que ejecutaría 16 -código de bit mejor que un profesional.

De todos modos, los compromisos de diseño en Win95 hicieron que soportar más de aproximadamente 480 MB de RAM fuera problemático. De todos modos, nadie ejecutó Windows 95 con tanta RAM en 1995; solo algunas estaciones de trabajo y servidores de alta gama ejecutaban tanta RAM hace 22 años, y esos ejecutaban UNIX. Windows 98 funcionaría con hasta 1 GB.

Este no fue el único problema que tuvo Win95. También se resolvería con CPU muy rápidas (para su tiempo), y Microsoft tuvo que emitir un parche para corregir los problemas de sincronización con los procesadores AMD K6-x cuando salieron.

Los entusiastas modernos de Win9x en MSFN han descubierto soluciones para estos problemas, y hay personas en ese sitio que ejecutan estos sistemas con más de 1 GB de RAM en la actualidad.

Hola. No solo Windows. Cualquier sistema operativo de 32 bits.
Consulte: Si obtiene un Pintor de construcción de 32 bits, puede administrar, de forma segura, 4.194.304 MB ( 2^32 ).
Pero, recuerde, el sistema operativo necesita una cantidad para su propia administración, como el Programador de tareas, punteros, variables intrínsecas, etc., por lo tanto, en realidad, ¡no tenemos 4GB! Solo un SO de 64 bits, por lo tanto, puede manejar, de hecho, la cantidad total de memoria instalada.
El truco para superar esto es PAE, pero se usó menos que los ingenieros lucharon y la máquina de 64 bits y el sistema operativo se convirtieron en la norma.
Puede leer sobre 32bits Limit y PAE aquí , a través de StackOverFlow.

La es la declaración de Microsoft:

“Windows 95 no se iniciará si tiene más de alrededor de 480 MB de memoria. (Esto se consideraba una cantidad de memoria increíble en ese entonces. Recuerde, la máquina objetivo de Windows 95 era una 386SX de 4MB y una máquina poderosa tenía 16MB. Entonces, según la ley de Moore, eso nos dio siete años antes de que tuviéramos que hacer algo al respecto. Uno de mis amigos obtuvieron 96 MB de memoria en su máquina para probar que no estábamos bajo “configuraciones de memoria increíblemente grandes” y todos babeamos.) … Una de las primeras cosas que sucede en el proceso de arranque de Windows 95 una vez que ha realizado la transición a El modo de 32 bits es para inicializar el administrador de memoria de 32 bits. Pero ahora tiene un problema de huevo y gallina: el administrador de memoria necesita asignar algo de memoria para realizar un seguimiento de la memoria que está administrando. (Hacer un seguimiento de qué páginas se paginan y cuáles se paginan, ese tipo de cosas). Pero no puede asignar memoria hasta que se inicialice el administrador de memoria. Eek!

La solución es inicializar el administrador de memoria dos veces.

La primera vez que se inicializa el administrador de memoria, obtiene toda su memoria de un bloque fijo de memoria preasignado en el segmento de datos de inicio. Configura este bloque fijo como el montón de administrador de memoria. Así que ahora hay un montón disponible para satisfacer las asignaciones de memoria.

A continuación, el administrador de memoria comienza a buscar la memoria real en el sistema, y ​​cuando encuentra algo, asigna memoria (del bloque fijo inicial) para realizar un seguimiento de la memoria real.

Después de que el administrador de memoria haya encontrado toda la memoria real en el sistema, es hora de inicializar el administrador de memoria por segunda vez: esculpe un trozo de esa memoria real para usar como “montón real” y copia la información del montón que se ha estado utilizando hasta ahora (el montón de tamaño fijo) para el “montón real”.

Una vez que se ha copiado todo y se han corregido todos los punteros, los punteros del montón del administrador de memoria global se cambian para apuntar al nuevo montón (“real”) y se abandona el montón original.

La memoria consumida por el montón original se recupera cuando se descarta el segmento de datos de inicio (que ocurre al final de la inicialización del sistema).

La limitación total de RAM se produce porque el tamaño del bloque fijo en el segmento de datos de inicio debe ser lo suficientemente grande como para satisfacer todas las asignaciones de memoria realizadas durante el escaneo de memoria. Si tiene demasiada memoria, falla una asignación durante el escaneo de memoria y el sistema se detiene.

El tamaño del segmento init-data fue elegido para equilibrar dos factores. Cuanto más grande lo haga, más memoria puede tener en el sistema antes de llegar a una falla de asignación durante el escaneo de memoria. Pero no puede hacerlo demasiado grande o las máquinas con pequeñas cantidades de memoria ni siquiera podrán cargar VMM en la memoria “.

Fuente: Blog de Microsoft The Old New Things: Windows 95 no arranca con más de 1 GB de RAM

Soportar una gran cantidad de memoria no siempre es algo bueno. El sistema operativo debe realizar un seguimiento del uso del bloque de memoria ejecutando procesos. La memoria generalmente se organiza en bloques de 4096 bytes (llamados páginas). Entonces, si tiene 4096 MB de RAM, eso significa que debe realizar un seguimiento de 1 millón de páginas de memoria. Para cada página, el sistema operativo debe almacenar mucha información, como dónde se encuentra esa página en la memoria real que procesa esa página, etc., etc. Así que, básicamente, solo arranca su sistema operativo y no ejecuta ningún programa que el sistema operativo ya haya reservado unos pocos megabytes de memoria solo para el seguimiento de la página de memoria. Y si su PC solo tiene 4 megabytes de memoria, el sistema operativo no puede permitirse usar 2 megabytes para el mapa de memoria.