65843

УПРАВЛЕНИЕ ФУНКЦИОНАЛЬНОСТЬЮ ЯДРА ОПЕРЦИОННОЙ СИСТЕМЫ

Лабораторная работа

Информатика, кибернетика и программирование

Не вникая в подробности, можно сказать, что схемы идентификации PCI- и USB- устройств парой VendorID — DeviceID по сути одинаковы, поэтому написание своего модуля не составило большой сложности.

Русский

2014-08-09

168.27 KB

1 чел.

Министерство образования и науки Российской Федерации

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Информационная безопасность компьютерных систем»

ОТЧЕТ

по лабораторной работе №2

«УПРАВЛЕНИЕ ФУНКЦИОНАЛЬНОСТЬЮ ЯДРА ОПЕРЦИОННОЙ

СИСТЕМЫ»

по курсу «Операционные системы»

Выполнил

студент гр. 2088/4    А.А.Чернышев

                           <подпись>

Руководитель     А.С. Коноплев

                           <подпись>

Санкт-Петербург

2012

  1.  Формулировка задания

Цель работы — изучение ядра ОС UNIX и модульной архитектуры ядра, исследование расширения функциональности ядра ОС.

2. Использованные теоретические сведения

Материалы из методического пособия 02.pdf, “Программирование модулей ядра Linux” Олег Цирюльник.

3. Результаты работы

3.1. Выполнение индивидуального задания

Разработать модуль, который при возникновении прерывания со стороны USB-порта должен выводить на экран сообщение “USB is in use”. 

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

Не вникая в подробности, можно сказать, что схемы идентификации PCI- и USB- устройств парой VendorID — DeviceID по сути одинаковы, поэтому написание своего модуля не составило большой сложности.

В книге есть модуль, позволяющий следить за устройствами, VendorID и DeviceID которых занесены в некоторую структуру. Модуль позволяет получать детальную информацию об известном модулю USB-устройстве. В своем модуле я буду следить, только за одни устройством. Это обусловлено тем, что для того, чтобы наш модуль начал следить за устройством, надо для начала убить модули, которые уже работают с устройством.

В качестве устройства, за которым будет вестись “слежка”, был выбран небольшой беспроводной USB-нано-приемник.  

Для начала, подсоединил свое устройство, по команде lsusb в терминале отследил VendorID=046d и DeviceID=c21f, и сразу же в логе (dmesg) отследил, какие модули подключились для работы с моим устройством. По команде lsmod, убедился, что такие модули действительно работают.


Далее я “убиваю” модули:

sleep@FISL-PC:~/my_mod$ sudo rmmod xpad

sleep@FISL-PC:~/my_mod$ sudo rmmod ff_memless 

Проверяю, не осталось ли их:

Удостоверившись, можно, регистрировать свой модуль, но для начала соберем его.

Листинг модуля (usb_module.c):

#include <linux/module.h>

#include <linux/usb.h>

#include <linux/slab.h>

struct my_usb_info {

  int connect_count;

};

#define USB_INFO KERN_INFO "USB-module says: "

static int my_usb_probe( struct usb_interface *intf, const struct usb_device_id *id ) {

  struct my_usb_info *usb_info;

  static int my_counter = 0;

  printk( USB_INFO "Unit has connected!\n" );

  usb_info = kmalloc( sizeof( struct my_usb_info ), GFP_KERNEL );

  usb_info->connect_count = my_counter++;

  usb_set_intfdata( intf, usb_info );

  return 0;

}

static void my_usb_disconnect( struct usb_interface *intf ) {

  struct my_usb_info *usb_info;

  usb_info = usb_get_intfdata(intf);

  printk( USB_INFO "Unit has disconnected!\n" );

  kfree( usb_info );

}

static struct usb_device_id my_usb_table[] = {

  { USB_DEVICE( 0x046d, 0xc21f ) }, // Logitech Inc, F710 Wirelles Gamepad

  { USB_DEVICE( 0x046d, 0xc22f ) },    

  {  },                             

};

MODULE_DEVICE_TABLE( usb, my_usb_table );

static struct usb_driver my_usb_driver = {

  .name = "USB-xPad",

  .probe = my_usb_probe,

  .disconnect = my_usb_disconnect,

  .id_table = my_usb_table,

};

static int __init my_init_module( void ) {

  int err;

  printk( USB_INFO "Hello, USB module is startuping!\n" );

  err = usb_register( &my_usb_driver );

  return err;

}

static void my_cleanup_module( void ) {

  printk( USB_INFO "Goodbye, USB module is shutdowning!\n" );

  usb_deregister( &my_usb_driver );

}

module_init( my_init_module );

module_exit( my_cleanup_module );

MODULE_LICENSE( "GPL v2" );

Листинг Makefile:

