RAMDISK(HW)

НАЗВАНИЕ
ramdisk - блочно-ориентированное устройство памяти (псевдодиск).

ОПИСАНИЕ
Драйвер устройства ramdisk обеспечивает блочный интерфейс к памяти. ramdisk можно использовать как и любое другое блочное устройство, включая установку файловых систем с помощью mkfs(8). Существует восемь типов доступных псевдодисков.

Характеристики файла ramdisk определяются малым числом устройства. Биты этого числа содержат информацию о размере устройства, его долговечности и номере одного из восьми псевдодисков.

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

Следующие четыре бита определяют размер этого псевдодиска. Размер ramdisk должен быть кратен 2 и должен быть не меньше 16K. Поскольку имеется 4 бита, то может быть 16 различных размеров, начиная с 16K и удваивая это значение при каждом единичном увеличении указателя размера. При этом будет получаться 16K, 32K, 64K и т.д.

Самый старший бит является указателем долговечности. Если он установлен, то этому псевдодиску будет постоянно выделяться заданная память, которая отключается только при перезагрузке системы. Постоянные псевдодиски могут резервироваться только привилегированным пользователем. Но когда постоянный псевдодиск зарезервирован (посредством его открытия), он может использоваться для чтения и записи всеми, кто имеет соответствующее разрешение в дескрипторе псевдодиска.

Если этот бит сброшен и если процессы, открывающие его, отсутствуют, то псевдодиск отключается. Для создания легко удалимого, но полу-постоянного псевдодиска используйте отдельный процесс для открытия и поддержания этого устройства в течение нужного времени.

Поскольку полный набор восьми псевдодисков поглотил бы 256 индексных дескрипторов, то при инсталляции системы создается только один ramdisk размеров 16K (/dev/ram00). Администратор системы может проанализировать существующий файл этого устройства, чтобы определить главное (большее) число устройства для создания других потребовавшихся псевдодисков. Все эти устройства будут иметь одинаковое главное число устройства.

В следующей таблице показано, как конструируется малое число устройство:

Структура малого числа устройства
ОписаниеДолговечностьРазмер (см. cлед. таб.)Номер псевдодискаМалое число устройства
16K (#1)
(Временное)
000000011
16K (#1)
(Постоянное)
10010000129
64K (#0)
(Временное)
0000000016
512K (#7)
(Постоянное)
101011111

Содержимое поля размера и соответствующий размер псевдодиска приведены в следующей таблице:

Биты размераРазмер устройства
0 0 0 016K
0 0 0 132K
0 0 1 064K
0 0 1 1128K
0 1 0 0256K
0 1 0 1512K
0 1 1 01M
0 1 1 12M
1 0 0 04M
1 0 0 18M
1 0 1 016M
1 0 1 132M
1 1 0 064M
1 1 0 1128M
1 1 1 0256M
1 1 1 1512M

Для создания устройства ramdisk выполните следующие действия:

  1. Создание дескриптора устройства
    Вначале вы должны создать устройство, на котором будет располагаться псевдодиск. Соответствующая команда имеет вид:
    
       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
    
    
  2. Создание файловой системы
    Следующая команда создает на псевдодиске файловую систему:
    
       mkfs device_name size_of_file_in_Bsize_blocks
    
    
    В данном примере команда для создания файловой системы размером 64K будет выглядеть так:
    
       mkfs /dev/ram64 64
    
    
  3. Монтировка файловой системы
    Следующая команда монтирует выбранное устройство на заданном месте:
    
       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)