
- •1. Микропроцессор: понятие и функции.
- •2. Микропроцессор: функции и основные характеристики.
- •1) Выборка команд из озу
- •3. Архитектуры risc и cisc. Отличия, преимущества и недостатки.
- •Недостатки cisc архитектуры
- •4. Гарвардская архитектура.
- •Классическая гарвардская архитектура
- •Отличие от архитектуры фон Неймана
- •5. Архитектура фон Неймана.
- •6. Конвейерная архитектура.
- •7. Спекулятивное выполнение.
- •8. Шинная архитектура. Виды шин используемые в современных системах.
- •9. Понятия микроархитектуры микропроцессора.
- •10. Система команд: основные типы, их преимущества и недостатки.
- •11. Шины данных, адреса и «разрядность эвм». Шина данных.
- •12. Функционирование процессора в реальном и защищенном режимах.
- •13. Bios. Функции и недостатки современных реализаций.
- •Характерные недостатки bios
- •14. Post. Функции и принципы функционирования.
- •15. Uefi. Функции и преимущества по сравнению с bios.
- •Основные преимущество uefi перед bios:
- •16. Прерывания bios.
- •17. Процедура начальной загрузки ос.
- •18. Mbr и его функции.
- •19. Интерфейс acpi.
- •20. Конструкция hdd.
- •Логическая организация дискового пространства
- •Первичный (основной) раздел
- •Расширенный (дополнительный) раздел
- •Пример разбиения жёсткого диска на разделы
- •Структура записи в кэше
- •Характеристики модулей
- •Принципы работы
- •Сегментная адресация в реальном режиме
- •Сегментная адресация в защищённом режиме (селекторная адресация)
- •61) Ос: низкоуровневые функции, драйверы
- •62) Ос: Linux — структура ядра.
- •63) Ос: многозадачность. Реализации.
- •Совместная или кооперативная многозадачность
- •Вытесняющая или приоритетная многозадачность (режим реального времени)
- •64) Ос: многопоточность. Реализации.
- •65) Модули ядра Linux: назначение.
- •66) Модули ядра Linux: загрузка и выгрузка.
- •67) Linux: системные вызовы.
- •68) Linux: методы выполнения системных вызовов.
- •69) Linux: управление памятью.
- •71.Библиотеки: типы и их характеристики.
- •Динамические библиотеки
- •Статические библиотеки
- •72.Разделяемые библиотеки.
- •73.Статические библиотеки.
- •74.Этапы компиляции.
- •75. Компоновка (линковка).
- •76. Загрузка программ на выполнение.
- •77. Компиляоры. Принципы работы.
- •78. Современные компиляторы: общие характеристики.
- •79. Jit. Понятие и функционирование.
- •80. Виртуальные машины (Java etc)
66) Модули ядра Linux: загрузка и выгрузка.
Загрузить модуль в ядро можно при помощи двух команд: «insmod» и «modprobe», отличающихся друг от друга возможностью просчета и удовлетворения зависимостей. Команда «insmod» загружает конкретный файл с расширением «ko», при этом, если модуль зависит от других модулей, еще не загруженных в ядро, команда выдаст ошибку, и не загрузит модуль. Команда «modprobe» работает только с деревом модулей, и возможна загрузка только оттуда по имени модуля, а не по имени файла. Отсюда следует область применения этих команд: при помощи «insmod» подгружается файл модуля из произвольного места файловой системы (например, пользователь скомпилировал модули и перед переносом в дерево ядра решил проверить его работоспособность), а «modprobe» — для подгрузки уже готовых модулей, включенных в дерево модулей текущей версии ядра. Например, для загрузки модуля ядра «rt73usb» из дерева ядра, включая все зависимости, и отключив аппаратное шифрование, нужно выполнить команду:
# modprobe rt73usb nohwcrypt=0 |
Загрузка этого модуля командой «insmod» произойдет следующим образом:
# insmod /lib/modules/2.6.38-gentoo-r1/kernel/drivers/net/wireless/rt2x00/rt73usb.ko nohwcrypt=0 |
Но нужно помнить, что при использовании «insmod» все зависимости придется подгружать вручную. Поэтому эта команда постепенно вытесняется командой «modprobe».
После загрузки модуля можно проверить его наличие в списке загруженных в ядро модулей при помощи команды «lsmod»:
# lsmod | grep rt73usb |
|
|||
Module |
Size |
Used by |
|
|
rt73usb |
17305 |
0 |
|
|
crc_itu_t |
999 |
1 |
rt73usb |
|
rt2x00usb |
5749 |
1 |
rt73usb |
|
rt2x00lib |
19484 |
2 |
rt73usb,rt2x00usb |
Из вывода команды ясно, что модуль подгружен, а так же в своей работе использует другие модули. Чтобы его выгрузить, можно воспользоваться командой «rmmod» или той же командой «modprobe» с ключем "-r". В качестве параметра обоим командам нужно передать только имя модуля. Если модуль не используется, то он будет выгружен, а если используется — будет выдана ошибка, и придется выгружать все модули, которые от него зависят:
# rmmod rt2x00usb
ERROR: Module rt2x00usb is in use by rt73usb
# rmmod rt73usb
# rmmod rt2x00usb
После выгрузки модуля все возможности, которые он предоставлял, будут удалены из таблицы ядра.
Для автоматической загрузки модулей в разных дистрибутивах предусмотрены разные механизмы. Я не буду вдаваться здесь в подробности, они для каждого дистрибутива свои, но один метод загрузки всегда действенен и удобен: при помощи стартовых скриптов. В тех же RedHat системах можно записать команды загрузки модуля прямо в "/etc/rc.d/rc.local" со всеми опциями. Файлы конфигурация модулей находится в каталоге "/etc/modprobe.d/" и имеют расширение «conf». В этих файлах преимущественно перечисляются альтернативные имена модулей, их параметры, применяемые при их загрузке, а так же черные списки, запрещенные для загрузки. Например, чтобы вышеупомянутый модуль сразу загружался с опцией «nohwcrypt=1» нужно создать файл, в котором записать строку:
options rt73usb nohwcrypt=1 |
Черный список модулей хранится преимущественно в файле "/etc/modules.d/blacklist.conf" в формате «blacklist <имя модуля>». Используется эта функция для запрета загрузки глючных или конфликтных модулей.