Внимание! В заданиях, где операционная система явно не указана, допускается выбрать самостоятельно тип системы

ОПЕРАЦИОННЫЕ СИСТЕМЫ

Вариант 13

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

Пример файла аудита

Файл аудита – файл, содержащий записи о действиях пользователей в системе, каждая запись которого удовлетворяет следующему образцу:

<метка_времени>{табуляция}

<имя_пользователя>{табуляция}

<тип_записи>[{табуляция}<имя_файла>]

{конец_строки}

Метка времени содержит дату и время регистрации действия.

Тип записи может принимать следующие значения:

· login – вход пользователя в систему.

· logout – выход пользователя из системы.

· open – открытие файла.

· read – чтение содержимого файла.

· write – изменение содержимого файла.

· exec – исполнение файла.

Поле имени файла определено только для записей типа open, read, write, exec.

Журнал может содержать следующую последовательность записей:

10.10.2002\t17:00:00:000\tuser\tlogin\n

10.10.2002\t17:00:03:750\tuser\tread\t/home/user/file1\n

10.10.2002\t17:00:10:950\tuser\tlogout\n

1. Ответить на поставленные контрольные вопросы:

· каким образом можно ввести новую или удалить существующую переменную среды окружения для текущего сеанса shell?

· в каких ситуациях удобно использовать редактор SED?

· используя справочник man, узнайте, возможно, ли применять команду chmod, для рекурсивной смены прав доступа к файлам/подкаталогам внутри каталога?

2. Написать скрипт на языке shell, выполняющий поиск и уничтожение файлов с определенным именем (имя файла и каталоги поиска должны являться параметрами скрипта). Например: искать и удалять файлы с именем “ftpd???.log” из каталога временных файлов (“/usr/tmp”).

3. Написать скрипт на языке shell, выполняющий периодический поиск и уничтожение файлов, с определенным содержанием (содержание файла, каталог поиска и период поиска должны являться параметрами скрипта). Например: каждые 30 мин. искать и удалять из каталога временных файлов (“/usr/tmp”) все файлы, содержащие строку "ftpd: session closed ok".

4. Разработать shell скрипт, использующий sed для анализа готового файла журнала аудита (формат файла приведен в примере).

Скрипт должен выполнять следующие действия:

· сгруппировывать события по дням;

· выводить статистику событий в журнале, а именно:

o количество событий от разных пользователей

o количество событий в зависимости от типа события

o количество событий по дням;

· удалять строки содержащие, определенное имя пользователя, которое задается переменной в скрипте.

5.Используя редактор SED и скриптовый язык SHELL, разработать программу, которая выводит на экран содержимое текущего каталога в порядке возрастания размеров файлов. При этом имена каталогов должны выводиться первыми.

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

Пример файла аудита

Файл аудита – файл, содержащий записи о действиях пользователей в системе, каждая запись которого удовлетворяет следующему образцу:

<метка_времени>{табуляция}

<имя_пользователя>{табуляция}

<тип_записи>[{табуляция}<имя_файла>]

{конец_строки}

Метка времени содержит дату и время регистрации действия.

Тип записи может принимать следующие значения:

· login – вход пользователя в систему.

· logout – выход пользователя из системы.

· open – открытие файла.

· read – чтение содержимого файла.

· write – изменение содержимого файла.

· exec – исполнение файла.

Поле имени файла определено только для записей типа open, read, write, exec.

Журнал может содержать следующую последовательность записей:

10.10.2002\t17:00:00:000\tuser\tlogin\n

10.10.2002\t17:00:03:750\tuser\tread\t/home/user/file1\n

10.10.2002\t17:00:10:950\tuser\tlogout\n

1. Ответить на поставленные контрольные вопросы:

· с какой цифры начинается нумерация элементов массива в AWK?

· какие типы структур данных присутствуют в языке Perl?

· что такое хеш в Perl?

2. Разработать Perl скрипт для анализа готового файла журнала аудита (формат файла приведен в примере)

Скрипт должен выполнять следующие действия:

· сгруппировывать события по дням;

· выводить статистику событий в журнале, а именно:

o количество событий от разных пользователей

o количество событий в зависимости от типа события

o количество событий по дням;

· удалять строки содержащие, определенное имя пользователя, которое задается переменной в скрипте;

· выполнять проверку упорядоченности последовательности записей по меткам времени и их сортировку.

3. Проделать вышеприведенное задание с помощью редактора AWK.

4. Используя скриптовый язык Perl, разработать программу, которая выводит на экран содержимое текущего каталога в порядке возрастания размеров файлов. При этом имена каталогов должны выводиться первыми.

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

Внимание! В заданиях, где операционная система явно не указана, допускается выбрать самостоятельно тип системы.

1. Ответить на поставленные контрольные вопросы:

· как создается дочерний процесс, каково состояние дочернего процесса после его создания?

· по какой причине многие программы явно не используют вызов функции close?

· чем отличается поименованный канал от непоименованного?

