Рекомендательные интерфейсы
Напомним, что рекомендательные интерфейсы – это средство проинформировать операционную систему о поведении мобильного приложения, чтобы ОС могла принять меры для оптимизации его (приложения) обслуживания.
В стандарте 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. Все права защищены. |