Передача переменной скрипта в команду, которая запрашивает ввод данных пользователем

Инструкции загрузки/сохранения могут обращаться только к виртуальной памяти. Все они проходят через MMU. MMU всегда преобразует адреса, используя текущую таблицу страниц.

Linux разделяет память на «Low» и «High» только на 32 -битных процессорах. 32-битный виртуальный адрес -идентифицирует одно из 4 ГБ различных местоположений. Чтобы получить доступ к более чем 4 ГБ различных областей физической памяти, мы должны использовать временные виртуальные сопоставления.

Посмотрите официальный документ:linux -5.0/Documentation/vm/highmem.rst

The general recommendation is that you don't use more than 8GiB on a 32-bit machine - although more might work for you and your workload, you're pretty much on your own - don't expect kernel developers to really care much if things come apart.

Помимо :"логический адрес ядра" означает тип виртуального адреса, который указывает внутри постоянного отображения младшей памяти. Этот термин использовался в отдельной книге по Linux. Он не используется вне контекста этой книги.

Вопрос :В чем «преимущество» постоянного отображения очень большой области физической памяти, т. е. «мало памяти»?

Ответ :Это означает, что большая часть кода ядра Linux может избежать дополнительной сложности и снижения производительности при работе с "высокой памятью". т.е. необходимость создания временных сопоставлений. Это особенно важно, учитывая, что большой объем памяти имеет отношение только к устаревшему 32-разрядному -процессору.

Большая часть кода ядра может размещаться внутри малой памяти. Большинству кода ядра не требуется большой объем оперативной памяти. Исключением является то, что Linux позволяет размещать кэш страниц в верхней памяти. Таким образом, код ядра, который касается кеша страниц, должен знать об этом.

Даже буферы сокета (сети )не поддерживают highmem. Пример:https://www.airship.com/blog/linux-kernel-tuning-for-c500k/

0
30.09.2020, 17:15
1 ответ

Если pushcommand просто читает сначала имя пользователя, а затем пароль из стандартного ввода, разделенные новой строкой, вы можете сделать следующее:

echo "$username\n$password" | pushcommand

Вызов "echo" здесь выводит переменные имени пользователя и пароля в отдельных строках.
"|" означает «взять вывод команды слева и передать его в качестве ввода команде справа». Эта конструкция называется «конвейером» в сценариях оболочки.

Для сценариев более сложных взаимодействийЯ бы рекомендовал взглянуть на expect или, возможно, kermit . Чтобы получить помощь с expect или kermit, вам нужно опубликовать пример того, как на самом деле выглядит интерактивное использование pushcommand, например. какие подсказки он отображает и так далее.

0
18.03.2021, 23:01

Теги

Похожие вопросы