Por que não criar um sistema operacional executado em memória ram?

2

esse pode ser o site errado do StackExchange para fazer essa pergunta, mas não consegui encontrar um melhor. Não parece haver uma pergunta sobre sistemas operacionais.

Eu estive pensando recentemente sobre um sistema operacional que funciona apenas com memória RAM e que teria muitos benefícios.

  • Seria muito mais simples criar um SO, porque você não teria que lidar com sistemas de arquivos, cache, etc.
  • Seria muito mais rápido.
  • Os programas seriam mais fáceis de escrever porque não precisariam carregar nem salvar nada.
  • Em vez de escrever o código-fonte e, em seguida, compilar, os programas podem ser manipulados diretamente na memória. REPLs chegam em algum lugar perto disso, mas por que não percorrer todo o caminho? Também o LightTable é assim, na medida em que 'permite modificar os programas em execução', mas acho que pode ser levado adiante. Obviamente, precisaríamos de alguma outra maneira de manipular / construir programas na memória.
  • Bancos de dados seriam massivamente simplificados, pois não haveria cache de consulta para fazer. Eles podem até não ser necessários em tudo.
  • Não inicializar ou encerrar necessário

Obviamente, existem problemas com essa abordagem:

  • A memória é volátil: você teria que mudar o hardware para que a memória fosse sempre mantida viva com uma bateria de backup ou algo assim.
  • Existem muitas situações em que os dados serão grandes demais para caber no RAM. Por exemplo. grandes sites com bancos de dados enormes, pessoas com grandes coleções de música / vídeo, etc. No entanto, a maioria das pessoas não tem grandes coleções de vídeos, elas transmitem coisas do Netflix. Ou seja Veja o sucesso do ChromeBook, que tem apenas um SSD de 16GB.
  • atualizar o sistema operacional na memória pode ser complicado, mas alguns idiomas já fazem isso. Java, hot-swap do Erlang

De qualquer forma, eu devo estar sentindo falta de algo, caso contrário, todos os cientistas da computação que são muito mais inteligentes do que eu já teriam feito isso, mas o que é isso?

    
por eggbert 27.11.2013 / 20:19

4 respostas

4

Você não pode usar a RAM com eficiência se tudo que você tem é RAM por dois motivos:

  1. Se uma página estiver suja, mas não acessada, você precisará mantê-la na RAM, mesmo que prefira usar RAM para outras coisas.

  2. Sempre que um aplicativo pode usar memória ou não, você precisa dizer não, a menos que possa acomodar cada reserva que já tenha feito, mesmo que a maioria dessas reservas provavelmente nunca seja usada, porque senão você Teria que terminar os processos à força.

Então tudo que você tem é RAM, e você não pode usá-lo efetivamente. Isso seria uma receita horrível para um sistema operacional de propósito geral.

Mas a razão básica de ser uma má ideia é simples - ter outras coisas além da RAM não obriga você a usá-las. É simplesmente permite que você use-os se for benéfico. Você não pode melhorar as coisas tirando as opções.

    
por 27.11.2013 / 20:33
2

Os preços para RAM e armazenamento em disco diferem em uma ordem de grandeza até hoje. Isso significa que, conforme as necessidades de armazenamento aumentam, armazenar tudo na RAM torna-se muito mais caro do que as alternativas. Isso também se aplica à memória ROM (tem que ser algo não-volátil para inicializar a coisa), onde usar uma pequena quantidade e colocar o restante dos programas / códigos necessários no disco é uma opção mais econômica do que na ROM.

Disco rígido de 1 TB, US $ 50, contra 1 GB de RAM, por US $ 30

SSD de US $ 100 de 120 GB contra 16 GB de RAM por US $ 150

Comprei um computador com todos os RAM há décadas e ainda o tenho. Um modelo Tandy 102 com 24k de RAM estática. Ainda tinha um tipo de sistema de arquivos, pois você ainda precisava organizar e selecionar documentos e programas. Não pegar devido ao preço - foi de US $ 600 quando eu comprei.

    
por 27.11.2013 / 20:45
1

Você pode ter um SO Linux completamente rodando a partir da RAM (uma vez inicializado a partir de um meio persistente ou do PXE, isto é).

Você só precisa ter um initrd personalizado para criar um ramfs e montá-lo como root após preenchê-lo.

Existem algumas restrições práticas, uma vez que a RAM é relativamente cara e pequena em comparação com SSDs, HDDs, etc.

    
por 04.09.2014 / 01:17
0

Os SOs incorporados freqüentemente podem ser executados completamente na RAM, dependendo do aplicativo. Eu escrevi um alguns anos atrás para um microcontrolador Atmel.

Nos anos 80, havia uma variedade de sistemas que podiam rodar completamente na RAM. Tecnicamente, você não precisava de nenhuma unidade no IBM PC ou XT original, pois eles poderiam ser inicializados diretamente em um interpretador BASIC embutido na ROM. Todas as primeiras máquinas Commodore (como a VIC-20, C64, 4+, C16, etc.) (e muitas outras) eram as mesmas.

Na década de 1990, o sistema de consumo mais popular com todo o sistema operacional executado na RAM era o PalmOS, que originalmente não tinha nenhum sistema de arquivos (internamente, tudo era armazenado em um grande banco de dados de RAM). Para lembrar de arquivos PRC e PDB, havia praticamente apenas registros desses registros de RAM para um recurso de aplicativo específico ou armazenamento de dados). Não foi até que eles introduziram opções de armazenamento externo que qualquer tipo de acesso ao sistema de arquivos era embutido no sistema operacional, e mesmo assim, se você não usasse cartões SD ou MMC no seu dispositivo, o sistema seria executado completamente da RAM. Os aplicativos não precisavam ser "carregados", pois funcionavam praticamente in loco (embora pudessem alocar pilha e espaço de pilha, naturalmente).

O kernel do Linux pode ser configurado para rodar completamente a partir da RAM. Isso não é tão útil para computação de propósito geral (onde o dispositivo não sabe o que você vai jogar), mas se você conhece os limites de memória específicos para um determinado aplicativo, você pode configurar e executar assim. Você não terá nenhuma troca, e você terá que usar algo para carregar o kernel em primeiro lugar com qualquer código de aplicativo que queira executar, mas isso pode ser feito (embora, é claro, em um cenário do mundo real , você vai querer pelo menos ter algum tipo de firmware para armazenar o kernel e os dados do aplicativo para se / quando o dispositivo for reinicializado).

Por que não vemos freqüentemente isso na prática fora de certas áreas do espaço embutido? Mesmo os dispositivos embarcados precisam ser inicializados a partir de algo , e atualmente a memória flash é bastante barata e confiável, tornando muito fácil e barato pelo menos adicionar algum pequeno armazenamento de estado sólido para inicializar. E, a menos que o seu volume para o seu dispositivo seja grande, ter chips de ROM feitos para conter o seu sistema operacional para bootstrapping / reinicialização pode ser caro. É claro que, em PCs de propósito geral, onde o fabricante não sabe que tipo de carga você pretende colocar no sistema, ser capaz de ter armazenamento persistente que pode ser usado como armazenamento de apoio para trocar páginas de memória virtual é um grande benefício . Mas, para necessidades mais personalizadas que não exigem armazenamento massivo, há uma variedade de sistemas operacionais que podem ser executados completamente somente a partir de RAM.

    
por 04.09.2014 / 00:29