1

это может быть не тот сайт StackExchange, чтобы задать этот вопрос, но я не смог найти лучшего. Похоже, что нет вопросов по поводу операционных систем.

Недавно я думал об ОС, которая работает исключительно в оперативной памяти, и что она будет иметь много преимуществ.

  • Было бы намного проще создать такую ОС, потому что вам не пришлось бы иметь дело с файловыми системами, кэшированием и т.д.
  • Это было бы намного быстрее.
  • Программы было бы легче написать, потому что им не нужно ничего загружать или сохранять.
  • Вместо написания исходного кода и последующей компиляции, программами можно напрямую манипулировать в памяти. REPL получают где-то рядом с этим, но почему бы не пройти весь путь? Кроме того, LightTable похож на это в том смысле, что он «позволяет вам изменять запущенные программы», но я думаю, что это может быть продолжено. Очевидно, нам понадобится другой способ манипулирования / построения программ в памяти.
  • Базы данных будут значительно упрощены, так как не будет никакого кеширования запросов. Они могут даже не быть необходимыми вообще.
  • Не требуется загрузка или выключение

Очевидно, есть проблемы с этим подходом:

  • Память энергозависима: вам придется менять аппаратное обеспечение, чтобы память всегда поддерживалась резервной батареей или чем-то еще.
  • Есть много ситуаций, когда данные будут слишком большими, чтобы поместиться в оперативную память. Например, большие веб-сайты с огромными базами данных, люди с огромными музыкальными / видео-коллекциями и т.д. Однако большинство людей не имеют огромных видео-коллекций, они транслируют вещи из netflix. Т.е. посмотрите на успех ChromeBook, который имеет только 16 ГБ SSD.
  • Обновление ОС в памяти может быть сложным, но некоторые языки уже делают это, например, Java, горячая замена на Erlang

В любом случае, я, должно быть, что-то упускаю, иначе все программисты, которые намного умнее меня, уже сделали бы это, но что это?

4 ответа4

4

Вы не можете эффективно использовать оперативную память, если у вас есть только оперативная память по двум причинам:

  1. Если страница грязная, но к ней нет доступа, вы должны хранить ее в ОЗУ, даже если вы предпочитаете использовать ОЗУ для других целей.

  2. В любое время, когда приложение может использовать память или нет, вы должны сказать «нет», если не сможете учесть каждое уже сделанное вами резервирование, даже если большинство из этих резервирований вряд ли когда-либо будут использованы, потому что в противном случае вам придется принудительно прекратить действие. процессы.

Таким образом, все, что у вас есть, это оперативная память, и вы не можете использовать ее эффективно. Это был бы ужасный рецепт для операционной системы общего назначения.

Но основная причина, по которой это плохая идея, заключается в том, что наличие других вещей, кроме ОЗУ, не заставляет их использовать. Это просто позволяет вам использовать их, если это выгодно. Вы не можете сделать вещи лучше, забрав варианты.

2

Цены на оперативную память и дисковое хранилище отличаются на порядок даже сегодня. Это означает, что с увеличением потребности в хранении хранение всего в ОЗУ становится намного дороже, чем альтернативы. Это также относится к памяти ПЗУ (должно быть чем-то энергонезависимым для загрузки устройства), когда использование небольшого количества и размещение остальных необходимых программ / кода на диске является более экономичным выбором, чем все в ПЗУ.

Жесткий диск на 1 ТБ 50 $ против 1 ГБ RAM за 30 $

120 ГБ SSD $ 100 против 16 ГБ RAM за 150 $

Я купил такой компьютер с ОЗУ несколько десятилетий назад, и на самом деле он у меня есть. Модель 102 Tandy с 24 КБ статической оперативной памяти. В ней все еще была какая-то файловая система, так как вам все еще нужно было организовывать и выбирать документы и программы. Не завоевал популярность из-за цены - было 600 долларов, когда я его купил.

1

Вы можете полностью запустить ОС Linux из ОЗУ (после загрузки с постоянного носителя или из PXE).

Вам просто нужно иметь собственный initrd, создать ramfs и смонтировать его как root после его заполнения.

Однако существуют некоторые практические ограничения, поскольку ОЗУ относительно дорого и мало по сравнению с твердотельными накопителями, жесткими дисками и т.д.

0

В зависимости от приложения встроенные ОС часто могут работать полностью в оперативной памяти. Я написал один несколько лет назад для микроконтроллера Atmel.

Еще в 1980-х годах было множество систем, которые могли полностью работать в оперативной памяти. Технически вам не нужно любой диск в оригинальном ПК IBM или XT, так как они могут загружаться непосредственно в BASIC интерпретатор , встроенный в ПЗУ. Все ранние машины Commodore (такие как VIC-20, C64, 4+, C16 и т.д.) (И многие другие) были одинаковыми.

В 1990-х годах самой популярной потребительской системой со всей ОС, исполняемой в ОЗУ, была PalmOS, которая изначально не имела файловой системы (внутренне все хранилось в одной большой (нереляционной) базе данных записей ОЗУ. Если вам случится вспомнить файлы PRC и PDB, это были просто дампы этих записей ОЗУ для определенного ресурса приложения или хранилища данных). Только когда они представили варианты внешнего хранилища, в ОС был встроен любой вид доступа к файловой системе, и даже тогда, если вы не использовали карты SD или MMC на своем устройстве, система полностью работала бы из ОЗУ. Приложения не должны были "загружаться", так как они работали практически на месте (хотя, естественно, они могли выделять пространство для стека и кучи).

Ядро Linux может быть полностью настроено для работы из оперативной памяти. Это на самом деле не так уж и полезно для вычислений общего назначения (когда устройство не будет знать, что вы собираетесь на него бросить), но если вы знаете свои конкретные границы памяти для данного приложения, вы можете настроить и запустить это так. У вас не будет никакого свопа, и вам придется использовать что-то для загрузки ядра с тем кодом приложения, который вы хотите запустить, но это можно сделать (хотя, конечно, в реальном сценарии) вам понадобится хотя бы какая-нибудь прошивка для хранения данных ядра и приложения, если / когда устройство будет переинициализировано).

Что касается того, почему мы не часто видим это на практике вне определенных областей встроенного пространства? Даже встроенные устройства необходимо инициализировать от чего - то, и в эти дни флэш - памяти довольно дешево и надежно, что делает его очень легко и дешево , по крайней мере , добавить небольшой твердотельный хранения для загрузки. И если у вас большой объем для вашего устройства, то наличие микросхем ПЗУ, предназначенных для вашей ОС для начальной загрузки / повторной инициализации, может быть дорогостоящим. Конечно, на компьютерах более общего назначения, где производитель не знает, какую нагрузку вы намереваетесь создать в системе, наличие постоянного хранилища, которое можно использовать в качестве резервного хранилища для замены страниц виртуальной памяти, является огромным преимуществом , Но для более нестандартных потребностей, которые не требуют большого хранилища, существует множество операционных систем, которые могут полностью работать только из оперативной памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .