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

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

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

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) Выделяет одну страницу памяти, обнуляет ее содержимое и возвращает указатель на ее логический адрес