Внимание! В заданиях, где операционная система явно не указана, допускается выбрать самостоятельно тип системы
ОПЕРАЦИОННЫЕ СИСТЕМЫ
Вариант 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.