CURRENT = $(shell uname -r)

KDIR = /lib/modules/$(CURRENT)/build

PWD = $(shell pwd)

DEST = /lib/modules/$(CURRENT)/misc

TARGET = usb_module

obj-m := $(TARGET).o

default:

$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:

@rm -f *.o .*.cmd .*.flags *.mod.c *.order

@rm -f .*.*.cmd *.symvers *~ *.*~

@rm -fR .tmp*

 @rm -rf .tmp_versions

Листинг скрипта, запускающего процесс сборки модуля (makeit.sh):

make -C /usr/src/linux-headers-3.0.0-17-generic-pae SUBDIRS=$PWD modules

Итак, процесс сборки:

sleep@FISL-PC:~/my_mod$ sudo sh makeit.sh

make: Вход в каталог `/usr/src/linux-headers-3.0.0-17-generic-pae'

 CC [M]  /home/sleep/my_mod/usb_module.o

 Building modules, stage 2.

 MODPOST 1 modules

 CC      /home/sleep/my_mod/usb_module.mod.o

 LD [M]  /home/sleep/my_mod/usb_module.ko

make: Выход из каталога `/usr/src/linux-headers-3.0.0-17-generic-pae'

sleep@FISL-PC:~/my_mod$


Модуль собран, можно его регистрировать:

sleep@FISL-PC:~/my_mod$ sudo insmod usb_module.ko

Для вывода сообщений в окно терминала был написан скрипт (dialog.sh):

dmesg | grep says | tail -n3

Проверяем, зарегистрировался ли модуль (или lsmod | grep usb_module, или посмотреть выдаст ли модуль сообщение о запуске):

sleep@FISL-PC:~/my_mod$ sudo sh dialog.sh

[  468.400341] USB-module says: Hello, USB module is startuping!

Модуль зарегистрирован, подключаем наше устройство, смотрим, что выдаст модуль:

sleep@FISL-PC:~/my_mod$ sudo sh dialog.sh

[  911.933938] USB-module says: Hello, USB module is startuping!

[  911.933966] USB-module says: Unit has connected!

А теперь отключим устройство:

sleep@FISL-PC:~/my_mod$ sudo sh dialog.sh

[  911.933938] USB-module says: Hello, USB module is startuping!

[  911.933966] USB-module says: Unit has connected!

[  954.229947] USB-module says: Unit has disconnected!

После проверки работоспособности можем удалить модуль:

sleep@FISL-PC:~/my_mod$ sudo rmmod usb_module

sleep@FISL-PC:~/my_mod$ sudo sh dialog.sh

[  911.933966] USB-module says: Unit has connected!

[  954.229947] USB-module says: Unit has disconnected!

[  981.880705] USB-module says: Goodbye, USB module is shutdowning!

Модуль справляется с поставленной задачей полностью, и его можно дорабатывать дальше.

3.2. Ответы на контрольные вопросы

Что такое драйвер устройства?

