Каким образом кэш страниц отображается в ядре на 64-битных архитектурах x86?

Вы используете Multicraft? если вы используете multicraft, команда netstat -anp | grep: 21 вернет

tcp        0      0 YOUR_IP_ADRESS:21            0.0.0.0:*                   LISTEN      14250/multicraft
7
01.01.2017, 00:59
1 ответ

На современном 64 -битном x86 Linux?

Да. Он вызывает kmap()или kmap_atomic(), но на x86 -64 они всегда будут использовать сопоставление идентификаторов. x86 -32 имеет специальное определение, но я думаю, что x86 -64 использует общее определение в include/linux/highmem.h .

И да, для сопоставления личных данных используются огромные страницы размером 1 ГБ.

Статья LWN, в которой упоминается kmap _atomic .

Я нашел kmap _atomic (), посмотрев код PIO . [*]

Наконец, при чтении ()/записи ()копировать данные из/в страничный кеш:

общий _файл _буферизованный _чтение-> копирование _страница _в _iter-> kmap _атомный ()снова.


[ *] Я посмотрел на PIO, потому что понял, что при выполнении DMA в/из кэша страниц ядро ​​может избежать использования любого отображения. Ядро может просто разрешить физический адрес и передать его оборудованию :-). (В соответствии с IOMMU ). Хотя ядру потребуется сопоставление, если оно хочет сначала вычислить контрольную сумму или зашифровать данные.

1
27.01.2020, 20:19

Теги

Похожие вопросы