ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
10 июля
312632
Evgeny_CD, Архитектор (06.03.2012 00:28, просмотров: 4497)
Нюансы Linux, MMU, драйвера. Может, кто поможет? Есть драйвер. Он аллокирует 2 больших (1Мбайт, скажем) физических куска памяти на себя, по разным физическим адресам. Один в кешируемой области, другой в некеширумой. Есть процесс. Он дергает драйвер, и тот возвращает ему 2 указателя - по одному на каждый кусок памяти выше. 1. Можно ли сделать так, чтобы эти 2 куска памяти легли непрерывно в адресное пространство процесса? Чтобы, скажем, на каждый из них ядро настроило по TLB, так, чтобы все вместе (с основным адресным пространством данных) оно адресовалось подряд? 2. Если "все подряд" сделать нельзя, то как тогда адресовать эти куски? Сказать, что по указателю такому-то лежит аццкий массив на 1 млн чаров? 3. Можно ли сделать так, чтобы при работе процесса не происходило манипуляций с MMU и обращений к системным процедурам работы с MMU? Т.е. у процесса есть свое пространство данных, на него настроена TLB, и есть по TLB на каждый из кусков. Если все обращения идут в пределах разрешенной области TLB, то все происходит быстро, никаких переключений TLB не происходит и т.д. 4. Можно ли ядрру линуха при сборке указать - вот такие-то регионы в памяти некешируемые. Т.е. таблицы MMU при работе с этими регионами надо настраивать так, чтобы ядро ставило бит некеширования. 5. Порты Linux на 926 ядро - там размер страницы MMU настраивается? Какие обычно страницы используют? 1M?