Зачем нам требовать, чтобы alloc_pages() возвращал указатель на страницу структуры в отличие от другой функции распределения памяти (get_free_pages(), kmalloc())? Пожалуйста, предоставьте прецедент. Связано ли это с распределением зоны HIGHMEM?Разница между возвращаемыми значениями alloc_pages() и get_free_pages()
ответ
alloc_pages(mask, order)
выделяет страницы 2order и возвращает экземпляр страницы структуры для представления начала зарезервированного блока. alloc_page (mask) - более короткая нотация для порядка = 0, если запрашивается только одна страница.
__get_free_pages(mask, order) and __get_free_page(mask)
работают так же, как и функции , но возвращают виртуальный адрес зарезервированного фрагмента памяти вместо экземпляра страницы.
kmalloc(size, mask)
резервирует область памяти размера байтов и возвращает указатель на пустоту в начале области. Если недостаточно памяти (очень маловероятная ситуация в ядре, но она должна всегда обслуживаться), результатом является нулевой указатель.
маскирующего также указывает сведения о запросе:
• memory zone
• behavior of allocator (blocking/unblocking request, etc.)
• e.g. GFP_KERNEL, GFP_ATOMIC, GFP_DMA, etc
alloc_pages() and __get_free_pages() : allocate pages, at low level
kmalloc() : allocate physically contiguous sequence of bytes
для получения дополнительной информации см professional linux kernel architecture by wolfgang mauerer
- 1. В чем разница между возвращаемыми значениями метода и их оставлением?
- 2. Разница между значениями и литералами
- 3. Проблема с возвращаемыми значениями
- 4. Ошибки с возвращаемыми значениями
- 5. Каковы различия между возвращаемыми значениями и кодированием побочных эффектов?
- 6. LatLng и расстояние между возвращаемыми неверными значениями на новых телефонах
- 7. разница между значениями дат
- 8. В чем разница между атрибутами файлов, возвращаемыми Cocoa и CoreFoundation?
- 9. Заполнение диаграммы значениями, возвращаемыми контроллером
- 10. Обработка исключений с возвращаемыми значениями
- 11. Поиск или поиск с несколькими значениями и несколькими возвращаемыми значениями
- 12. Разница между модулями и экзистенциальными значениями
- 13. Разница между строковыми литералами и строковыми значениями?
- 14. Разница между значениями GiST и GIN
- 15. разница между значениями DatetimeIndex и Timestamp колонком
- 16. разница между значениями шестнадцатеричных и нормальными типами
- 17. Разница между двумя строковыми значениями и теперь
- 18. Разница между передаваемыми значениями и ссылкой
- 19. Какой разница между значениями полукокса и символами
- 20. Дифференциация между возвращаемыми и возвращаемыми классами функций функции пользователя
- 21. Выполнение нескольких запросов, а затем поиск совпадений между возвращаемыми значениями
- 22. Разница между различными значениями kIOPMAssertionType
- 23. C++ Разница между двумя значениями
- 24. Связь между значениями интенсивности пикселей изображения и значениями, возвращаемыми read_imagef в OpenCL
- 25. mock/patch os.path.exists с несколькими возвращаемыми значениями
- 26. Нитевидный сетевой прослушиватель с возвращаемыми значениями
- 27. Что-то действительно немое с возвращаемыми значениями
- 28. Реализация переключения вида с возвращаемыми значениями
- 29. PHP, отправляющий данные формы с возвращаемыми значениями
- 30. Проблемы с возвращаемыми значениями для пользовательских функций
Что я хотел спросить, почему эти функции имеют различные возвращаемые значения, как в один возвращаемый логический адрес и другой указатель возврата на страницу структуры. Почему это так? ugh оба используют один и тот же спутник распределения. –
В ядре есть много мест, где необходимо работать со структурами страниц. Они особенно полезны в любой ситуации, когда вы имеете дело с высокой памятью, которая не имеет постоянного адреса в пространстве ядра. Так что 'alloc_pages() 'используются в этих ситуациях. – EnterKEY
Извините, что снова вас убьют, не могли бы вы рассказать мне, что вы подразумеваете под «постоянным адресом в пространстве ядра». Я понимаю разницу между виртуальным адресом, логическим адресом и физическим адресом и тем, как они связаны. Так вы можете связать с ними постоянный адрес в пространстве ядра. Спасибо заранее. –