¿Todos los sistemas operativos necesitan RAM?

76

¿Hay un sistema operativo que se pueda usar sin RAM, específicamente del tipo desde el que puedo crear un pendrive de arranque y usarlo en la computadora? Esto se vuelve incómodo, ya que el arranque esencialmente está cargando el sistema operativo en la RAM.

Nota: Originalmente quería saber acerca de un sistema operativo sin RAM para verificar si mi computadora portátil (que no arranca pero presenta una pantalla en blanco) RAM se había estropeado, pero me gusta la forma en que esta pregunta se ha disparado.

Suvarna Pattayil
fuente
23
No estoy seguro de si una CPU puede funcionar incluso sin RAM, esa puede ser una buena pregunta para Computer Science.SE . Lo que sí sé con certeza es que no llegarás a ningún lado si ni siquiera logras pasar el BIOS.
12
@ AndréDaniel una CPU tiene caché que, desde una perspectiva CS, también es memoria de acceso aleatorio. Entonces, en teoría , no necesita módulos RAM adicionales. Pero en la práctica dudo que la arquitectura x86 lo permita.
Philipp
30
Todos estos argumentos sobre el uso de la caché del procesador son de dudosa validez, ya que, al menos en x86, la caché no es una memoria a la que pueda acceder directamente. Su código siempre se refiere a RAM, pero el procesador gestiona automáticamente sus cachés para que no tenga que buscar los datos en RAM para los datos a los que se accede con más frecuencia. Pero de nuevo, no hay instrucciones de ensamblaje para decir "almacenar esto en caché" "escribir esto en caché", hay registros y hay memoria principal (con todos sus modos de acceso extraños), punto.
Matteo Italia
3
(OTOH, en teoría, podría explotar otra RAM (por ejemplo, RAM de video) o periféricos mapeados en el espacio de direcciones físicas)
Matteo Italia
13
Las modernas CPU x86 le permiten poner el caché incorporado en el modo "Caché como RAM". Creo que es necesario configurar algunos MSR para hacerlo. Esto también puede aplicarse a algunas CPU ARM. La memoria caché en las CPU modernas es mayor que la que podrían tener sus primeras PC como memoria máxima. Sin embargo, en una PC, el firmware aún no arrancará sin RAM presente. Necesitaría un firmware personalizado o algo que no sea una plataforma de PC.
LawrenceC

Respuestas:

96

¿Todos los sistemas operativos necesitan RAM?
Para el hardware compatible con PC de IBM, un paso obligatorio del proceso POST del BIOS es verificar si hay RAM para cargar el BIOS. Opcionalmente, el proceso POST verifica sus funciones RAM correctamente. Después del proceso POST, el BIOS carga el gestor de arranque en la RAM y le da el control al gestor de arranque. Entonces, la respuesta a su pregunta ("¿Todos los sistemas operativos necesitan RAM?") Es: sí, cada hardware compatible con PC de IBM requiere al menos algo de RAM funcional para arrancar. Esto es cierto para cualquier sistema operativo que se ejecute en ese hardware.

Tenga en cuenta que en la pregunta original del OP, había una referencia a una "computadora portátil", que interpreté como: hardware compatible con PC de IBM. Para el resto de esta respuesta, asumiré el hardware compatible con PC de IBM.

¿Puede un sistema operativo arrancar con RAM defectuosa?
Si su RAM está defectuosa (y no está completamente ausente / rota) o si puede reemplazar (parcialmente) su RAM, es posible que pueda arrancar usando los parches de kernel BadRAM de BadMEM . Requiere que vuelva a compilar el kernel (suena más fácil de lo que es si lo hace por primera vez) y puede reiniciar y decirle al kernel dónde está su mala memoria. Una explicación interesante del uso de Memtest86 / Memtest86 + , BadRAM / BadMEM se puede encontrar aquí .