2. Выполнить запуск программ, приведенных в примерах 1-4. Модифицируйте программу из примера 1 на использование функции perror() для извещения оператора об ошибках. Модифицируйте программу из примера 4 для выполнения побайтового копирования одного файла в другой.

3. Написать на языке С программу error10 выполняющую запись 10 байт в стандартный поток ошибок. Прокомментировать результат.

4. Произвести чтение нулевого сектора жесткого диска и вывести в доступном виде (с пояснениями), интерпретацию 1-го дескриптора основного раздела. Операционная система WindowsNT/2000/XP.

5. Написать программу на языке С, демонстрирующую порождение двух новых процессов, связанных через конвейер, являющийся программным каналом. Программа должна выполнять:

o создание программного канала;

o порождение двух дочерних процессов;

o запуск одним из порожденных процессов программы read10, а другим – программы write10 с предварительной установкой стандартных потоков ввода-вывода на файловые дескрипторы программного канала и закрытием всех ненужных файловых дескрипторов;

o ожидание завершения обоих порожденных процессов (write10 выполняет запись 10 байт в стандартный поток вывода, read10 - чтение).

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

1. Ответить на следующие контрольные вопросы:

· назовите и кратко опишите способы перехода от виртуальных адресов к физическим?

· перечислите основные недостатки страничной организации памяти;

· в алгоритмах работы "сборщика" страниц и программы обработки отказов из-за недоступности данных предполагается, что размер страницы равен размеру дискового блока. Что нужно изменить в этих алгоритмах для того, чтобы они работали и в тех случаях, когда указанное равенство не соблюдается.

2. Переделайте алгоритмы getblk и brelse так, чтобы ядро следовало не схеме замещения буферов, к которым наиболее долго не было обращений, а схеме "первым пришел - первым вышел". Повторите то же самое со схемой замещения редко используемых буферов. Смоделируйте данную ситуацию. Операционная система - Windows.

3. Напишите набор программ, удовлетворяющих теоретическому понятию оверлея. Каждый оверлей должен осуществлять какие-либо вычисления, выводя результаты в терминал, далее он передает управление другому оверлею из комплекса. Всего в комплексе должно быть не менее 2 оверлеев. Операционная система - Unix.

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

1. Windows. Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе). Их разделяемый ресурс - целочисленный массив, который содержит данные совместного использования. Потоки должны обрабатывать массив поочередно. Использовать мьютекс для синхронизации. Пример обработки массива: нахождение суммы всех элементов, вывод этой суммы на экран и запись ее в первый элемент массива.

2. Ответить на контрольные вопросы:

· опишите сходства и различия процессов и нитей в UNIX;

· опишите основные операции над мутексами в UNIX;

· как организовать критическую секцию программы при помощи функций работы с семафорами потоков Linux?

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

1. UNIX. Написать программу trykill которая на практике определяет множество сигналов:

o которыми могут обмениваться 2 процесса одного пользователя;

o которые могут быть посланы процессом пользователя A процессу пользователя B, при условии, что пользователи A и B являются членами одной группы;

o которые могут быть посланы процессом пользователя A процессу пользователя root.

2. Ответить на контрольные вопросы:

· опишите реализацию приоритетов в Windows;

· что понимают под zombie-процессом, и как он образуется в UNIX;

· что представляют собой специальные файлы устройств и каково их предназначение в UNIX.

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

1. X Window. Выполнить компиляцию и запуск программы из примера 3. Выполнить интерпретацию всех параметров графического контекста, используемых в нем при выводе графических элементов.

2. WINAPI. Создать оконное приложение, имеющие в рабочей области главного окна два поля ввода текста (EDIT) и кнопку (BUTTON). По нажатию кнопки текст из одного окна ввода (например, правого или верхнего, в зависимости от расположения) копирует в другое (левое или нижнее соответственно). Если текст не введён, должно появляться окно сообщения с информацией о том, что текст не введён.

3. Ответить на контрольные вопросы:

· почему функция XClearArea() неприменима в отношении объектов pixmap? (UNIX)

· какие возможности предоставляются X-клиенту для управления входной очередью событий? (UNIX)

· для чего необходимо регистрировать класс окна? (Windows)

· какие характеристики класса окон можно задать при его регистрации? Какие поля структуры, описывающей класс окна, являются наиболее важными? (Windows)

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

Разработать на языке C программу transport, демонстрирующую использование основных функций работы с сокетами UNIX. Программа должна порождать три процесса — клиент общается с двумя серверами, которые выполняют однонаправленную передачу данных между собой через TCP cокеты, относящиеся к локальному сетевому интерфейсу lo.

При помощи программы transport оценить скорость передачи данных через стек протоколов TCP/IP при использовании протокола TCP.

Оценить снижение скорости передачи данных в следующих ситуациях: обмен данными между процессами программы transport осуществляется поочередно в обоих направлениях; одновременно работают несколько параллельно запущенных программ transport.

Наши рекомендации