Si configuro el valor de swappiness en 100 e intento arrancar el disco duro instalado de ubuntu en la computadora de mi amigo que no tiene RAM, ¿puedo arrancar la computadora sin Ram?
No. La CPU no puede ejecutar el código del intercambio. El intercambio funciona moviendo el contenido de la RAM al disco y otros contenidos del disco a la RAM, pero la ejecución siempre es desde la RAM.
Y no, no hay forma de transferir código o datos desde el disco directamente a los cachés de la CPU. No puedes evitar la RAM.
Incluso las arquitecturas de microcontroladores que pueden ejecutar código directamente desde la memoria flash NOR necesitan RAM para la pila, al menos algo de SRAM incorporada como algunos controladores.
@ LưuVĩnhPhúc Tienes razón. Todavía estoy acostumbrado a llamar a esos SoCs con núcleos ARM Cortex-A "microcontroladores", aunque esto puede ser engañoso. Los que tienen una MMU, pueden ejecutar Linux y, por lo general, también tienen esa SRAM interna (necesaria para el código de arranque), pero no creo que puedan ejecutar código directamente desde flash. Bueno, el OP parece pensar en una PC ordinaria de todos modos.
Philippos
1
Creo que S390 Linux puede ejecutar código directamente desde HDD. La característica se agregó porque el S390 es una arquitectura de 31 bits, y hacer que cada byte esté disponible para datos en lugar de código es una victoria. Sin embargo, podría estar recordando mal, pero el conjunto de parches fue memorable, ya que tenía la distinción única de ser valioso tanto para mainframes como para microcontroladores (es decir, los dos extremos del escalado de Linux) pero sin interés para nada intermedio.
Jörg W Mittag
2
Ah, lo encontré, es la función XIP (eXecute In Place). Obviamente, aún necesita RAM para los datos. Se trata solo de código.
Jörg W Mittag
1
@rackandboneman Como desarrollador integrado, hice todo, desde ensamblador desnudo en controladores de 8 bits sobre RTOS hasta Linux incorporado. La menor memoria que conocí fue un ATtiny con memoria para una pila de tres direcciones de retorno. ¡Sin eso, ni siquiera podrías tener interrupciones! Ahora, por favor, no discuta si esta memoria de pila es ram o registros ... (-:
Philippos
1
@Philippos, ¿por qué argumentaría? Estamos hablando de lo mismo.
TL; DR: No. De hecho, hay una fase durante el arranque en la que no se usan los chips de RAM, y el procesador se ejecuta con solo su caché interna funcionando como RAM improvisada. Pero esto es muy temprano en el proceso de carga del BIOS y una de las primeras cosas que hace el BIOS es inicializar la RAM, para poder usarla. El código de máquina que se ejecuta allí es muy especializado, muy artesanal.
Después de esa etapa muy temprana, se necesita RAM para todo. Esto significa que ni siquiera podrá acceder al BIOS, obtener una señal de video o mucho menos arrancar desde cualquier medio, sin RAM.
Respuestas:
No. La CPU no puede ejecutar el código del intercambio. El intercambio funciona moviendo el contenido de la RAM al disco y otros contenidos del disco a la RAM, pero la ejecución siempre es desde la RAM.
Y no, no hay forma de transferir código o datos desde el disco directamente a los cachés de la CPU. No puedes evitar la RAM.
Incluso las arquitecturas de microcontroladores que pueden ejecutar código directamente desde la memoria flash NOR necesitan RAM para la pila, al menos algo de SRAM incorporada como algunos controladores.
fuente
/electronics//a/311839/111920 contiene el enlace http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2 que describe el proceso de arranque de una CPU Intel moderna con detalles insoportables.
TL; DR: No. De hecho, hay una fase durante el arranque en la que no se usan los chips de RAM, y el procesador se ejecuta con solo su caché interna funcionando como RAM improvisada. Pero esto es muy temprano en el proceso de carga del BIOS y una de las primeras cosas que hace el BIOS es inicializar la RAM, para poder usarla. El código de máquina que se ejecuta allí es muy especializado, muy artesanal.
Después de esa etapa muy temprana, se necesita RAM para todo. Esto significa que ni siquiera podrá acceder al BIOS, obtener una señal de video o mucho menos arrancar desde cualquier medio, sin RAM.
fuente