Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книга: Разработка приложений в среде Linux. Второе издание
13.2.4. Синхронизация областей памяти на диск
13.2.4. Синхронизация областей памяти на диск
Если для записи в файл используется карта памяти, модифицированные страницы памяти и файл будут в течение некоторого времени отличаться. Если процессу необходимо немедленно записать страницы на диск, для этого служит msync()
.
#include <sys/mman.h>
int msync(caddr_t addr, size_t length, int flags);
Первые два параметра, addr
и length
, устанавливают область для синхронизации с диском. Параметр flags
устанавливает, каким образом должны синхронизироваться память и диск. Он состоит из одного или нескольких перечисленных ниже флагов, объединенных с помощью битового "ИЛИ".
MS_ASYNC |
Модифицированные версии области памяти запланированы на "скорую" синхронизацию. Использовать можно только либо MS_ASYNC , либо MS_SYNC . |
MS_SYNC |
Модифицированные страницы в области памяти записываются на диск до возврата системного вызова msync() . Использовать можно только либо MS_ASYNC , либо MS_SYNC . |
MS_INVALIDATE |
Эта опция позволяет ядру выяснять, записываются ли изменения на диск. Хотя эта опция не дает гарантию того, что они не будут записаны, она сообщает ядру, что необходимость сохранения изменений отсутствует. Этот флаг применяется только при особых условиях. |
0 |
Передача 0 в msync() работает в ядрах Linux, хотя она не очень хорошо документирована. Она похожа на MS_ASYNC , но означает, что страницы должны записываться на диск при любом удобном случае. Обычно это значит, что они будут сбрасываться на диск при каждом следующем запуске потока ядра bdflush (обычно он запускается каждые 30 секунд), в то время как MS_ASYNC записывает страницы более интенсивно. |
Похожие страницы
- 13.2. Отображение в памяти
- Повреждения жесткого диска
- При копировании с жесткого диска на «флэшку» иногда появляется сообщение о дополнительной присоединенной информации, кот...
- Новая структура данных на диске: ODS11
- 3.2.1.2. Начальное выделение памяти: malloc()
- Установка системы на уже подготовленный жесткий диск
- Загрузочные дискеты и Live CD для Windows
- Жесткий диск
- Конфигурирование жестких дисков
- 6.1 Диски, разделы и тома
- Получение помощи по работе с книгой и компакт-диском
- Использование компакт-диска