Коммит b6af4451 создал по автору OMP Education's avatar OMP Education
Просмотр файлов

Add modules. #3

владелец c3a03494
# Тесты по теме «Отладка на уровне ядра»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какой формат имеет файл модуль ядра?
---
* exe
* **elf**
* ko
* so
## Single choice
Куда осущуствляет запить функция pr_info в модуле ядра?
---
* В файл /var/log/kernel.log
* В файл /var/log/system.log
* В буфер dmesg
* **В буфер в памяти**
## Single choice
Какая команда служит для загрузки модуля ядра?
---
* ld
* ldd
* init_mod
* **insmod**
## Single choice
Можно ли использовать функция printf для выдачи отладочных сообщений в модуле ядра?
---
* да
* **нет**
* можно, если модуль загружен при помощи modprobe
* можно, если ядро собрано с опцией CONFIG_DYNAMIC_DEBUG
## Single choice
Какая функция модуля ядра вызовется при вызове команды insmod?
---
* **init_module**
* main
* start
* __init__
## Single choice
Какая функция модуля ядра вызовется при вызове команды rmmod?
---
* **cleanup_module**
* main
* probe
* release
## Single choice
Что должна возвращать функция init_module в случае успешной инициализации модуля?
---
* **0**
* 1
* 0xffffffff
* -1
Это отличие свёрнуто
Это отличие свёрнуто
# Задания по теме «Модули ядра»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Разработайте модуль ядра для символьного драйвер, функция read которого будет возвращать строку, содержащую запрашиваемое число символов '0'.
2. Вставьте модуль в ядро и создайте специальный файл устройства.
3. Разработайте прикладную программу для чтения и печати данных из драйвера.
# Тесты по теме «Модули ядра»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Что содержит специалный файл устройства /dev/foodev?
---
* драйвер символьного или блочного устройства
* конфигурацию драйвера символьног или блочного йстройства
* разделяемую библиотеку для работы с устройством
* **тип драйвера, старший и младший номер устройства**
## Single choice
Для чего служит структура inode в ядре Linux?
---
* **соответветствует файлу на диске и содержит информацию о нем**
* соответветствует открытому процессом файлу
* соответветствует смонтированной файловой системе
* содержит указатели на реализации функций open, close, read, write, ioctl и др
## Single choice
Для чего служит структура file в ядре Linux?
---
* соответветствует файлу на диске и содержит информацию о нем
* **соответветствует открытому процессом файлу**
* соответветствует смонтированной файловой системе
* содержит указатели на реализации функций open, close, read, write, ioctl и др
## Single choice
Для чего служит структура file_operations в ядре Linux?
---
* соответветствует файлу на диске и содержит информацию о нем
* соответветствует открытому процессом файлу
* соответветствует смонтированной файловой системе
* **содержит указатели на реализации функций open, close, read, write, ioctl и др**
## Single choice
Структура file_operations служит указатель ssize_t (* read )(struct file fl*, char * buf, size_t len, loff_t *ofs). Какую функцию должен использовать драйвер для копирования данных в буфер buf?
---
* memcpy
* strcpy
* **copy_to_user**
* copy_from_user
## Single choice
Структура file_operations служит указатель ssize_t (* write )(struct file fl*, char * buf, size_t len, loff_t *ofs). Какую функцию должен использовать драйвер для копирования данных из буфера buf?
---
* memcpy
* strcpy
* copy_to_user
* **copy_from_user**
## Single choice
Какую функцию необходимо использовать в модуле ядра для динамического выделения памяти?
---
* malloc
* calloc
* new
* **kmalloc**
Это отличие свёрнуто
# Задания по теме «Ядро Linux»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Установить инструменты для сборки ядро Linux.
2. Скачать ядро Linux.
3. Скачать и наложить rt-patch.
4. Собрать новое ядро с rt-patch, установить и запустить операционную систему с новым ядром Linux с наложенным rt-patch.
# Тесты по теме «Ядро Linux»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какая утилита используется обычно для сборки майнлайн ядра Linux?
---
* cmake
* **make**
* gradle
* maven
* basel
## Single choice
На каком языке ведется разработка драйверов для современного ядра Linux?
---
* Assembler
* C
* **C и rust**
* C и С++
## Single choice
Что помещается в файл vmlinux после сборки ядра?
---
* Виртуальная машина kvm
* Виртуальная машина для docker
* **Ядро Linux**
* Nano kernel для виртуальной машины Linux
* Рисунок пингвина, выполненный символами ASCII?
* Таблица символов ядра Linux
## Single choice
Каким компилятором C можно собрать современное ядро Linux?
---
* Любым компилятором для языка С для соответствующей аппаратной платформы
* **Только компилятором gcc и clang**
* только при помощи gcc
* gcc и g++
## Single choice
Можно ли вставить при помощи insmod ko файл модуля ядра, собранный для одной версии ядра в ядро Linux другой версии?
---
* Вставить нельзя
* Вставить можно
* **Вставить c помощью клча -f**
## Single choice
Назовите основную причину того, что ядро Linux предотвращает загрузку драйвера, собранного для другой версии ядра?
---
* Могли изменится системные вызовы
* Мог изменится формат передачи параметров в системные вызовы
* **Могли измениться параметры функций ядра и структур данных ядра**
## Single choice
Что минимально нужно для сборки из исходных кодов out of tree драйвера для другой версии ядра?
---
* **заголовочные файлы ядра**
* Весь исходный код ядра для выбранной версии ядра
* Файл vmlinux
* Файл vmlinuz
## Single choice
Какие файлы порождает make для x86_64 ядра Linux?
---
* vmlinux и dtb
* **vmlinux, initramfs.img и system.map**
* .config
* KMake и .config
## Single choice
Что содержит файл .config?
---
* Описание параметров аппаратуры (номера прерываний, адреса портов ввода-вывода) для x86 платформы
* **Список выбранных флагов компиляции, определяющих какие компоненты входят в собираемое ядро Linux**
* Конфигурацию загрузчика grub
* конфигурацию загружаемых сервисов systemd
## Single choice
Что делает команда make install для x86_64 ядра Linux?
---
* Собирает deb пакет для ядра Linux
* **Помещает vmlinux, initramfs и map файл в каталог /boot и добавляет строку с записью для запуска ядра в grub.conf**
* Компилирует vmlinux, initramfs и map
* Записывает ядро Linux и dtb в EMMC
## Single choice
Что содержит dtb файл для arm SOC?
---
* Краш дамп ядра
* **Бинарную версию device tree**
* Текстовую версию device tree
* Информацию об опциях компиляции, определяющих какие компоненты входят в ядро Linux
## Single choice
Что содержит dts файл?
---
* Краш дамп ядра
* Бинарную версию device tree
* **Текстовую версию device tree**
* Информацию об опциях компиляции, определяющих какие компоненты входят в ядро Linux
## Single choice
Для чего нужна программа dtc?
---
* Для задания значения переменной HERZ
* Для редактирования initramfs
* **Для компиляции device tree в бинарную форму**
* Для отладки модулей ядра
## Single choice
Что обычно является источником информации об конфигурации аппаратного обеспечения SOC для ядра Linux на arm платформе?
---
* **Device tree**
* BIOS
* ACPI
* systemd
## Single choice
Что содержит System.map файл для ядра Linux?
---
* **Содержит список имен символов ядра и их адресов**
* Информацию об опциях компиляции, определяющих какие компоненты входят в ядро Linux
* Бинарную версию device tree
* Описание параметров аппаратуры (номера прерываний, адреса портов ввода-вывода) для x86 платформы
## Single choice
Является ли system.map файл обязательным для загрузки ядра Linux?
---
* Да
* **Нет**
* Да, на не x86 процессорах
* Да, на x86 платформе
Это отличие свёрнуто
# Задания по теме «Подсистема управления памятью»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Разработайте символьный драйвер, функции read и write которого будет позволять выполнять передачу данных через буфер в ядре между процессами.
2. Размер буфера должен определяться при помощи ioctl.
3. Вставьте модуль в ядро и создайте специальный файл устройства.
4. Разработать прикладные программы:
* для записи данных в драйвер;
* для чтения и печати данных из драйвера.
# Тесты по теме «Подсистема управления памятью»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какая из функций может использоваться для выделения памяти в модуле ядра?
---
* malloc
* **kmalloc**
* ioremap
* open
* reserve
## Single choice
Какая функция может использоваться для обеспечения доступа по физическому аддресу памямяти устройства ввода-вывода?
---
* malloc
* kmalloc
* **ioremap**
* open
* reserve
## Single choice
Какой адрес возращает функция kmalloc(GFP_KERNEL,1000), если она вызвана в функции read символьного драйвера?
---
* **Логический адрес в адресном пространстве ядра**
* Логический адрес в адресном пространстве пользовательского процесса
* Физический адрес
* Адрес шины
## Single choice
Какой адрес возращает функция ioremap, если она вызвана в функции open символьного драйвера?
---
* **Логический адрес в адресном пространстве ядра**
* Логический адрес в адресном пространстве пользовательского процесса
* Физический адрес
* Адрес шины
## Single choice
Для чего используется функция ioremap?
---
* **Для отображения физической области памяти в адресное пространтсво пользовательского процесса**
* Для выделения области памяти
* Для резервирования области памяти
* Для информирования ядра о том, что драйвер планирует использовать область памяти
Это отличие свёрнуто
# Задания по теме «Сетевая подсистема»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Разработать минимальный сетевой драйвер заглушку, который будет:
* иметь реализацию функции ndo_start_xmit;
* функция ndo_start_xmit будет печатать в 16 формате данные, получаемые в пакете sk_buff.
2. Разработать пользовательскую программу отправки пакетов, использующую raw сокеты.
3. Вставить драйвер в ядро и протестировать отправку пакетов при помощи разработанной программы. Убедиться при помощи dmesg, что разработанный драйвер получает пакеты в ndo_start_xmit.
# Тесты по теме «Сетевая подсистема»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какая структура в ядре Linux соответствует сетевому драйверу?
---
* **struct net_device**
* strict file_operations
* struct dev
* struct cdev
## Single choice
В виде чего обычно оформляется сетевой драйвер в Linux?
---
* **Модуль ядра**
* Модуль библиотеки glibc
* Сервис Systemd
* демон ядра
## Single choice
Какая структура представляет в сетевом стеке Linux сетевой пакет?
---
* dev
* **sk_buff**
* msg
* kern_msg
## Single choice
Какая функция в сетевом драйвере отвечает за отправку пакета?
---
* send
* ndo_start_xmit
* pool
* **обработчик прерывания**
* Никакая
## Single choice
Какая функция вызывается в сетевом драйвере, в момент создания сокета при помощи вызова stocket в пользовательском приложении?
---
* open
* init
* register
* **Никакая**
## Single choice
Какая структура используется в современных ядрах для хранения указателей на основные функции сетевого драйвера?
---
* struct net_device
* struct file_operations
* struct dev
* struct cdev
* **struct net_device_ops**
## Single choice
В какой функции в сетевого драйверы обычно выделяется sk_buff при приеме Ethernet пакета?
---
* open
* ndo_start_xmit
* Receive
* **Обработчик прерывания**
* Ни в какой
## Single choice
Какая функция служит для регистрации структуры net_device в ядре Linux для сетевой карты с интерфейсом pci?
---
* **register_netdev**
* pci_register
* platform_register
* init_module
* register_chrdev
## Single choice
В контексте чего работает часть сетевого стека Linux, отвечающая за отправку пакетов?
---
* Обработчика прерывания сетевого драйвера
* В контексте вызова send или sendto прикладного приложения
* **NET_TX SOFTIRQ**
* В контексте тасклета
Это отличие свёрнуто
# Задания по теме «Подсистема управления процессами, потоки, процессы, диспетчер»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
Добавьте к [заданию к лекции «Подсистема управления памятью»](../memory_managment/tasks.md):
1. Реализацию блокирующего (читающая программа блокируется до появления данных в буфере) и неблокируюшего поведения при чтении из пустого буфера.
2. Реализацию блокирующего (записывающая программа блокируется появления места в буфере) и неблокируюшего поведения при записи в заполненный буфер.
# Тесты по теме «Подсистема управления процессами, потоки, процессы, диспетчер»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какой наиболее полный из перечисленных наборов операций можно выполнять из потока ядра? Какой наиболее полный из перечисленных наборов операций можно выполнять из обработчика прерывания?
---
* **copy_to_user,kprintf, mutex_lock, wait_event, kmalloc**
* kprintf, spin_lock
* Kprintf, kmalloc, spin_lock
## Single choice
Какой наиболее полный из перечисленных наборов операций можно выполнять из обработчика прерывания?
---
* copy_to_user,kprintf, mutex_lock, wait_event, kmalloc(GFP_KERNEL,...)
* **kprintf, spin_lock**
* kprintf, kmalloc(GFP_KERNEL,...), spin_lock
## Single choice
Какой наиболее полный из перечисленных наборов операций можно выполнять из тасклета?
---
* copy_to_user,kprintf, mutex_lock, wait_event, kmalloc(GFP_KERNEL,...)
* **kprintf, spin_lock**
* Kprintf, kmalloc(GFP_KERNEL,...), spin_lock
## Single choice
В каком из перечисленных контекстов нельзя выполнять функцию copy_to_user?
---
* **В обработчике прерывания**
* В потоке ядра
* В функции ioctl символьного драйвера
## Single choice
В каком из перечисленных контекстов нельзя отдавать управление диспетчеру?
---
* **В обработчике прерывания**
* В потоке ядра
* В функции ioctl символьного драйвера
## Single choice
В каком из перечисленных вызовов используется циклический опрос переменно при помощи атомарных операций?
---
* Mutex_lock
* **Spin_lock**
* Wait_queue_interaptible
## Single choice
Какой механизм используют символьные драйверы для организации блокирующих операций?
---
* Mutex_lock
* Spin_lock
* **Wait_queue_interaptible**
## Single choice
В какое состояние переходит задача, вызвавшая блокирующую операцию в случае, если в вызове Wait_queue_interaptible условие не выполняется?
---
* TASK_RUNNING
* **TASK_INTERRUPTIBLE**
* TASK_ZOMBIE
* TASK_UNINTERRUPTIBLE
Это отличие свёрнуто
Это отличие свёрнуто
# Задания по теме «USB подсистема»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Скачать исходный код для наиболее свежего ядра Linux.
2. Скомпилировать и установить новое ядро.
3. Найти в исходном коде Linux драйвер, который в Вашем ядре используется для работы с USB мышкой.
4. Вставить в функцию probe драйвера отладочную печать и убедиться, что драйвер найдер правильно.
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать