Драйвер устройства Linux для системы SMP - PullRequest
1 голос
/ 17 февраля 2012

Я разработал драйвер блочного устройства Linux для устройства CD.Драйвер работает хорошо, но теперь существует требование, чтобы он работал в системе SMP.Когда я сделал тестовый запуск в системе SMP, я обнаружил, что производительность драйвера снижается.Скорость передачи данных для DATA CD значительно снизилась по сравнению с одноядерной системой.Поэтому я понимаю, что мой драйвер должен быть модифицирован, чтобы сделать его безопасным для SMP.

В моем драйвере я использовал: 1. Потоки ядра 2. Mutex 3. Семафор 4. Завершение

Моя SMP-система: ARM Cortex-A9 Dual Core 600 МГц

Может, кто-нибудь подскажет, какие факторы я должен учитывать при выполнении этого переноса?

1 Ответ

1 голос
/ 03 мая 2017

Обычно для систем SMP общие ресурсы (ресурсы ввода-вывода) и глобальные переменные должны обрабатываться таким образом, чтобы одновременное выполнение задачи не перезаписывало, не повреждало данные, для этого можно использовать spin_locks, семафоры и т. Д., Чтобы что только одно ядро ​​будет одновременно выполнять операции над этим блоком / задачей. Это логическая реализация, позволяющая определить потенциальные области риска в драйвере устройства, такие как ISR, операции чтения и записи, и определить несколько точек входа драйвера вашего устройства и центральной задачи (в драйвере), к которой они / будут направлены / идти.

...