Получение страниц заполненных нулями

We use cookies. Read the Privacy and Cookie Policy

Получение страниц заполненных нулями

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

unsigned long get_zeroed_page(unsigned int gfp_mask);

Эта функция аналогична функции __get_free_page(), за исключением того, что после выделения страницы памяти она заполняется нулями. Это полезно для страниц памяти, которые возвращаются в пространство пользователя, так как случайный "мусор", который находится в страницах памяти, может оказаться не совсем случайным и случайно может содержать некоторые (например, секретные) данные. Все данные необходимо обнулить или очистить каким-либо другим образом перед тем, как возвращать информацию в пространство пользователя, чтобы при этом не пострадала безопасность системы. В табл. 11.2 приведен список всех низкоуровневых средств выделения памяти.

Таблица 11.2. Низкоуровневые средства выделения памяти

Функция Описание alloc_page(gfp_mask) Выделяет одну страницу памяти и возвращает указатель на соответствующую ей структуру page alloc_pages(gfp_mask, order) Выделяет 2order страниц памяти и возвращает указатель на структуру page первой страницы __get_free_page(gfp_mask) Выделяет одну страницу памяти и возвращает указатель на ее логический адрес __get_free_pages(gfp_mask, order) Выделяет 2order страниц памяти и возвращает указатель на логический адрес первой страницы get_zeroed_page(gfp_mask) Выделяет одну страницу памяти, обнуляет ее содержимое и возвращает указатель на ее логический адрес