¿Puede un sistema operativo arrancar sin RAM y usar el caché de la CPU como RAM?
Hasta donde sé, no hay forma de usar el caché de su CPU como RAM sin RAM presente en su sistema (como lo sugieren @philipp y otros) en los comentarios. Si lo hay, sería bueno agregarlo aquí. El único documento que pude encontrar sobre este tema es este documento que dice: "Uso de la memoria caché del procesador como RAM hasta que se inicialice la RAM". No estoy seguro si (y cómo) funcionará sin RAM. Hasta donde sé, no hay un código de trabajo que inicie un sistema operativo en una PC compatible con IBM. Cualquier referencia a la prueba de conceptos, código de trabajo o cualquier cosa es bienvenida en los comentarios y la agregaré a esta respuesta.

¿Puedo acceder al BIOS?
La pregunta del OP es un poco vaga si la computadora portátil puede pasar la POST del BIOS. Como señala @Tonny, ningún sistema operativo lo ayudará a " llegar al BIOS ". Se entra en el BIOS con el F1o F2o F10o DELo ESCclave, dependiendo de la marca del BIOS.

¿Cómo recuperar datos de la computadora portátil sin RAM?
En cuanto al objetivo detrás de su pregunta: ¿por qué necesita acceso a su computadora portátil? ¿Probablemente porque todavía hay datos en el HDD que desea recuperar? Si ese es el caso, es mucho más fácil extraer el HDD (consulte el manual) y conectarlo a un dispositivo de almacenamiento externo o directamente a una PC. Aquí hay una buena guía para hacer eso.

en cualquier lugar
fuente
3
En la práctica, es posible ejecutar una máquina con RAM algo defectuosa (por ejemplo, solo hay un banco que no funciona correctamente). Si el BIOS no se da cuenta (o, si lo hace, puede haber la anulación F1 habitual), aún puede ejecutar un sistema operativo como Linux con el parche BadMEM / BadRAM, que le indica al núcleo que evite los bloques de memoria especificados.
Matteo Italia
55
@VusP: para verificar su RAM, use un livecd / -usb con Memtest86 / Memtest86 +, omita las pruebas de RAM en su BIOS y ejecute el memtest desde el livecd / -usb.
agtoever
44
¿Quién dice que probar la RAM en el arranque es " obligatorio "? Era común cuando las máquinas tenían unos pocos MB o menos, pero pronto se volvieron opcionales a medida que crecían los tamaños y el tiempo se volvió prohibitivo.
Andrew Medico
3
@agtoever: ¿Eh? El truco de caché como RAM no deja de funcionar repentinamente cuando se inicializa RAM. Es solo que en ese momento es una tontería evitar la RAM, por lo que nadie intenta hacerlo. Pero el truco no tiene nada que ver con la RAM no inicializada; es justo cuando es realmente útil.
Mehrdad
3
@ Hola, Angel, no se puede ejecutar directamente desde el disco ya que la CPU no puede acceder directamente al contenido del disco. Tiene que introducir comandos en el controlador de disco y esperar a que transfiera bloques de datos del disco a algún lugar de la memoria RAM. Solo a partir de ahí, la CPU puede ejecutar instrucciones directamente.
psusi
33

En teoría es posible , pero sería muy lento, ya que necesitaría usar el disco para cualquier almacenamiento temporal que no encajara en los cachés de la CPU. (Las CPU tienen unos pocos megabytes de caché porque incluso la RAM es demasiado lenta para ellos. Piense en eso). Por lo tanto, necesitaría un sistema operativo bastante pequeño.

(Bueno, los sistemas integrados en chip pueden ejecutar código desde RAM o memoria Flash interna; el BIOS de la PC podría en teoría hacer lo mismo, pero no puede ejecutar todo el sistema operativo).

Pero, otra cosa es que el BIOS se ejecuta antes y fuera de cualquier sistema operativo instalado, y es el BIOS el que le permite arrancar desde un pendrive o lo que sea. Entonces, si no puede acceder al BIOS, entonces ningún otro sistema operativo en el mundo lo ayudará.

Gravedad
fuente
66
Puede ser que una CPU pueda usar su propio caché en lugar de RAM. Podría ser una característica útil para esas partes del código del BIOS, que se ejecutan antes de la prueba de memoria. Pero lograr que otro hardware funcione sin RAM podría ser complicado. No podría hacer DMA, por lo que la E / S de disco debería hacerse de manera diferente. Supongo que el BIOS ni siquiera intentaría cargar un sistema operativo, si no se encuentra RAM utilizable. Sin embargo, el tamaño del caché es un problema menor. Es posible que unos pocos MB no sean muchos para los estándares modernos, pero un sistema operativo de aquellos días en que un MB de RAM era mucho, aún debería funcionar en computadoras modernas.
kasperd
2
@kasperd El DEC Alpha fue diseñado para ejecutar su primera etapa de inicialización de encendido desde el caché, precargado desde una "ROM serial". Esto se debió a que la CPU no podía acceder a la RAM, la ROM convencional ni a ningún otro recurso mapeado en memoria (que incluía todos los dispositivos de E / S, IIRC) hasta que se inicializaron las tablas de páginas.
zwol
@grawity ¿qué pasa con los SSD?
TechLife
@TechLife: sigue siendo más lento que la RAM en varios órdenes que la magnitud. Sin embargo, supongo que si lo usaras como RAM ... simplemente se llamaría RAM, así que todavía no.
Grawity
15

Podría, con un poco de esfuerzo, diseñar un sistema que no contuviera RAM. Cargue su software desde ROM (o almacenamiento) y haga todo en registros o en caché. Tal sistema tendría un uso excepcionalmente limitado y, dado los precios actuales de RAM, sería un poco inútil. Una computadora portátil estándar no funcionará sin un poco de memoria integrada.

Su verdadera pregunta es más probable "¿Cómo obtengo información de una computadora que no arranca?", Y eso es fácil. Desmóntelo, extraiga la unidad y conéctelo a una caja de unidad externa.

Sin embargo, tenga en cuenta que cualquier computadora con la edad suficiente para que no pueda obtener un valor de $ 20 de RAM en funcionamiento, tendrá una unidad ATA (ATA normal, no SATA). Esta interfaz está casi extinta hoy, por lo que también necesitará encontrar una caja de unidad con una tarjeta ATA, así como un adaptador de tamaño completo a portátil. Tengo uno que compré en 2000, y guardo un par de cajas viejas solo para este propósito.

Peter
fuente
Convenido. Sin RAM significa que no hay pila, lo que significa que no hay capacidad para llamar a una rutina. Cualquier código que pueda funcionar en esta situación tendría que ser cuidadosamente ensamblado a mano.
Loren Pechtel
Cierto. Sin embargo, he visto un código que hizo eso. (Era la primera parte de una rutina de BIOS antes de que se inicializara el controlador de memoria).
Hennes
2
@LorenPechtel Eso no es del todo cierto. La pila se puede almacenar (y a menudo se almacena) en la memoria del chip.
reirab
2
@LorenPechtel no es necesario. ARM no usa stack para llamar a una rutina.
domen
1
Hasta donde puedo ver, esos chips tienen SRAM interna ... que cuenta como RAM.
domen
10

Si leo la pregunta correctamente, todos aquí están ladrando el árbol equivocado.

Él declara explícitamente "para llegar al BIOS".

Si la computadora portátil está tan rota que ni siquiera entrará en el BIOS, todo lo demás no tiene sentido.

No puede iniciar CUALQUIER SO en esto, independientemente de la situación de la RAM.

Tonny
fuente
8

Su suposición de que la memoria es mala probablemente no sea válida. Si no recibe pitidos o mensajes en pantalla, la causa raíz es casi seguro una CPU fallida (algo improbable) o una placa base fallida (muy probablemente). Las placas principales fallan con la edad todo el tiempo debido a las uniones de soldadura en frío, que eran una ocurrencia común en los primeros días del movimiento de ROHS y el requisito de usar soldadura sin plomo. Las técnicas de fabricación se habían optimizado para utilizar soldaduras basadas en plomo y la industria tardó un tiempo en comprender y resolver los problemas. Muchos fabricantes de componentes no estaban muy dispuestos a gastar el dinero para actualizar sus procesos. Después de todo, los dispositivos se probarían y grabarían perfectamente, solo para fallar meses o años después, después de que cualquier garantía hubiera expirado. Solo con una creciente montaña de fallas y una intensa retroalimentación negativa de los usuarios, los fabricantes comenzaron a mejorar las cosas. En una computadora portátil de este tipo, hacer que la placa base vuelva a fluir para rectificar las uniones de soldadura en frío es casi seguro que tiene un costo prohibitivo.

