¿Por qué no crear un sistema operativo que se ejecute en RAM?

¿Por qué no crear un sistema operativo que se ejecute en RAM?

Este podría ser el sitio de StackExchange equivocado para hacer esta pregunta, pero no pude encontrar uno mejor. No parece haber nadie para preguntas sobre sistemas operativos.

He estado pensando recientemente en un sistema operativo que se ejecute exclusivamente en RAM y que tendría muchos beneficios.

  • Sería mucho más sencillo crear un sistema operativo de este tipo, porque no tendría que lidiar con sistemas de archivos, almacenamiento en caché, etc.
  • Sería mucho más rápido.
  • Los programas serían más fáciles de escribir porque no necesitarían cargar ni guardar nada.
  • En lugar de escribir el código fuente y luego compilarlo, los programas podrían manipularse directamente en la memoria. Los REPL se acercan a esto, pero ¿por qué no llegar hasta el final? TambiénMesa ligeraes así en el sentido de que "te permite modificar los programas en ejecución", pero creo que se puede llevar más lejos. Obviamente necesitaríamos alguna otra forma de manipular/construir programas en la memoria.
  • Las bases de datos se simplificarían enormemente, ya que no habría que almacenar en caché las consultas. Puede que ni siquiera sean necesarios en absoluto.
  • No es necesario iniciar ni apagar

Obviamente hay problemas con este enfoque:

  • La memoria es volátil: habría que cambiar el hardware para que la memoria siempre se mantuviera viva con una batería de respaldo o algo así.
  • Hay muchas situaciones en las que los datos serán demasiado grandes para caber en la RAM. Por ejemplo, sitios web grandes con bases de datos masivas, personas con grandes colecciones de música/videos, etc. Sin embargo, la mayoría de las personas no tienen grandes colecciones de videos, transmiten contenido desde Netflix. Es decir, mire el éxito del ChromeBook, que sólo tiene un SSD de 16 GB.
  • Actualizar el sistema operativo en la memoria puede ser complicado, pero algunos lenguajes ya lo hacen, por ejemplo, Java, Erlang hot-swapping.

De todos modos, algo me debe faltar, de lo contrario todos los informáticos que son mucho más inteligentes que yo ya lo habrían hecho, pero ¿qué es?

Respuesta1

No puedes usar la RAM de manera efectiva si todo lo que tienes es RAM por dos razones:

  1. Si una página está sucia pero no se accede a ella, debe mantenerla en la RAM, aunque prefiera usar la RAM para otras cosas.

  2. Cada vez que una aplicación pueda usar memoria o no, debe decir que no, a menos que pueda acomodar todas las reservas que ya haya realizado, incluso si es poco probable que la mayoría de esas reservas se usen alguna vez, porque de lo contrario tendría que terminar forzosamente. procesos.

Entonces todo lo que tienes es RAM y no puedes usarla de manera efectiva. Sería una receta horrible para un sistema operativo de propósito general.

Pero la razón básica por la que esto es una mala idea es así de simple: tener otras cosas además de RAM no te obliga a usarlas. simplementepermiteque los utilices si es beneficioso. No se pueden mejorar las cosas eliminando opciones.

Respuesta2

Los precios de la RAM y el almacenamiento en disco difieren en un orden de magnitud incluso hoy en día. Esto significa que a medida que aumentan las necesidades de almacenamiento, almacenar todo en RAM se vuelve mucho más costoso que las alternativas. Esto también se aplica a la memoria ROM (tiene que ser algo no volátil para arrancar), donde usar una pequeña cantidad y poner el resto de los programas/códigos necesarios en el disco es una opción más económica que todo en ROM.

Disco duro de 1 TB por $50 frente a 1 GB de RAM por $30

SSD de 120 GB por $100 frente a 16 GB de RAM por $150

Compré una computadora con toda RAM hace décadas y todavía la tengo. Un Tandy Model 102 con 24k de RAM estática. Todavía tenía una especie de sistema de archivos, ya que aún era necesario organizar y seleccionar documentos y programas. No tuvo éxito debido al precio: costaba $600 cuando lo compré.

ingrese la descripción de la imagen aquí

Respuesta3

Puede hacer que un sistema operativo Linux se ejecute completamente desde la RAM (es decir, una vez iniciado desde un medio persistente o desde PXE).

Solo necesita tener un initrd personalizado que cree un ramfs y lo monte como root después de completarlo.

Sin embargo, existen algunas limitaciones prácticas, ya que la RAM es relativamente cara y pequeña en comparación con las SSD, las HDD, etc.

Respuesta4

Los sistemas operativos integrados con frecuencia pueden ejecutarse completamente en la RAM, según la aplicación. Iescribió unoHace unos años para un microcontrolador Atmel.

En la década de 1980 había una variedad de sistemas que podían ejecutarse completamente en RAM. Técnicamente no necesitabascualquierunidad en la PC IBM o XT original, ya que podrían iniciarse directamente en un intérprete BÁSICO integrado en la ROM. Todas las primeras máquinas Commodore (como la VIC-20, C64, 4+, C16, etc.) (y muchas otras) eran iguales.

En la década de 1990, el sistema de consumo más popular con todo el sistema operativo ejecutado en RAM era PalmOS, que originalmente no tenía ningún sistema de archivos de ningún tipo (internamente todo estaba almacenado en una gran base de datos de registros RAM (no relacional). Si recuerdas PRC y archivos PDB, prácticamente solo había volcados de estos registros RAM para un recurso de aplicación o almacén de datos específico). No fue hasta que introdujeron opciones de almacenamiento externo que se incorporó cualquier tipo de acceso al sistema de archivos en el sistema operativo, e incluso entonces, si no usaba tarjetas SD o MMC en su dispositivo, el sistema se ejecutaría completamente desde la RAM. Las aplicaciones no tenían que "cargarse", ya que se ejecutaban prácticamente in situ (aunque, naturalmente, podían asignar espacio de pila y montón).

El kernel de Linux se puede configurar para que se ejecute completamente desde la RAM. En realidad, esto no es tan útil para la informática de uso general (donde el dispositivo no sabrá lo que le vas a lanzar), pero si conoces tus límites de memoria específicos para una aplicación determinada, puedes configurarla y ejecutarla. es de esta manera. No tendrás ningún intercambio y tendrás que usar algo para cargar el kernel en primer lugar con cualquier código de aplicación que quieras ejecutar, pero se puede hacer (aunque, por supuesto, en un escenario del mundo real). , querrá tener al menos algún tipo de firmware para almacenar el kernel y los datos de la aplicación en caso de que se reinicie el dispositivo).

¿Por qué no vemos esto con frecuencia en la práctica fuera de ciertas áreas del espacio integrado? Incluso los dispositivos integrados necesitan inicializarse desdealgo, y hoy en día la memoria flash es bastante barata y confiable, lo que hace que sea bastante fácil y económico agregar al menos un pequeño almacenamiento de estado sólido para arrancar. Y a menos que el volumen de su dispositivo sea grande, tener chips ROM diseñados para contener su sistema operativo para el arranque/reinicialización puede resultar costoso. Por supuesto, en PC de uso más general donde el fabricante no sabe qué tipo de carga pretende poner en el sistema, poder tener almacenamiento persistente que pueda usarse como almacén de respaldo para intercambiar páginas de memoria virtual es un gran beneficio. . Pero para necesidades más personalizadas que no requieren almacenamiento masivo, existe una variedad de sistemas operativos que pueden ejecutarse completamente solo desde la RAM.

información relacionada