65821

Управление функциональностью ядра операционной системы

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

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

Основной частью модуля является процедура выдачи разрешения на доступ. Изначально файл полностью доступен всем пользователям, так как основное распределение доступа происходит позже. В процедуре определения возможности предоставления доступа...

Русский

2014-08-06

20.82 KB

3 чел.

ФГБОУ ВПО "Санкт-Петербургский государственный
политехнический университет"

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

—————————

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

ОТЧЕТ

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

«Управление функциональностью ядра операционной системы»

по дисциплине «Операционные системы»

Студент гр. 2088/1

Никитин А. С.

Преподаватель

Степанова Т. В.

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

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

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

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

http://lxr.linux.no/+trees

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

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

1. Создать файл в /proc. Файл должен быть доступен на чтение. Чтение должен осуществлять только процесс с идентификатором UID менее 100.

Основной частью модуля является процедура выдачи разрешения на доступ. Изначально файл полностью доступен всем пользователям, так как основное распределение доступа происходит позже. В процедуре определения возможности предоставления доступа содержатся проверки на действие – чтение, и на EUID пользователя – он должен быть меньше 1000.

2. Тексты программ с подробными комментариями.

Тексты программ приложены к отчёту.

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

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

Драйвер устройства – низкоуровневая программа, работающая с определённым устройством или их классом для предоставления прочему программному обеспечению стандартного интерфейса работы с устройством.

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

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

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

Top half содержит минимальный необходимый код для обработки прерывания. Этот код должен обнаружить достоверность прерывания, считать необходимые данные, и передать их в очередь bottom half. Bottom half занимается непосредственно анализом прерываний и реагированием на них. Это сделано для того, чтобы отсутствовала вероятность пропуска новых прерываний и их обработка велась без задержек.

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

Изначально она использовалась для получения информации о процессах, но теперь используется для получения информации и о ядре. Также присутствует возможность добавления своей файловой системы в /proc.

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

Управляющие коды используются для получения информации об устройстве или его настройки.

4. Выводы

Модули ядра ОС UNIX позволяют расширять функциональность системы, причём назначение модулей может быть самым разнообразным. ОС предоставляет достаточно большой набор функций для использования в модулях, что упрощает их написание.


Приложение

Исходные тексты программ

#include <linux/kernel.h>

#include <linux/module.h>

#include <linux/proc_fs.h>

#include <asm/uaccess.h>

#include <asm/current.h>

#include <linux/security.h>

#include <linux/cred.h>

#define FILE    "euidread"

static char filebuffer[] = "Hello, this is \"euidread\" \"file\" content\n"; //Строка,
//
возвращаемая при чтении из файла

static struct proc_dir_entry *procfile;

static ssize_t file_read(struct file *filp, char *buffer, size_t length, loff_t *offset) {

   static int finished = 0; //Чтение файла

   if (finished) { //Если поднят флаг завершения, возвращаем ноль

       finished = 0;

       return 0;

   }

   finished = 1;

   if (copy_to_user(buffer, filebuffer, 41)) return -EFAULT; //Возвращается строка

   return 41;

}

int file_open(struct inode *inode, struct file *file) { //Открытие файла

   try_module_get(THIS_MODULE);

   return 0;

}

int file_close(struct inode *inode, struct file *file) { //Закрытие файла

   module_put(THIS_MODULE);

   return 0;

}

static struct file_operations file_ops = { //Операции над файлом

   .read = file_read,

   .open = file_open,

   .release = file_close

};

static int access_permission(struct inode *inode, int op) { //Определение прав доступа

   if ((((op & 07) == 04) && current_euid() < 1000)) return 0; //Если действие – чтение,

//и EUID меньше 1000, то доступ разрешается

   return -EACCES;

}

static struct inode_operations inode_ops = { //Операции над inode

   .permission = access_permission

};

int init_module() { //Инициализация модуля

   procfile = create_proc_entry(FILE, 0666, NULL); //Создание файла с полным доступом

   if (procfile == NULL) return -ENOMEM;

   procfile->proc_iops = &inode_ops; //Задание параметров

   procfile->proc_fops = &file_ops;

   procfile->mode = S_IFREG | S_IRUSR;

   procfile->uid = 0;

   procfile->gid = 0;

   procfile->size = 80;

   return 0;

}

void cleanup_module() { //Выгрузка модуля

   remove_proc_entry(FILE, NULL);

}


 

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

3719. Оценка воздействия или влияние на окружающую среду отходов металлургической промышленности 217.5 KB
  Введение На всех стадиях своего развития человек был тесно связан с окружающим миром. Но с тех пор как появилось высокоиндустриальное общество, опасное вмешательство человека в природу резко усилилось, расширился объем этого вмешательства, оно стало...
3720. Электропривод ножниц стана 450 401 KB
  Введение Идея создания второго крупного завода рядом с КМК возникла еще в годы первых пятилеток, но только в 1950 г. появилась возможность вернуться к вопросу о строительстве завода. В 1957г. Совет Министров СССР утвердил проектное задание на строит...
3721. Разработка цифровой интегральной микросхемы 230.5 KB
  Элементная база экономики непрерывно развивается. На смену крупногабаритному оборудованию приходит оборудование малых размеров с более точными параметрами и высокой надежностью. Такое оборудование является менее энергоемким и требует меньш...
3722. Экономическая география и регионалистика 126.5 KB
  Экономико-географическое положение территории России Экономико-географическое положение (ЭГП) – это положение объектов в экономическом и социальном пространстве относительно друг друга, а также относительно границ (государственных, администрати...
3723. Экономика предприятия. Предприятие как хозяйствующий субъект 605.5 KB
  Предприятие — это самостоятельный хозяйствующий субъект, созданный в порядке, установленном действующим законодательством Российской Федерации, для производства продукции, выполнения работ и оказания услуг. Понятие предприятие в широком смысл...
3724. Рынок как экономическая система 314.5 KB
  Понятие рынка в общих чертах известно любому человеку, осуществляющему какие-либо покупки. В тоже время понятие рынка многопланово. Происходящие здесь изменения интересуют и затрагивают огромные количества людей, в том числе и таких, кому...
3725. Формы международного перемещения капитала 55 KB
  Назовите основные формы международного перемещения капитала. Что такое прямые инвестиции, портфельные инвестиции. Международное движение капитала - это помещение и функционирование капитала за рубежом, прежде всего с целью его самовозрастания. Вклад...
3726. Системный кризис в СССР ( 70-е -первая половина 80-х гг.) 35.5 KB
  Системный кризис в СССР ( 70-е -первая половина 80-х гг.) Уже в 70-е годы поиски теоретической мысли были направлены на оправдание просчетов в коммунистическом строительстве. Если поначалу появлялись робкие упреки в адрес авторов Программы коммунист...
3727. Эволюция представлений о строении атома. Есть ли предел системе элементов Менделеева. 375.5 KB
  Возникновение атомистики Вопрос о строении окружающего мира всегда волновал человека. Начало современной науке о строении вещества было положено в античном мире, работами древнегреческих ученых разных школ – ионийской, элеатской, пифагорейской....