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

Add modules. #3

владелец c3a03494
Это отличие свёрнуто
Это отличие свёрнуто
# Задания по теме «Загрузка ядра Linux»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Скомпилируйте загрузчик для целевой платформы x86/x86-64/arm/aarch64. (вы можете использовать U-boot, coreboot и т.д.).
2. Скомпилируйте ядро для запуска с помощью загрузчика (при необходимости сгенерируйте дерево устройств).
3. Создать initrd/initramfs.
4. Создать rootfs (busybox, u-root).
5. Загрузите ядро в qemu с помощью TFTP/блочного устройства.
# Тесты по теме «Загрузка ядра Linux»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какие файлы необходимы u-boot для загрузки ядра Linux?
---
* system.map, os
* **vmlinux, initrd и dtb**
* vmlinux, init, init.tab, rc.initd
* vmlinux, init, rc.initd
## Single choice
Какая структура данных описывает аппаратную конфигурацию arm процессора в Linux?
---
* initrd
* MBR
* **device tree**
* firmware
## Single choice
На какие устройства обычно выдает информацию отладочная консоль uboot в процессе загрузки?
---
* **serial**
* i2c
* spi
* Ethernet
## Single choice
Какой протокол поддерживает u-boot для загрузки ядра Linux по сети?
---
* http
* ftp
* **tftp**
* scp
## Single choice
Какая структура данных описывает аппаратную конфигурацию arm soc в u-boot?
---
* initrd
* **device tree**
* firmware
* plug&play механизм шины Advanced System Bus
* plug&play механизм шины Avalon
## Single choice
Какой процесс первым запускается ядром Linux в современных дистрибутивах?
---
* grub
* lilo
* **systemd**
* systemctl
## Single choice
Какая утилита может служит для запуска и останова сервиса?
---
* insmod
* modprobe
* **systemctl**
* start
Это отличие свёрнуто
# Задания по теме «Параллельный доступ к ресурсам»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Разработать символьный драйвер, который будет выполнять следующие функции.
* Имитировать чтение внешнего датчика (отдельный поток ядра должен изменять значение внутренней переменной счетчика с заданной частотой).
* Позволять читать значение счетчика при помощи read.
* Позволять сбрасывать значение счетчика при помощи ioctl.
2. Реализовать прикладную программу, которая будет читать значения счетчика из драйвера при помощи read.
# Тесты по теме «Параллельный доступ к ресурсам»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какой механизм синхронизации можно использовать между методом read и обработчиком прерывания?
---
* mutex
* **spin_lock**
* глобальная переменная
* статическая переменная
## Single choice
Что можно отнести к недостаткам lock-free алгоритмов?
* **сложность отладки**
* необходимость использования spin_lock
* необходимость использования mutex
......@@ -5,17 +5,78 @@ Copyright © 2023–2024 ООО «Открытая мобильн
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../LICENSE.CC-BY-4.0.ru.md).
* Архитектура процессора, введение в X86-64 и ARM assembler. Прерывания. Системные вызовы
* Задачи в пользовательском пространстве
* Отладка пользовательских приложений (gdb)
* Ядро Linux
* Загрузка ядра Linux
* Отладка на уровне ядра
* Модули ядра
* Подсистема управления памятью
* Подсистема управления процессами, потоки, процессы, диспетчер
* Параллельный доступ к ресурсам
* Аппаратное обеспечение. Шины
* Сетевая подсистема
* USB подсистема
* Обзор графического стека в Linux
* [Архитектура процессора, введение в X86-64 и ARM assembler. Прерывания. Системные вызовы](./x86_64_assembler_interrupts)
* Лекция:
[cлайды](./x86_64_assembler_interrupts/lecture.fodp)
* [Задания](./x86_64_assembler_interrupts/tasks.md)
* [Тесты](./x86_64_assembler_interrupts/tests.md)
* [Задачи в пользовательском пространстве](./userspace)
* Лекция:
[cлайды](./userspace/lecture.fodp)
* [Задания](./userspace/tasks.md)
* [Лабораторная работа](./userspace/lab.fodp)
* [Тесты](./userspace/tests.md)
* [Отладка пользовательских приложений (gdb)](./debugging_gdb)
* Лекция:
[cлайды](./debugging_gdb/lecture.fodp)
* [Задания](./debugging_gdb/tasks.md)
* [Лабораторная работа](./debugging_gdb/lab.fodp)
* [Тесты](./debugging_gdb/tests.md)
* [Ядро Linux](./linux_kernel_introduction)
* Лекция:
[cлайды](./linux_kernel_introduction/lecture.fodp)
* [Задания](./linux_kernel_introduction/tasks.md)
* [Тесты](./linux_kernel_introduction/tests.md)
* [Загрузка ядра Linux](./booting_the_kernel)
* Лекция:
[cлайды](./booting_the_kernel/lecture.fodp)
* [Задания](./booting_the_kernel/tasks.md)
* [Лабораторная работа](./booting_the_kernel/lab.fodp)
* [Тесты](./booting_the_kernel/tests.md)
* [Отладка на уровне ядра](./kernel_debugging)
* Лекция:
[cлайды](./kernel_debugging/lecture.fodp)
* [Задания](./kernel_debugging/tasks.md)
* [Тесты](./kernel_debugging/tests.md)
* [Модули ядра](./kernel_modules)
* Лекция:
[cлайды](./kernel_modules/lecture.fodp)
* [Задания](./kernel_modules/tasks.md)
* [Лабораторная работа](./kernel_modules/lab.fodp)
* [Тесты](./kernel_modules/tests.md)
* [Подсистема управления памятью](./memory_managment)
* Лекция:
[cлайды](./memory_managment/lecture.fodp)
* [Задания](./memory_managment/tasks.md)
* [Тесты](./memory_managment/tests.md)
* [Подсистема управления процессами, потоки, процессы, диспетчер](./thread_processes_scheduling)
* Лекция:
[cлайды](./thread_processes_scheduling/lecture.fodp)
* [Задания](./thread_processes_scheduling/tasks.md)
* [Тесты](./thread_processes_scheduling/tests.md)
* [Параллельный доступ к ресурсам](./concurrent_access_to_resources)
* Лекция:
[cлайды](./concurrent_access_to_resources/lecture.fodp)
* [Задания](./concurrent_access_to_resources/tasks.md)
* [Тесты](./concurrent_access_to_resources/tests.md)
* [Аппаратное обеспечение. Шины](./hardware_buses)
* Лекция:
[cлайды](./hardware_buses/lecture.fodp)
* [Задания](./hardware_buses/tasks.md)
* [Тесты](./hardware_buses/tests.md)
* [Сетевая подсистема](./net)
* Лекция:
[cлайды](./net/lecture.fodp)
* [Задания](./net/tasks.md)
* [Тесты](./net/tests.md)
* [USB подсистема](./usb_subsystem)
* Лекция:
[cлайды](./usb_subsystem/lecture.fodp)
* [Задания](./usb_subsystem/tasks.md)
* [Лабораторная работа](./usb_subsystem/lab.fodp)
* [Тесты](./usb_subsystem/tests.md)
* [Обзор графического стека в Linux](./graphical_stack)
* Лекция:
[cлайды](./graphical_stack/lecture.fodp)
* [Задания](./graphical_stack/tasks.md)
* [Тесты](./graphical_stack/tests.md)
Это отличие свёрнуто
Это отличие свёрнуто
# Задания по теме «Отладка пользовательских приложений (gdb)»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
Разработать программу, которая будет принимать имя исполняемого файла и печатать перечень санитайзеров, с которыми эта программа собрана.
# Тесты по теме «Отладка пользовательских приложений (gdb)»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Каким образом отладчик GDB может считывает и записывать состояние другого процесса?
---
* при помощи файла /dev/mem
* при помощи файла /dev/iomem
* **при помощи системного вызова ptrace**
* при помощи разделяемой памяти
## Single choice
Из каких составных частей состоит отладчик gdb?
---
* HEADER, IDE, отладчик
* **symbol side, target side, user interface**
* main, core
## Single choice
Что содержит файл core, который образуется при крахе приложения?
---
* лог отладочных сообщений
* **dump памяти приложения**
* dump памяти ядра Linux
* dump всей физической памяти компьютера
## Single choice
Какой формат имеет файл core?
---
* xml
* txt
* **elf**
* json
* binary
Это отличие свёрнуто
# Задания по теме «Обзор графического стека в Linux»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Разработать сисмвольный драйвер, который будет для pci устройства (например сетевог адаптера) реализовывать вызов mmap и отображать в пользовательско пространство область памяти на которую указывает BAR0.
2. Разработать прикладную прогрумму, которая будет открывать устройство и сохранять в файл отображаемую по mmap область памяти в шестнадцатеричном виде.
3. Предварительно необходимо выгрузить стандартный драйвер сетевого адаптера.
4. Загрузить драйвер, запустить прикладную программу и удостверится в их работоспособности.
# Тесты по теме «Обзор графического стека в Linux»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
В каком адресном пространстве работает X-server?
---
* **в пользовательском**
* в ядре Linux
* в адресном пространстве GPU
## Single choice
Какой тип драйвера фраме буфера?
---
* **символьное**
* блочное
* сетевое
* pci
Это отличие свёрнуто
# Задания по теме «Аппаратное обеспечение. Шины»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Разработать минимальный pci драйвер, который можно будет подключить к сетевой карте. Драйвер должен выполнять следующее:
* реализовывать функции probe и release;
* выдавать отладочные сообщения при вызове probe и release.
2. Загрузить разработанный драйвер предварительно выгрузив стандартный сетевой драйвер и убедиться, что вызывается функция probe.
# Тесты по теме «Аппаратное обеспечение. Шины»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Single choice
Какая функция pci драйвера вызывается при успешной вставке в ядро linux, если шина нашла соответвующее устройство?
---
* **probe**
* init
* register_chr_dev
* register_net_dev
## Single choice
Что обычно используется для сопоставления pci устройства и pci драйвера шиной pci?
---
* major number
* MAC адрес
* **vendor_id, device_id**
## Single choice
Что хранят BAR регистры области конфигурирования pci?
---
* **адрес памяти вввода-выввода или портов ввода-вывода**
* номер прерывания
* адрес памяти и номер прерывания
* vendor id и device id
## Single choice
Какой адрес хранится в области конфигурирования pci в BAR регистрах?
---
* виртуальный адрев в адресном пространстве ядра
* виртуальный адрес в пользовательском пространстве
* **физический адрес**
Это отличие свёрнуто
# Задания по теме «Отладка на уровне ядра»
Copyright © 2023–2024 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).
## Задание
1. Скомпилируйте ядро c поддержкой отладки
* Kernel hacking->Kernel debugging;
* Kernel hacking->KGDB:kernel debugger;
* Kernel hacking->Compile time checks and compiler options->Provide GDB scripts for kernel debugging.
3. Создайте initrd/initramfs.
4. Создайте rootfs (busybox, u-root).
5. Загрузите ядро в qemu.
6. Подключитесь к qemu c запущенным Linux при помощи отладчика gdb и выполните пошаговую отладку старта ядра Linux.
Дополнительная информация может быть найдена в [статье](https://www.sobyte.net/post/2022-02/debug-linux-kernel-with-qemu-and-gdb/).
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать