Задачи на СИ

Отменен
Заказ
4958841
Раздел
Программирование
Предмет
Основы программирования
Антиплагиат
Не указан
Срок сдачи
31 Окт 2022 в 23:55
Цена
Договорная цена
Блокировка
10 дней
Размещен
3 Окт 2022 в 09:41
Просмотров
87
Описание работы

Формат сдачи следующий: patch с изменениями и собранное ядро необходимо отправить в качестве решения. Ядро должно быть собрано оптимально для запуска на QEMU. Размер ядра вместе с initrd не должен быть больше 16mb.

Задача 1

Необходимо создать модуль ядра, с которым можно взаимодействовать через символьное устройство. Модуль должен реализовывать простой телефонный справочник. Справочник для каждого пользователя хранит имя, фамилию, возраст, номер телефона, электронную почту.

Необходимо:

  1. уметь возвращать все данные по заданной фамилии пользователя;
  2. уметь добавлять нового пользователя;
  3. уметь удалять заданного пользователя.

Необходимо разработать и зарегистрировать в ядре системные функции, которые упрощают взаимодействие с символьным устройством, созданным в первом задании. Должно быть реализовано три функции:

  1. long get_user(const char* surname, unsigned int len, struct user_data* output_data);
  2. long add_user(struct user_data* input_data);
  3. long del_user(const char* surname, unsigned int len).
Задача 2

Необходимо разработать модуль, который будет собирать статистику о пользователе, а именно считать сколько символов было набрано на клавиатуре за последнюю минуту и выводить этот результат в логи.

Для реализации этой идеи предлагается реализовать обработчик прерывания клавиатуры. Обратите внимание, что современные USB-клавиатуры не подойдут для выполнения задания, так как они не занимают IRQ линию непосредственно - вам понадобится PS/2 клавиатура, которая занимает IRQ = 1. При использовании виртуальной машины проблем с этим возникнуть не должно: они умеют эмулировать PS/2.

Задача 3

Необходимо добавить в структуру task_struct новое поле, которое будет инкрементироваться каждый раз, когда процесс запланирован на выполнение. В /proc// экспортировать значение этого поля.

Задача 4

Необходимо создать модуль ядра, который будет регистрировать запись в procfs /proc/mmaneg. Используя эту запись, модуль может принимать следующие команды:

  • listvma: отобразить все VMA текущего процесса
  • findpage addr: найти va->pa адресную трансляцию в mm контексте текущего процесса и отобразить ее
  • writeval addr val: изменить содержимое unsigned long size для текущего процесса на val

Весь вывод должен быть доступен в dmesg.

Задача 5

Необходимо создать драйвер устройства для реализации FIFO среди процессов.

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу1 год
Средний балл4.52
СтоимостьНазначаете сами
ЭкспертВыбираете сами
Уникальность работыот 70%
Предыдущий заказ
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Прямой эфир