Можно ли вообще использовать убунту без оперативной памяти?
15
Если я установлю значение swappiness на 100 и попытаюсь загрузить установленный жесткий диск Ubuntu на компьютер моего друга, на котором нет оперативной памяти, могу ли я вообще загрузить компьютер без Ram?
Нет. Процессор не может выполнить код из свопинга. Обмен выполняется путем перемещения содержимого ОЗУ на диск и другого содержимого диска в ОЗУ, но выполнение всегда выполняется из ОЗУ.
И нет, нет способа перенести код или данные с диска непосредственно в кэш процессора. Вы не можете обойти RAM.
Даже микроконтроллерным архитектурам, которые могут выполнять код непосредственно из NOR-флеш-памяти, требуется ОЗУ для стека, по крайней мере, некоторые встроенные SRAM, как у некоторых контроллеров.
@ LưuVĩnhPhúc Вы правы. Я до сих пор привык называть эти SoC с ядрами ARM Cortex-A «микроконтроллерами», хотя это может вводить в заблуждение. Они имеют MMU, могут работать под Linux и, как правило, также имеют внутреннюю SRAM (необходимую для загрузочного кода), но я не думаю, что они могут выполнять код непосредственно из флэш-памяти. Что ж, OP, похоже, все равно думает о обычном ПК.
Филиппос
1
Я думаю, что S390 Linux может выполнять код прямо с жесткого диска. Эта функция была добавлена, потому что S390 - это 31-битная архитектура, и каждый байт, доступный для данных вместо кода, является победой. Хотя, возможно, я и запомнил, но набор патчей был запоминающимся, потому что он имел уникальное различие в том, что он полезен как для мэйнфреймов, так и для микроконтроллеров (то есть для двух крайних целей масштабирования Linux), но не представляет интереса для чего-либо промежуточного.
Йорг Миттаг
2
Ах, нашел его, это функция XIP (eXecute In Place). Очевидно, вам все еще нужна оперативная память для данных. Это только о коде.
Йорг Миттаг
1
@rackandboneman Как разработчик встраиваемых систем, я делал все: от простого ассемблера на 8-битных контроллерах через RTOS до встроенного Linux. Наименьшая память, которую я встретил, была ATtiny с памятью для стека трех обратных адресов. Без этого вы не могли бы даже прерывать! Теперь, пожалуйста, не спорьте, является ли эта память стека оперативной памятью или регистрами ... (-:
Philippos
1
@ Филиппос, с чего бы мне спорить - МЫ говорим одно и то же.
TL; DR: Нет. Во время загрузки действительно существует фаза, когда микросхемы ОЗУ не используются, и процессор работает только со своим внутренним кешем, выполняющим роль временного ОЗУ. Но это очень рано в процессе загрузки BIOS, и одна из первых вещей, которые делает BIOS, - это инициализация RAM, чтобы иметь возможность использовать ее. Работающий там машинный код очень специализированный, очень ручной.
После этого самого раннего этапа оперативная память необходима для всего. Это означает, что вы даже не сможете войти в BIOS, получить видеосигнал или намного меньше загружаться с любого носителя без ОЗУ.
Ответы:
Нет. Процессор не может выполнить код из свопинга. Обмен выполняется путем перемещения содержимого ОЗУ на диск и другого содержимого диска в ОЗУ, но выполнение всегда выполняется из ОЗУ.
И нет, нет способа перенести код или данные с диска непосредственно в кэш процессора. Вы не можете обойти RAM.
Даже микроконтроллерным архитектурам, которые могут выполнять код непосредственно из NOR-флеш-памяти, требуется ОЗУ для стека, по крайней мере, некоторые встроенные SRAM, как у некоторых контроллеров.
источник
/electronics//a/311839/111920 содержит ссылку http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2 которая описывает Процесс загрузки современного процессора Intel в мучительных деталях.
TL; DR: Нет. Во время загрузки действительно существует фаза, когда микросхемы ОЗУ не используются, и процессор работает только со своим внутренним кешем, выполняющим роль временного ОЗУ. Но это очень рано в процессе загрузки BIOS, и одна из первых вещей, которые делает BIOS, - это инициализация RAM, чтобы иметь возможность использовать ее. Работающий там машинный код очень специализированный, очень ручной.
После этого самого раннего этапа оперативная память необходима для всего. Это означает, что вы даже не сможете войти в BIOS, получить видеосигнал или намного меньше загружаться с любого носителя без ОЗУ.
источник