¿Qué determina cuánta memoria puede almacenar una computadora?

En última instancia, se reduce a la cantidad de líneas de dirección proporcionadas por el procesador. En los días de 8 bits teníamos solo 16 líneas de dirección, lo que nos dio 64k bytes de memoria. El procesador 8088 de la PC original de IBM tenía una configuración de hardware extraña que proporcionaba 1M de bytes de espacio de direcciones, pero parte de eso estaba reservado, lo que daba un total utilizable de 640k. Cuando los procesadores de 32 bits ingresaron al mercado, las cosas se simplificaron nuevamente. Un procesador x86 de 32 bits tiene 32 bits de dirección que hacen 4G bytes.

Teóricamente, un procesador x86 de 64 bits puede tener una dirección de 64 bits de ancho. Eso es absurdo (por el momento) 16 exa-bytes de memoria (4G bytes al cuadrado o 16 giga-giga-bytes, o más de 16,000,000,000,000,000,000 bytes). Sin embargo, no hay necesidad de memorias tan grandes y los procesadores modernos solo usan los 48 bits inferiores de la dirección, dándoles un límite teórico de 256 tera-bytes. Actualmente, ningún sistema operativo permite que se use tanto. Windows 10 está limitado a 2 tera-bytes y Windows Server 2016 está limitado a 24 tera-bytes. Linux le permite usar 64 tera-bytes. Por supuesto, también estará limitado por la placa base: muy pocos permitirán que se instale tanta memoria.

Cada programa que se ejecuta en la computadora en realidad ve memoria virtual en lugar de memoria física y el sistema operativo hace arreglos para intercambiar páginas de memoria virtual hacia y desde el disco, de modo que cada programa parece ejecutarse en una computadora con la máxima memoria posible, o incluso más, instalado Sin embargo, las cosas se ralentizan casi hasta detenerse si intentas llevarlo tan lejos. Linux le permite usar 128 TB de espacio de direcciones virtuales para cada programa.

Una computadora puede almacenar tanta información como espacio físico reconocido, generalmente.

Cuando dice memoria, generalmente nos referimos a la RAM, es decir, no al almacenamiento a largo plazo, sino a los datos utilizados mientras se ejecutan aplicaciones o procesan datos.

Hay límites por el sistema operativo y la placa base de cuánto se puede reconocer, pero digamos que pones 16 GB de memoria en una computadora, entonces puede contener 16 GB de datos …

… ish …

Los sistemas de memoria de una computadora hoy usan una jerarquía. El acceso más rápido está en los registros de la CPU. Si los datos no están allí, se extraen del caché de la CPU. Mucho más grande, pero más lento. Si los datos no están allí, se extraen de la RAM. Mucha más RAM, pero de nuevo, mucho más lento. Si los datos no están allí, se extraen del disco, mucho más y de nuevo más lentamente.

Una parte del disco de almacenamiento a largo plazo generalmente se usa como intercambio para este propósito.

Por lo tanto, su computadora puede tener algunos datos en registros, algunos datos en caché y algunos datos en RAM y más en el disco listos para acceder a la memoria.

Pero es incluso más que eso. Algunos sistemas operativos le permiten comprimir datos en RAM y en disco.

Ignorando el caché y los registros, ya que son relativamente pequeños, si su computadora tiene 16 GB de RAM, puede almacenar 16 GB de datos en la memoria. Si está utilizando un archivo de intercambio, la idea recomendada es 1.5-ish x tamaño de RAM, entonces la memoria total que su computadora puede manejar será el tamaño de RAM + el intercambio o el tamaño del archivo de página. así que para una computadora con 16 GB de RAM, estamos buscando un rango de 32 GB a 48 GB

El sistema operativo controla el intercambio, y con zRAM (varios sistemas operativos tienen esto o una alternativa), una parte de la memoria se reserva y se comprime. La compresión depende del tipo de datos; en cualquier lugar entre 1 y 8x es una suposición razonable. ciertamente, no toda la RAM se usará de esta manera, pero aumenta el espacio teórico a expensas de la velocidad.

Siguiente cuenta para que el sistema operativo use un poco de espacio disponible …

Como puede ver, esto puede ser bastante complejo: el sistema operativo puede asignar dinámicamente los datos que está usando y usar swap (disco). Puede comprimir algunos datos y ponerlos en una ubicación RAM comprimida. La compresión depende de los datos en sí mismos, y el sistema operativo en uso significa que elimina parte de la memoria disponible para el almacenamiento.

Entonces, para que sea simple, simplemente vaya por la capacidad de RAM. Es posible que una computadora pueda almacenar más, pero en ese punto el rendimiento tiende a disminuir.

Hay algunos factores en esto y cada uno se está volviendo menos problemático en la informática moderna.

  1. El sistema operativo. Si miramos hacia atrás a x86 Windows XP, no reconocería más de 3 o 4 GB. Esto era bastante sustancial en ese momento, pero la arquitectura x86 era el límite aquí. Con x64 Windows 10, podemos usar 2 TB de memoria. ¡Eso es enorme!
  2. El chipset en la placa base. Esto se reduce a limitaciones de hardware.
  3. Firmware en la placa base. El firmware (o software incorporado) que se escribió para la computadora no se escribió para exceder una cierta cantidad de memoria.

Obviamente, mirando los 3 de estos estaría limitado por el mínimo denominador.

More Interesting

¿Cómo se crean estos tipos de simulaciones?

Soy estudiante de informática. ¿Pueden ayudarme a decidir sobre un proyecto de último año que involucre desarrollo de IA y Android?

Tengo un plan de 400 días para aprender sobre el aprendizaje automático. Espero construir mi propio bot de juegos que pueda jugar al menos 2 juegos. ¿Qué tan plausible es esto?

Ciencias de la computación: me gustaría crear una base de datos en un servidor y luego buscar en mi programa conjuntos de datos específicos. ¿Es posible hacer algo con Qt o tengo que usar un SDK diferente?

¿El uso de 'sombrero blanco' en la seguridad informática muestra un sesgo racial frente al término 'sombrero negro'?

¿El tiempo que tarda un navegador en cargar una página depende de la cantidad de líneas de códigos? ¿Pueden más líneas cargarse más rápido en algunos casos que menos?

Estoy considerando cambiar el backend de una aplicación a formatos web semánticos. ¿Qué tipo de impacto en el rendimiento puedo esperar en comparación con el uso de un sistema RDB?

¿Qué métodos se utilizan para revisar los sistemas después de la implementación?

¿Qué se entiende por incrustar en el aprendizaje automático?

La inteligencia artificial y la robótica están progresando a un ritmo cada vez mayor. ¿Qué debe hacerse para la fuerza laboral desplazada?

¿Existe alguna aplicación de Android para aprender conceptos aleatorios de informática?

¿Cuáles son algunas de las mejores prácticas para escribir paquetes de software específicamente para aplicaciones científicas y aprendizaje automático? ¿Serían relevantes las mismas prácticas utilizadas en el desarrollo de software ágil?

¿Cuál es la relación entre Big Data, Cloud computing y NOSQL?

¿SQL alguna vez será desplazado por algo mejor?

¿Qué tan importante es el conocimiento de las bases de datos en Machine Learning?