paseo
fuente
Eso es posible, pero la mala memoria tampoco es una mala suposición. He visto que la memoria defectuosa (e incluso los sockets de memoria defectuosos) causan un error de POSTAR varias veces antes. Por supuesto, la comprobación más fácil de la memoria generalmente es intentar arrancar con diferentes palos extraídos o arrancar con un solo palo bueno conocido. Si eso resuelve los problemas, fue la memoria, las ranuras de memoria o el controlador de memoria.
reirab
5

La mayoría de las primeras computadoras de la década de 1980 o más tenían un tipo de sistema operativo (controladores de hardware, soporte de E / S, carga de programas, interfaz de línea de comandos muy simple, etc.) en el chip ROM. Podría funcionar de alguna manera incluso mientras los chips de RAM no funcionaran. Esta característica se usó en versiones especiales de contenido de ROM diseñadas para ejecutar pruebas de hardware y comunicarse principalmente a través de las luces del teclado y del zumbador.

La CPU tiene varios registros para recordar al menos la dirección del comando que se está ejecutando, pero estos normalmente no se llaman RAM.

El código C normal no puede ejecutarse en un sistema sin RAM, ya que utiliza memoria de pila para asignar variables, y la pila está en RAM. Cuando se inicia una computadora reciente, inicialmente no está disponible una RAM dinámica regular ya que el dispositivo de actualización de RAM necesita una configuración inicial para funcionar. El código de ensamblaje se ejecuta primero y realiza la inicialización de la placa base. La RAM comienza a funcionar y luego se puede ejecutar el código C.

h22
fuente
44
El último párrafo no es del todo cierto. La pila no tiene que estar en RAM sin chip. En realidad, es bastante común que la pila se encuentre en la memoria del chip. Incluso en máquinas normales, la pila del subproceso que se está ejecutando actualmente generalmente estará en caché y solo se enviará a DRAM cuando el planificador intercambie subprocesos. Sin embargo, he escrito código para DSP, donde la pila residía en memoria en chip directamente direccionable y nunca tocó la DRAM. Por supuesto, supongo que podría argumentar que la memoria en el chip es técnicamente RAM en este caso.
reirab
44
Además, no es inusual que al menos algunos de los parámetros y valores de retorno se pasen a las funciones de C usando registros (en lugar de la pila). Además, las variables locales también se almacenan comúnmente en registros en lugar de en la pila por los compiladores de C. Incluso puede solicitar específicamente que el compilador incluya una variable particular en un registro utilizando la palabra clave 'registrar'. Por supuesto, una vez que una función necesita más variables locales de las que tiene espacio de registro, deberá salir a la memoria, pero esa es una restricción de hardware que se aplica independientemente del lenguaje de programación.
reirab
4

Cuando fui a la universidad en 1967, el Departamento de Informática tenía una cebra Stantec . La memoria consistía en un tambor magnético de 8192 palabras. También hubo 12 registros y dos acumuladores. Puede considerar esa RAM, pero no como la conocemos.

David Marshall
fuente
3

Necesitaría al menos en caché de chip para registros (esencialmente una cantidad muy pequeña de RAM en chip) para que la unidad de ejecución de la CPU pueda funcionar. Entonces, incluso su CPU tiene 'RAM'.

Ningún sistema operativo Von-Neumann ha sido diseñado sin el requisito de memoria, creo.

Entonces no.

Hola lo
fuente
3

Según todas las demás personas aquí, estoy de acuerdo con el hecho de que usted NECESITA RAM y no puede trabajar sin ella, pero también leo lo siguiente:

(Originalmente quería cargar un sistema operativo sin RAM para verificar si la RAM se había estropeado, pero me gusta la forma en que esta pregunta se ha disparado).

Esto realmente existe en el BIOS, hay una función para verificar la RAM en profundidad. Al arrancar e ingresar al BIOS, cambie la opción "Autocomprobación de encendido rápido" a desactivada, y se realizará una verificación completa en su RAM. Esta opción debe ubicarse en "características avanzadas del BIOS", algo así como la segunda opción en los BIOS AMI.

