Linux имеет модульную инфраструктуру планировщика ввода-вывода - вы можете написать новый планировщик ввода-вывода в качестве модуля ядра, загрузить его в ядро, использовать его для определенных (или всех) блочных устройств ввода-вывода, а затем удалить его.
Смотрите здесь, как выбрать существующий планировщик ввода-вывода. Боюсь, что для написания новых вам придется читать исходный код: -)