Читаем Программирование для Linux. Профессиональный подход полностью

 /* Если функция вызывается впервые, открываем файл /dev/random

    и сохраняем его дескриптор. */

 if (dev_random_fd == -1) {

  dev_random_fd = open("/dev/random", O_RDONLY);

  assert(dev_random_fd != -1);

 }


 /* Читаем столько байтов, сколько необходимо для заполнения

    целочисленной переменной. */

 next_random_byte = (char*)&random_value;

 bytes_to_read = sizeof(random_value);

 /* Цикл выполняется до тех пор, пока не будет прочитано

    требуемое количество байтов. Поскольку файл /dev/random

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

    при длительном отсутствии активности операция чтения

    может быть заблокирована или возвращать

    лишь один байт за раз. */

 do {

  int bytes_read;

  bytes_read =

   read(dev_random_fd, next_random_byte, bytes_to_read);

  bytes_to_read -= bytes_read;

  next_random_byte += bytes_read;

 } while (bytes_to_read > 0);

 /* Вычисляем случайное число в правильном диапазоне. */

 return min + (random_value % (max - min + 1));

}

6.5.5. Устройства обратной связи

Устройство обратной связи позволяет сымитировать блочное устройство с помощью обычного дискового файла. Представьте жесткий диск, в котором данные находятся не в дорожках и секторах, а в файле с именем disk-image (естественно, сам этот файл должен размещаться на реальном диске, размер которого больше имитируемого).

Устройства обратной связи называются /dev/loop0,

/dev/loop1 и т.д. Каждому из них соответствует одно виртуальное блочное устройство. Создавать такие устройства может только суперпользователь.

Устройство обратной связи используется так же, как и любое другое блочное устройство. В частности, на нем можно создать файловую систему и смонтировать ее подобно файловой системе обычного диска или раздела. Такая файловая система, целиком размещаемая в дисковом файле, называется виртуальной файловой системой (ВФС).

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

1. Создайте пустой файл, который будет содержать образ ВФС. Размер файла должен соответствовать видимому размеру виртуальной файловой системы после ее монтирования.

Проще всего создать файл фиксированного размера с помощью команды dd. Эта команда копирует блоки (по умолчанию каждый из них имеет размер 512 байтов) из одного файла в другой. Лучший источник байтов для копирования — устройство /dev/zero.

Файл disk-image размером 10 Мбайт создается следующим образом:

% dd if=/dev/zero of=/trap/disk-image count=20480

20480+0 records in

20480+0 records out

% ls -l /tmp/disk-image

-rw-rw---- 1 root root 10485760 Mar 8 01:56 /trap/disk-image

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

Файловая система может иметь любой тип. Команда mke2fs создает файловую систему типа ext2 (чаще всего используется в жестких дисках Linux-систем). Поскольку команда обычно работает с блочными устройствами, она потребует подтверждение:

% mke2fs -q /tmp/disk-image

mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09

disk-image is not a block special device.

Proceed anyway? (y,n) y

Опция -q подавляет вывод статистики файловой системы.

Теперь файл disk-image содержит новую файловую систему, как если бы это был жесткий диск емкостью 10 Мбайт.

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С

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

Дэниэл Дж. Пак , Стивен Ф. Барретт

Программирование, программы, базы данных / Компьютерное «железо» / Программирование / Книги по IT