|
НАЗВАНИЕ
ramdisk - блочно-ориентированное устройство памяти (псевдодиск).
ОПИСАНИЕ
Драйвер устройства ramdisk обеспечивает блочный интерфейс к памяти.
ramdisk можно использовать как и любое другое блочное устройство,
включая установку файловых систем с помощью mkfs(8). Существует
восемь типов доступных псевдодисков.
Характеристики файла ramdisk определяются малым числом устройства. Биты этого числа содержат информацию о размере устройства, его долговечности и номере одного из восьми псевдодисков.
Три младших бита малого числа устройства определяют, какое из восьми упомянутых псевдодисков будет использоваться.
Следующие четыре бита определяют размер этого псевдодиска. Размер ramdisk должен быть кратен 2 и должен быть не меньше 16K. Поскольку имеется 4 бита, то может быть 16 различных размеров, начиная с 16K и удваивая это значение при каждом единичном увеличении указателя размера. При этом будет получаться 16K, 32K, 64K и т.д.
Самый старший бит является указателем долговечности. Если он установлен, то этому псевдодиску будет постоянно выделяться заданная память, которая отключается только при перезагрузке системы. Постоянные псевдодиски могут резервироваться только привилегированным пользователем. Но когда постоянный псевдодиск зарезервирован (посредством его открытия), он может использоваться для чтения и записи всеми, кто имеет соответствующее разрешение в дескрипторе псевдодиска.
Если этот бит сброшен и если процессы, открывающие его, отсутствуют, то псевдодиск отключается. Для создания легко удалимого, но полу-постоянного псевдодиска используйте отдельный процесс для открытия и поддержания этого устройства в течение нужного времени.
Поскольку полный набор восьми псевдодисков поглотил бы 256 индексных дескрипторов, то при инсталляции системы создается только один ramdisk размеров 16K (/dev/ram00). Администратор системы может проанализировать существующий файл этого устройства, чтобы определить главное (большее) число устройства для создания других потребовавшихся псевдодисков. Все эти устройства будут иметь одинаковое главное число устройства.
В следующей таблице показано, как конструируется малое число устройство:
Структура малого числа устройства | |||||||||
---|---|---|---|---|---|---|---|---|---|
Описание | Долговечность | Размер (см. cлед. таб.) | Номер псевдодиска | Малое число устройства | |||||
16K (#1) (Временное) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
16K (#1) (Постоянное) | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 129 |
64K (#0) (Временное) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 16 |
512K (#7) (Постоянное) | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
Содержимое поля размера и соответствующий размер псевдодиска приведены в следующей таблице:
Биты размера | Размер устройства |
---|---|
0 0 0 0 | 16K |
0 0 0 1 | 32K |
0 0 1 0 | 64K |
0 0 1 1 | 128K |
0 1 0 0 | 256K |
0 1 0 1 | 512K |
0 1 1 0 | 1M |
0 1 1 1 | 2M |
1 0 0 0 | 4M |
1 0 0 1 | 8M |
1 0 1 0 | 16M |
1 0 1 1 | 32M |
1 1 0 0 | 64M |
1 1 0 1 | 128M |
1 1 1 0 | 256M |
1 1 1 1 | 512M |
Для создания устройства ramdisk выполните следующие действия:
mknod device_name b_or_c major_device_number minor_device_numberгде b_or_c - "b" или "c". "b" предназначается для блочных устройств, его вам и нужно задать. Главным числом всегда будет 31. Малое число определяется по приведенной выше таблице. Малое число это сумма значений из трех колонок.
Долговечность:
постоянное устройство - 128, временное - 0.Размер:
16K = 0 124K = 24 1M = 48 8M = 72 32K = 8 256K = 32 2M = 56 16M = 80 64K = 16 512K = 40 4M = 64 32M = 88Номер псевдодиска: 0 - 7. Примечание: Доступно только 8 устройств. Два устройства с различными размерами не могут иметь одинаковый номер.
Например, при создании постоянного псевдодиска размером 64K можно выбрать малое число устройства в пределах от 144 до 151. Если номер диска будет 1, то соответствующая команда примет вид:
mknod /dev/ram64 b 31 145
mkfs device_name size_of_file_in_Bsize_blocksВ данном примере команда для создания файловой системы размером 64K будет выглядеть так:
mkfs /dev/ram64 64
mount device_name mount_pointКоманда монтировки 64-килобайтового псевдодиска на /mnt будет:
mount /dev/ram64 /mnt
Для создания файловой системы на временном псевдодиске файл устройства нужно открыть между командами mkfs и mount. Иначе псевдодиск будет создан при запуске команды mkfs и отключен по ее завершении. А когда псевдодиск смонтирован, он быдет открыт, пока его не демонтируют.
Следующий фрагмент программы оболочки демонстрирует использование mkfs для временного псевдодиска размером 512K и его монтировку:
( /etc/mkfs /dev/ram40 512 /etc/mount /dev/ram40 /mnt ) < /dev/ram40
ПРИМЕЧАНИЯ
Псевдодиски должны занимать непрерывную область памяти. Если
свободная память фрагментируется, то открытие псевдодиска может не
удасться, даже если общей памяти будет достаточно. В идеале все
псевдодиски должны резервироваться при запуске системы. Это
предохраняет псевдодиски от влияния фрагментации памяти.
Псевдодиски создаются для использования в специализированных прикладных программах. Во многих случаях при использовании псевдодисков вы можете наблюдать ухудшение эффективности функционирования системы, потому что система UNIX обычно способна лучше использовать память.
ФАЙЛЫ
/dev/ram00
СМ. ТАКЖЕ
mkfs(8), mount(8), mknod(1)
|