Ah, sí, hay una gran cantidad de videos en YouTube que prueban exactamente eso: instalar software antiguo en un hardware moderno. Aquí hay uno con más de un millón de visitas:
Editar: Mi única esperanza es que lo que sea que estemos usando ahora no sea tan ridículo como esa pobre persona en unos 20 años 🙂
Ahora solo para explicarlo un poco, para la gente promedio que no tiene tecnología : Windows 98 era un extraño híbrido de un sistema operativo antiguo de 16 bits tipo DOS y un sistema operativo de 32 bits “recién llegado”. (¿Recuerdas DOS? Esa cosa de letras blancas en una pantalla negra y sin mouse o íconos. Sí, ese es el DOS que se usó dentro de Windows 98).
- ¿Cuál es la diferencia entre la latencia SPD y la latencia probada?
- ¿Cuál sería la mejor computadora portátil para un estudiante en términos de RAM o espacio de almacenamiento?
- ¿Cuáles son los teléfonos inteligentes que tienen una buena gestión de RAM?
- ¿Cuál es la solución para el problema de 'memoria baja' en Windows 10?
- ¿Alguien puede enviarme una lista de juegos que podré jugar con especificaciones de 8 GB de RAM, procesador AMD de 2.5 GHz y GPU AMD de 2 GB? Mi laptop es una Lenovo Ideapad 110.
Al igual que cualquier sistema operativo de un cierto bitness , ese número define la cantidad de memoria que puede ver y usar. 16 bits, es decir, 2 ^ 16 = 65.536 bytes. Y 32 bits, es decir, 2 ^ 32 = 4,294,967,296 bytes (o 4GB). Pero eso está en un escenario ideal. En la práctica, esas suposiciones son bastante reducidas por los supuestos que hacen los arquitectos del sistema operativo.
Entonces, en el caso de Windows 98, debido a un soporte para una extensión de 32 bits, pero también debido a un “arrastre” de un soporte para una arquitectura anterior de 16 bits, Microsoft ideó un administrador de memoria muy complicado que básicamente podría soportar hasta 512 MB de RAM (y tal vez no oficialmente hasta 1 GB, como algunas personas informaban).
Así que ahora la parte interesante. ¿Qué pasaría si hay mucha más memoria disponible?
Bueno, desafortunadamente los programadores de Microsoft en ese momento no eran muy buenos en lo que estaban haciendo. (Sus jefes eran buenos en marketing. ¡Pero no en escribir software!) Sí, esa es una de las razones principales por las que la gente odiaba Windows (y probablemente todavía lo hacen) y por qué Mac OS y Linux ganaron tanto terreno desde entonces. Entonces, ¿cuál podría ser la razón?
Ahora algo de código para la gente techy :
Descargo de responsabilidad: no he mirado el código real del administrador de memoria de Windows 98, es solo una suposición que derivé de la ingeniería inversa de su código posterior.
Supongamos que necesita saber cuánta memoria está presente en el sistema y comenzar a sondear cada módulo de memoria y sumar los tamaños en algún registro interno. Luego, por alguna razón desconocida, usted decide: ” ¡Hey, no hay forma de que alguien pueda tener más de 1 GB de RAM! “Y corta ese registro de contador, digamos, a 30 bits, efectivamente haciendo esto:
; eax = registro que se usa para contar RAM
Y eax, 03FFFFFFFh
Entonces, en ese caso, sus 2 GB de RAM se convierten básicamente en 0 bytes, o con código:
; suponga eax = 80000000h para 2GB
Y eax, 03FFFFFFFh
; ahora eax es 0
Luego realiza una comprobación a ciegas para ver si el usuario tiene una cantidad mínima de RAM requerida. Pero, ¿qué obtiene el código? 0 bytes ¡Oh no! ¡Eso no es suficiente!
Y es por eso que ves ese mensaje tonto de ” No hay suficiente memoria ” que la persona en YouTube mostró tan hilarantemente.
PD. Solo para jugar al abogado del diablo aquí. A pesar de mi burla de Microsoft, debo admitir, como desarrollador de software, que es muy difícil escribir un código a prueba de futuro. Lo que definitivamente debemos castigar a Microsoft es por no apegarse, ignorar y negar los estándares de la industria. (¿Recuerdas una atrocidad que solíamos llamar Internet Explorer ? Sí. Pero esa es otra historia).
Lo último que mencionaré aquí, que es cercano y querido para mi corazón, es el legado de ese enfoque que Microsoft ha creado en los años 90 y principios de los 2000 que todavía estamos tratando hoy. Estoy hablando del código descuidado que todavía está presente en muchas de sus cosas heredadas, incluso en su Windows 10.
Lo peor que trae son los llamados desbordamientos de búfer que los hackers están explotando todos los días para entrar en nuestros sistemas.
Aquí hay un buen ejemplo (código C muy simple):
void function_that_parses_user_input_from_the_internet (char * userInput)
{
// Soy un desarrollador “inteligente” con prisa y supongo
// que el usuario final nunca me enviará más de 128
// caracteres de entrada! ¿Por qué él / ella en 1998?
char bufferToParse [128];
// Ahora necesito copiar la entrada del usuario en mi búfer.
// ¡Hey, hay una buena función para eso!
strcpy (bufferToParse, userInput); // ¡Puede causar desbordamiento del búfer!
// Haz más de mis cosas “inteligentes” ……
}
Ese código arriba oculto en el fondo de algún archivo del núcleo en el núcleo de algún componente de Windows puede ser la razón por la que obtiene una infección de malware desagradable cuando visita algún sitio web aleatorio o recibe un correo electrónico incorrecto. Si está interesado en obtener más información, busque vulnerabilidades de vulnerabilidad de día cero .