Мобильное программирование приложений реального времени в стандарте POSIX

       

Рекомендательные интерфейсы


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

В стандарте POSIX-2001 предусмотрена только оптимизация работы с файлами, которая может затрагивать следующие аспекты осуществляемого приложением ввода/вывода:

  • последовательный доступ;
  • кэширование;
  • передача данных;
  • предварительное резервирование долговременной памяти.

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

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

Описанные возможности реализуют функции posix_fadvise(), posix_fallocate(), posix_madvise() и posix_memalign() (см. листинг 7.9).

#include <fcntl.h> int posix_fadvise (int fd, off_t offset, size_t len, int advice);

#include <fcntl.h> int posix_fallocate (int fd, off_t offset, size_t len);

#include <sys/mman.h> int posix_madvise (void *addr, size_t len, int advice);

#include <stdlib.h> int posix_memalign (void **memptr, size_t alignment, size_t size);

Листинг 7.9. Описание функций рекомендательных интерфейсов. (html, txt)

Функция posix_fadvise() информирует реализацию об ожидаемом поведении приложения по отношению к части файла, ассоциированного с открытым дескриптором fd, которая начинается с позиции offset и имеет длину len байт (если значение аргумента len равно нулю, рекомендация распространяется до конца файла).

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

POSIX_FADV_NORMAL

Подразумеваемое поведение – отсутствие рекомендаций.

POSIX_FADV_SEQUENTIAL

Предполагается, что приложение будет осуществлять доступ к указанной части файла последовательно, от меньших смещений к большим.

POSIX_FADV_RANDOM

Специфицирует случайный доступ.

POSIX_FADV_WILLNEED

Предполагается, что данные из указанной части файла скоро понадобятся.

POSIX_FADV_DONTNEED

Предполагается, что данные из указанной части файла в ближайшее время не понадобятся.

POSIX_FADV_NOREUSE

Специфицирует однократный доступ.

Нормальный результат функции posix_fadvise() равен нулю; при обнаружении ошибки возвращается ее номер.


© 2003-2007 INTUIT.ru. Все права защищены.

Содержание раздела