Для ramsfs / initrams устройство для кэширования файловой системы «пусто». Если вы посмотрите описание в /Documentation/filesystems/ramfs-rootfs-initramfs.txt
:
Обычно все файлы кэшируются в памяти Linux. Страницы данных, считанные из резервного хранилища (обычно это блочное устройство, на котором установлена файловая система), хранятся на случай, если они снова понадобятся, но помечены как чистые (бесплатные) в случае, если {{1 }} Системе виртуальной памяти нужна память для чего-то еще. Точно так же данные , записанные в файлы, помечаются как чистые, как только они были записаны в резервное хранилище , но сохраняются для целей кэширования, пока виртуальная машина не перераспределит память . Подобный механизм (кэш-память dentry) значительно ускоряет доступ к каталогам .
У ramfs нет резервного хранилища. Файлы, записанные в ramfs, как обычно выделяют данные и кеш страниц, но их некуда записать. Это означает, что страницы никогда не помечаются как чистые, поэтому они не могут быть освобождены с помощью {{ 1}} ВМ, когда она хочет переработать память.
Таким образом, «механизм раскрытия внутренней структуры кеша как файловой системы» не является неправильным, но я бы не описал его так: это файловая система, которая использует обычную внутреннюю структуру кеша, но не имеет места для «резервного копирования» (как и ramdisk ), поэтому он только живет в кэше, а механизмы аннулирования и обратной записи страниц никогда не используются.
Что касается файла cpio
, снова посмотрите на ramfs-rootfs-initramfs.txt
:
Старый initrd всегда был отдельным файлом, а архив initramfs - {{ 1}} связан с образом ядра Linux.(Каталог linux - * / usr предназначен для создания этого архива во время сборки.)
Итак, cpio
загружается с использованием того же метода, что и ядро, которое может быть с блочного устройства, или по сети, или через голубятню, или что-то еще. Неважно. Об этом позаботится загрузчик, ядру не нужен драйвер файловой системы.
Позиционные параметры , $1
, $2
,..., $9
содержат аргументы командной строки, передаваемые текущей оболочке или функции оболочки. Строка $100
будет интерпретироваться как $1
, за которой следуют два нуля. Это будет 00
, если $1
не установлено или пусто.
Установка трех первых позиционных параметров явно в скрипте и тестирование:
set -- a b c
echo "$100 $200 $300"
Это приводит к выводу
a00 b00 c00
Поскольку к позиционным параметрам за пределами 9 необходимо получить доступ, например, с помощью. ${10}
, между $1
, за которым следует 00
, и «позиционным параметром 10 или 100» (нет неоднозначности, так как скобок )нет.
Если бы вы хотели напечатать литеральную строку $100
, вам пришлось бы либо экранировать $
из оболочки, либо использовать одинарные кавычки:
echo \$100
echo '$100'