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);

}


 

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

20502. Маніпулювання даними, операції над схемою бази даних за допомогою мови SQL 27.5 KB
  Маніпулювання даними операції над схемою бази даних за допомогою мови SQL Для маніпулювання данними виділяють такі групи команд SQL:Команди мови визначення даних DDL Data Definition Language. DDL Data Definition Language мова визначення даних це підмножина SQL що використовується для визначення та модифікації різних структур даних.До даної групи відносяться команди призначені для створення зміни та видалення різних об'єктів бази даних. Команди CREATE створення ALTER модифікація і DROP видалення мають...
20503. Матриця суміжності та матриця інцидентності 28 KB
  Матриця суміжності графа G зі скінченною кількістю вершин n пронумерованих числами від 1 до n це квадратна матриця A розміру n в якій значення елементу aij рівне числу ребер з iї вершини графа в jу вершину. Матриця суміжності простого графа що не містить петель і кратних ребер є бінарною матрицею і містить нулі на головній діагоналі. Матриця суміжності неорієнтованого графа симетрична а значить володіє дійсними власними значеннями і ортогональним базисом з власних векторів.
20504. Метод ітерації (метод послідовних наближень) 88 KB
   Суть методу полягає у заміні початкового рівняння 4.18 еквівалентним йому рівнянням 4.19 Постановка задачі Нехай задано рівняння де неперервна нелінійна функція. Потрібно визначити корінь цього рівняння який знаходиться на відрізку з заданою похибкою .
20505. Метод послідовних наближень (метод ітерацій) для розв’язку системи лінійних рівнянь 91 KB
  11 пошуку розвязку системи с заданою похибкою відповідно теоремі про збіжність.11 виконується то ітераційний процес пошуку розвязку системи с заданою похибкою збігається і метод послідовних наближень можна використовувати.13 що легко розвязується для знаходження вектора розвязку першого наближення тому що в правої частині містить всі визначені елементи.
20506. Мова запитів SQL. Огляд її можливостей 27 KB
  Він по суті містив тільки пропозиція SELECT яке дозволяло формулювати запити для вибірки даних з бази. Потім мова була доповнено двома іншими компонентами необхідними для роботи з базами даних. Перший з них компонент для визначення структури бази даних які в термінології теорії баз даних називаються мовою визначення даних МВД. Другий засоби що дозволяють заповнювати базу даних змінювати їх і видаляти.
20507. Моделі подання знань.Вимоги до моделей подання знань 26.5 KB
  Моделі подання знань.Вимоги до моделей подання знань Подання знань це множина синтаксичних і семантичних угод що роблять можливим формальне вираження знань про предметну галузь у компютерноінтерпретованій формі. Найрозповсюдженішими є такі моделі представлення знань: логічні моделі продукційні моделі фреймові моделі семантичні мережі. До основних вимог подання знань належать: Лаконічність зміст друкованих знаків.
20508. Неорієнтовані та орієнтовані графи 27 KB
  Граф це сукупність об'єктів із зв'язками між ними. Об'єкти розглядаються як вершини або вузли графу а зв'язки як дуги або ребра. Для різних областей використання види графів можуть відрізнятися орієнтовністю обмеженнями на кількість зв'язків і додатковими даними про вершини або ребра.
20509. Нотація Баркера 38 KB
  Связи обозначаются линиями с именами место соединения связи и сущности определяет кардинальность связи: Обозначение Кардинальность 01 11 0N 1N Пример: Для обозначения отношения категоризации вводится элемент дуга :.
20510. Орієнтовані і бінарні дерева 50.5 KB
  Бінарне дерево. В програмуванні бінарне дерево дерево структура даних в якому кожна вершина має не більше двох дітей. Різновиди бінарних дерев Бінарне дерево таке кореневе дерево в якому кожна вершина має не більше двох дітей. Повне закінчене бінарне дерево таке бінарне дерево в якому кожна вершина має нуль або двох дітей.