Espero que eso te lleve un paso más allá. ;-)

Olivier M.
fuente
3

No necesita RAM, por ejemplo, use una máquina Turing .

Una máquina de Turing es un dispositivo hipotético que manipula símbolos en una tira de cinta de acuerdo con una tabla de reglas. A pesar de su simplicidad, una máquina Turing se puede adaptar para simular la lógica de cualquier algoritmo de computadora, y es particularmente útil para explicar las funciones de una CPU dentro de una computadora.

(No consideraría una cinta como RAM).

Ahora sus preguntas reales deberían ser sobre "útil" y definir qué quiere decir con "útil" .

Ian Ringrose
fuente
3
En el nivel conceptual de una máquina Turing, todos los tipos de almacenamiento de datos de lectura-escritura son esencialmente equivalentes: RAM, registros, caché, cinta magnética, disco. La única diferencia entre ellos es la velocidad de acceso.
Barmar
1
@Barmar RAM significa memoria de acceso aleatorio. Eso significa que puede acceder a las celdas dentro de él en cualquier orden. Solo se puede acceder secuencialmente a las celdas de una cinta en una máquina de Turing (en cualquier dirección o alterna). Entonces diría que la cinta en una máquina Turing es, por definición, no RAM.
kasperd
1
@Barmar Eso es incorrecto. La definición de RAM no permite tiempos de búsqueda. Por lo tanto, la cinta de una TM simplemente no se ajusta a la definición de RAM, porque no puede acceder a celdas arbitrarias sin buscar.
kasperd
1
@Barmar, la noción de tiempo de reloj de pared puede no aplicarse, pero la noción de tiempo, ya que requiere operaciones de lectura O (n) para llegar allí, ciertamente lo hace.
psusi
1
@Barmar, no, no lo haces. Es por eso que usamos la notación "O" grande para hablar sobre la complejidad puramente matemática que no está relacionada con cuánto "tiempo" podría tomar algo real. El modelo matemático de una unidad de cinta en este TM es tal que solo puede leer ... en cualquier dirección ... no hacer zoom hacia adelante o hacia atrás, en cualquier cantidad de tiempo. Por lo tanto, si leyó por última vez el byte 1, no puede leer el byte 27 sin leer primero los 26 bytes intermedios. Por eso no es ram. Si desea memoria que pueda omitir esos 26 bytes, ya sea que tome 0 tiempo o 5 minutos, eso sería ram, no una cinta.
psusi
3

Sin embargo, existen sistemas operativos especializados para uso incrustado que se ejecutan completamente desde una ROM (memoria de solo lectura). Para hacer algo útil, generalmente necesita al menos una pequeña cantidad de RAM. Sin embargo, no he visto una PC que arranque sin RAM.

En cuanto a la pregunta original sobre una prueba de memoria, si la computadora PUBLICARÁ (es decir, pasará la autocomprobación de encendido e intentará arrancar), entonces Memtest86 está diseñado específicamente para probar su RAM. Prueba los primeros 64 KB de RAM, se carga en esa RAM y luego prueba el resto de la memoria del sistema tan a fondo como desee. La memoria "Flakey" (en oposición a la simple mala memoria) es poco común, pero he visto que Memtest86 detecta un bit intermitentemente malo que la prueba de memoria de la computadora omitió (después de todo, la prueba de memoria POST debe completarse en un período de tiempo razonable , mientras que la prueba más rápida de memtest86 dura entre 5 y 10 minutos, y las pruebas más completas requieren horas).

usuario153822
fuente
1

Sí, puedes tener una computadora sin RAM. Hay un modo especial en la mayoría de los procesadores x86 que permite ejecutarlo solo con caché. Si busca coreboot (anteriormente linuxbios), puede hacerlo. Se llama caché como ram. En realidad, puede hacer un sistema operativo completo basado en esto, y con los cachés modernos de gran tamaño podría terminar incluso teniendo una interfaz gráfica de usuario (consulte los menús). Pero ninguno lo ha hecho todavía.

Jorge Aldo
fuente