Драйвер устройства - это компьютерная программа, с помощью которой другая программа (обычно операционная система) получает доступ к аппаратному обеспечению данного устройства. В общем случае, для использования любого устройства (как внешнего, так и внутреннего) необходим драйвер. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для некоторых устройств (таких, как видеокарта или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.

Каковы функции утилиты modprobe?

Когда ядро обнаруживает необходимость в тех или иных функциональных возможностях, еще не загруженных в память, то демон kmod вызывает утилиту modprobe, передавая ей строку в виде: <название модуля> <универсальный идентификатор>, например: softdog charmajor-10-30.

Что содержат части top half и bottom half функции-обработчика прерывания?

В top half выполняются минимальные действия по обнаружению прерывания и получению его

параметров, а в bottom half— все остальные нужные действия.

Каково назначение файловой системы /proc?

Первоначально она создавалась с целью получения сведений о процессах, теперь она интенсивно используется и самим ядром. Например, /proc/modules — список загруженных модулей,

/proc/meminfo— статистика использования памяти.

С какой целью используются ioctl-управляющих кодов?

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

4. Выводы

В данной работе были исследованы основные особенности работы с ядром операционной системы.


 

А также другие работы, которые могут Вас заинтересовать

39613. РАЗРАБОТКА ТЕХНИЧЕСКОГО УСТРОЙСТВА ДЛЯ СНИЖЕНИЯ ВРЕДНОГО ВОЗДЕЙСТВИЯ НА АТМОСФЕРУ СТАНЦИИ ИСПЫТАНИЯ ДИЗЕЛЕЙ ЛОКОМОТИВНОГО ДЕПО ЛИДА 418.5 KB
  Это обусловлено тем что на техникоэкономические показатели эксплуатации мокрых пылеуловителей существенно влияют степень очистки газов и расход воды. В связи с малым расходом воды наиболее низка стоимость очистки в барботажных пылеуловителях эффективность которых для стандартной пыли достигает 9599.Узел нижнего подвода воды; 16. При работе вентилятора уровень воды в среднем отсеке пылеуловителя между перегородками 3 устанавливается ниже чем за перегородками 4.
39614. Таможенные процедуры 263 KB
  Использование таможенных процедур дает возможность, в зависимости от цели, срока ввоза или вывоза товаров, а также иных обстоятельств, применять к ним различные инструменты правового регулирования, что позволяет более полно учитывать потребности и интересы
39615. Изучение рекламной деятельности в предприятии розничной торговли ЗАО «Торговый дом «Центробувь» и ее эффективности 968.5 KB
  Не одна современная фирма не сможет обойтись без хорошей рекламы. Эффективность рекламы выражается в изучении знакомства целевой аудитории с информацией об исследуемой фирме и ее товарах а также о том что именно о них известно какой образ фирмы и товаров сформировался и каково отношение к ним. Для достижения поставленной цели необходимо решить ряд задач: изучить виды рекламы и ее эффективность; определить сущность управления рекламной деятельностью на торговом предприятии; рассмотреть организацию взаимоотношений участников рекламного...
39616. Разработка web-сайта интернет-магазина для аптеки 4.74 MB
  В дипломном проекте описывается разработка web-сайта интернет-магазина для аптеки. Определяются методы и средства разработки сайта. Выбрана система управления содержимым сайта Wordpress. Описаны результаты дипломного проекта и содержание созданного web-сайта. Разработано руководство пользователя. Рассчитаны затраты на проектирование web-сайта. Рассмотрены разделы по безопасности жизнедеятельности и охране природопользования. В приложениях приведены коды страниц созданного web-сайта интернет-магазина.
39617. Разработка основных принципов по совершенствованию работы пункта коммерческого осмотра 333 KB
  Высокий уровень грузовой и коммерческой работы зависит прежде всего от ее организации в основной линейной производственно-хозяйственной единице железнодорожного транспорта на станции где выполняется основная часть операций связанных с обеспечением плана перевозок грузов а именно2: прием к перевозке погрузка выгрузка выдача и хранение грузов с обеспечением полной их сохранности; подготовка вагонов к погрузке; взвешивание грузов; сортировка мелких отправок; оформление перевозочных документов; подача вагонов на примыкающие к станции...
39618. Междисциплинарный курсовой проект 406 KB
  65 Автоматизированные системы обработки информации и управления Волгоград 2011 ББК УДК Рецензент Издается по решению редакционноиздательского совета Волгоградского государственного технического университета Междисциплинарный курсовой проект: метод.65 Автоматизированные системы обработки информации и управления всех форм обучения. Выполнение междисциплинарного проекта основано на материале ранее изученных дисциплин: Информационные технологии Сети ЭВМ и телекоммуникации Маркетинг и менеджмент программных систем Технология...
39619. СТРУКТУРА И ОРГАНИЗАЦИЯ РАБОТЫ АКУШЕРСКОГО СТАЦИОНАРА САНИТАРНО - ПРОТИВОЭПИДЕМИЧЕСКИЙ РЕЖИМ В АКУШЕРСКОМ СТАЦИОНАРЕ 64.5 KB
  АС имеет следующие основные подразделения: приемнопропускной блок; физиологическое I акушерское отделение 5055 от общего числа акушерских коек; отделение палаты патологии беременности 2530; отделение палаты новорожденных в I и II акушерских отделениях; обсервационное II акушерское отделение 2025; гинекологическое отделение 2530. ПЕРВОЕ ФИЗИОЛОГИЧЕСКОЕ АКУШЕРСКОЕ ОТДЕЛЕНИЕ Первое физиологическое акушерское отделение включает в себя приемнопропускной блок родовой блок послеродовые палаты отделение...
39620. Модернизация локальной вычислительной сети административного здания ЗАО «ПромСвязь-Инвест» 2.11 MB
  1 Техническое задание Полное наименование проекта Модернизация локальной вычислительной сети административного здания ЗАО ПромСвязьИнвест. Цель создания системы Модернизация локальной вычислительной сети и создание базы данных принятия заявлений от абонентов на подключение или устранение неисправностей. Назначение системы ЛВС обеспечивает связь компьютеров для обмена информацией совместного использования сетевого оборудования информационных ресурсов устройств хранения информации и обеспечения контроля доступа на предприятии обеспечивает...
39621. Основные направления совершенствования налоговой политики государства 1.87 MB
  Cоциальноэкономическая сущность налогов и налоговой политики.3 Зарубежный опыт организации налоговой политики. Методологические принципы налоговой политики.1 Тенденции современной налоговой политики РФ: элементы состав и эволюция в условиях рыночных отношений.