Формат сдачи следующий: patch с изменениями и собранное ядро необходимо отправить в качестве решения. Ядро должно быть собрано оптимально для запуска на QEMU. Размер ядра вместе с initrd не должен быть больше 16mb.
Задача 1Необходимо создать модуль ядра, с которым можно взаимодействовать через символьное устройство. Модуль должен реализовывать простой телефонный справочник. Справочник для каждого пользователя хранит имя, фамилию, возраст, номер телефона, электронную почту.
Необходимо:
Необходимо разработать и зарегистрировать в ядре системные функции, которые упрощают взаимодействие с символьным устройством, созданным в первом задании. Должно быть реализовано три функции:
Необходимо разработать модуль, который будет собирать статистику о пользователе, а именно считать сколько символов было набрано на клавиатуре за последнюю минуту и выводить этот результат в логи.
Для реализации этой идеи предлагается реализовать обработчик прерывания клавиатуры. Обратите внимание, что современные USB-клавиатуры не подойдут для выполнения задания, так как они не занимают IRQ линию непосредственно - вам понадобится PS/2 клавиатура, которая занимает IRQ = 1. При использовании виртуальной машины проблем с этим возникнуть не должно: они умеют эмулировать PS/2.
Задача 3Необходимо добавить в структуру task_struct новое поле, которое будет инкрементироваться каждый раз, когда процесс запланирован на выполнение. В /proc// экспортировать значение этого поля.
Задача 4Необходимо создать модуль ядра, который будет регистрировать запись в procfs /proc/mmaneg. Используя эту запись, модуль может принимать следующие команды:
Весь вывод должен быть доступен в dmesg.
Задача 5Необходимо создать драйвер устройства для реализации FIFO среди процессов.
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |