Por que não criar um sistema operacional que rode em memória RAM?

Por que não criar um sistema operacional que rode em memória RAM?

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

Tenho pensado recentemente em um sistema operacional que rode puramente em memória RAM e que teria muitos benefícios.

  • Seria muito mais simples criar tal sistema operacional, 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 ou salvar nada.
  • Em vez de escrever código-fonte e depois compilar, os programas poderiam ser manipulados diretamente na memória. Os REPLs chegam perto disso, mas por que não ir até o fim? TambémMesa leveé assim porque 'permite modificar programas em execução', mas acho que pode ser levado mais longe. Obviamente precisaríamos de alguma outra forma de manipular/construir programas na memória.
  • Os bancos de dados seriam enormemente simplificados, pois não haveria necessidade de armazenamento em cache de consultas. Eles podem até nem ser necessários.
  • Não é necessário inicializar ou desligar

Obviamente, há problemas com esta abordagem:

  • A memória é volátil: você teria que mudar o hardware para que a memória fosse sempre mantida ativa com uma bateria reserva ou algo assim.
  • Existem muitas situações em que os dados serão grandes demais para caber na memória RAM. Por exemplo, grandes sites com bancos de dados enormes, pessoas com enormes coleções de músicas/vídeos, 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 possui apenas um SSD de 16GB.
  • atualizar o sistema operacional na memória pode ser complicado, mas algumas linguagens já fazem isso, por exemplo, Java, Erlang hot-swapping

De qualquer forma, devo estar faltando alguma coisa, 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 é?

Responder1

Você não pode usar a RAM de maneira eficaz se tudo o que você tem é RAM por dois motivos:

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

  2. Sempre que um aplicativo usar memória ou não, você terá que dizer não, a menos que possa acomodar todas as reservas que já fez, mesmo que seja improvável que a maioria dessas reservas seja usada, caso contrário, você teria que encerrar à força processos.

Portanto, tudo o que você tem é RAM e não pode usá-la de maneira eficaz. Essa seria uma receita horrível para um sistema operacional de uso geral.

Mas a razão básica pela qual isso é uma má ideia é simples: ter outras coisas além da RAM não força você a usá-las. Simplesmentepermitevocê deve usá-los se for benéfico. Você não pode melhorar as coisas eliminando opções.

Responder2

Os preços de RAM e armazenamento em disco diferem em uma ordem de grandeza até hoje. Isso significa que à medida que as necessidades de armazenamento aumentam, armazenar tudo na RAM se torna 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 o dispositivo), onde usar uma pequena quantidade e colocar o restante dos programas/códigos necessários no disco é uma escolha mais econômica do que tudo em ROM.

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

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

Comprei um computador com RAM décadas atrás e ainda o tenho. Um Tandy Model 102 com 24k de RAM estática. Ele ainda tinha uma espécie de sistema de arquivos, pois você ainda precisava organizar e selecionar documentos e programas. Não entendi devido ao preço - custava US $ 600 quando o comprei.

insira a descrição da imagem aqui

Responder3

Você pode fazer com que um sistema operacional Linux seja executado completamente a partir da RAM (isto é, uma vez inicializado a partir de uma mídia persistente ou de PXE).

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, pois a RAM é relativamente cara e pequena em comparação com SSDs, HDDs, etc.

Responder4

Os sistemas operacionais incorporados frequentemente podem ser executados completamente na RAM, dependendo do aplicativo. EUescreveu umalguns anos atrás, para um microcontrolador Atmel.

Na década de 1980, havia uma variedade de sistemas que podiam rodar completamente em RAM. Tecnicamente você não precisavaqualquerdrive no IBM PC ou XT original, pois eles poderiam inicializar diretamente em um interpretador BASIC embutido na ROM. Todas as primeiras máquinas Commodore (como VIC-20, C64, 4+, C16, etc.) (e muitas outras) eram iguais.

Na década de 1990, o sistema de consumo mais popular com todo o sistema operacional executado em RAM era o PalmOS, que originalmente não tinha nenhum tipo de sistema de arquivos (internamente, tudo era armazenado em um grande banco de dados de registros de RAM (não relacional). Se você se lembra do PRC e PDB, havia basicamente despejos desses registros de RAM para um recurso de aplicativo ou armazenamento de dados específico). Somente quando eles introduziram opções de armazenamento externo é que qualquer tipo de acesso ao sistema de arquivos foi incorporado ao sistema operacional e, mesmo assim, se você não usasse cartões SD ou MMC em seu dispositivo, o sistema funcionaria completamente a partir da RAM. Os aplicativos não precisavam ser "carregados", pois eram executados praticamente no local (embora pudessem alocar espaço de pilha e heap, naturalmente).

O kernel do Linux pode ser configurado para rodar completamente na RAM. Isso não é tão útil para computação de uso geral (onde o dispositivo não saberá o que você vai lançar nele), mas se você conhece seus limites de memória específicos para um determinado aplicativo, você pode configurar e executar é desta forma. Você não terá nenhuma troca e precisará usar algo para carregar o kernel em primeiro lugar com qualquer código de aplicativo que deseja executar, mas isso pode ser feito (embora, é claro, em um cenário do mundo real , você desejará pelo menos 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 isso com frequência na prática fora de certas áreas do espaço incorporado? Até mesmo dispositivos incorporados precisam ser inicializadosalgo, e hoje em dia a memória flash é muito barata e confiável, tornando muito fácil e barato adicionar pelo menos um pequeno armazenamento de estado sólido para inicializar. E, a menos que o volume do seu dispositivo seja grande, ter chips ROM feitos para conter seu sistema operacional para inicialização/reinicialização pode ser caro. É claro que, em PCs de uso mais 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 troca de páginas de memória virtual é um enorme benefício. . Mas para necessidades mais personalizadas que não exigem armazenamento massivo, há uma variedade de sistemas operacionais que podem ser executados completamente apenas na RAM.

informação relacionada