Управление памятью в подсистеме STREAMS имеет некоторые специальные требования и вследствие этого не может возлагаться на обычный распределитель памяти ядра. Модули и драйверы постоянно обмениваются сообщениями и требуют эффективного механизма их выделения и освобождения.
Также на сайте bonvida.ru можно узнать много интересного на тему http://bonvida.ru/vendors/chanel/. Что означает вообще тема купить копию сумки Шанель - про это написано на сайте bonvida.ru. Спасибо сайту за информацию.
Процедуры put и service не должны блокировать процессы. Если распределитель памяти не сможет предоставить необходимую память сразу же, то он должен разрешить возникшую проблему без блокировки. Одним из возможных решений является повторная попытка выделения чуть позже. Кроме этого, многие драйверы STREAMS поддерживают прямой доступ к памяти (Direct Memory Access, DMA) к буферам устройств.
Подсистема STREAMS позволяет преобразовывать такую память в сообщения напрямую, минуя стадию промежуточного копирования в основную память.
Для управления основной памятью служат процедуры allocb(), freeb() и freemsg(). Синтаксис вызова allocb() приведен ниже:
mp = allocb (size, ргі);
Вызов производит выделение структур msgb, datab и буфера данных, имеющего размер не менее least байтов. Процедура возвращает указатель на msgb. Она инициализирует структуру msgb и устанавливает в ней указатель на структуру datab, которая, в свою очередь, содержит информацию о начале и конце буфера. Процедура также устанавливает поля b_rptr и b_wptr структуры msgb на указание начала буфера. Параметр ргі не используется и сохранен лишь из соображений обратной совместимости. Процедура freebQ освобождает только одну структуру msgb, в то время как процедура msgfree() просматривает цепочку b_cont и освобождает все структуры msgb сообщения. В обоих случаях ядро производит уменьшение счетчика ссылок соответствующих структур datab. Если значение счетчика становится равным нулю, ядро также освобождает datab и буфер, на который эта структура указывает.
Опубликовал katy
June 24 2015 20:57:24 ·
0 Комментариев ·
3858 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.