Методические указания и примерные задания для выполнения лабораторных работ по дисциплине Безопасность операционных систем
Скачать 133.58 Kb.
|
Методические указания и примерные задания для выполнения лабораторных работ по дисциплине «Безопасность операционных систем» Лабораторная работа №1 Общие требования Данное задание предполагает создание отдельного программного модуля, предназначенного для решения поставленной задачи. Для выполнения задания должен быть использован язык программирования С или С++ (выбор языка программирования и транслятора осуществляется по выбору студента). Исходный текст про граммы должен быть оформлен в соответствии с общими требованиями, предъявляемыми к описанию программ. Эти требования предполагают обязательное наличие комментирующего текста в исходном тексте программы, объясняющего алгоритм работы данной программы и описывающего действия (параметры), необходимые для успешной компиляции и выполнения программы. Задание: Разработать программу для определения основных характеристик устройств-накопителей информации в операционной системе класса Windows. Программа должна выполнять следующий минимум функций: вывод списка доступных устройств-накопителей в системе; вывод доступной информации о отдельном устройстве, включая информацию о параметрах устройства, установленной файловой системе, а также информацию о физическом накопителе, на котором расположено логическое устройство; если устройство является "съемным" (removable media), необходимо предусмотреть операцию удаления устройства (eject). Последнее требование предполагает дополнительные действия со стороны пользователя, Т.е программа должна предоставлять либо специальный параметр для извлечения устройства, либо интерфейсный элемент, отвечающий за данную функцию. Если устройство не является "съемным", программа не должна реагировать на данное действие. Лабораторная работа №2. Взаимодействие процессов с помощью стандартных потоков ввода/вывода (stdin/stdout). ЦЕЛЬ РАБОТЫ: изучить принципы организации взаимодействия процессов (команд) операционных систем MS DOS/Windows с использованием стандартных устройств ввода/вывода. Изучить приемы работы с конвейерной обработкой команд операционных систем. Для взаимодействия пользователя с операционной системой длительное время использовалось (и продолжает использоваться) простое устройство, позволяющее получать от пользователя и выдавать ему информацию в текстовом виде. Устройства такого класса принято называть терминалом (terminal, tty) или консолью (console, соп). Для того, чтобы данное устройство всегда было доступно при работе про грамм, операционная система заранее его предоставляет любой программе (процессу) в процессе запуска или создания. Таким образом, любая программа (процесс) в операционной системе из начально "подключен" к устройству ввода/вывода. Такое устройство принято называть "стандартным устройством ввода/вывода" для программы или процесса. В дальнейшем, программа может поменять стандартное устройство ввода/вывода, отключить его и т.д. Поток данных, "проходящий" через стандартное устройство ввода/вывода, принято называть "стандартным потоком ввода/вывода". Так как современные операционные системы представляют устройства в виде специальных файлов, стандартное устройство ввода/вывода в системе обозначаются как надор файлов с идентификаторами (дескрипторами) 0, 1 и 2 (соответственно, устройства для ввода, вывода и вывода ошибки, или STDIN, SТDOUT и STDERR). В большинстве языков программирования стандартное устройство ввода/вывода неявно доступно программе с помощью функций печати и ввода данных (например, процедуры read/write в языке программирования Паскаль или gets/puts/scanf/printf в языке программирования Си) Задание: Изучите на практике работу с перенаправлением стандартного ввода/вывода. Пользуясь настоящим описанием выполните следующие задание и составьте отчет о работе. Требуется создать программу, обрабатывающую стандартный поток ввода/вывода в соответствии с вариантом задания. Программа должна функционировать как стандартная программа-фильтр (например, как программа SORT). Варианты задания: а) Разработать программу подсчета печатных символов, слов и строк, проходящих через стандартный поток ввода/вывода. Следует учитывать не только символы латинского алфавита, но и символы национальных алфавитов (в данном случае - кириллицу, кодировка СР866). б) Разработать программу замены всех вхождений некоторой искомой строки на указанную. Данные для замены (искомая строка и ее замена) должны задаваться в виде параметров программы. в) Разработать программу перевода поступающих данных из одной кодировки в другую. Программа должна поддерживать две кодировки (СР866 и СР-1251). Режим работы программы (из какой кодировки производить перевод) должен задаваться в виде параметра программы. г) Разработать программу-раgеr, аналог программы MORE операционных систем MS-DOS/Windows. Все задания предполагают создание отдельного программного модуля, предназначенного для решения поставленной задачи. Для выполнения задания используется язык программирования Си (выбор транслятора языка осуществляется по выбору студента). Все программы должны реагировать на специальный параметр /? и, в случае, если данный параметр указан, должен вывести краткое описание данного пакетного файла (назначение, автор, используемые параметры и т.д) Лабораторная работа №3 Запуск процессов в операционной системе. ЦЕЛЬ РАБОТЫ: изучить основные механизмы создания процессов в операционных системах с использованием стандартных библиотек (libc), вспомогательных библиотек (Win32 Shell API) и базовых примитивов ОС (Win32 API) Задание: Изучите на практике работу с функциями, предназначенными для запуска процессов. Пользуясь описанием функций выполните следующие задание и составьте отчет о работе. Требуется создать 3 консольных приложения, позволяющих запускать новый процесс и передавать новому процессу дополнительные параметры. Приложения должны функционировать следующим образом: 1) Программа 1 должна использовать набор функций ехес для запуска нового приложения. Программе указывается в качестве первого параметра имя выполняемого файла. Все последующие параметры являются параметрами нового приложения и должны быть переданы ему. Переменные окружения должны использоваться от процесса-родителя, Т.е. Программы 1. 2) Программа 2 должна использовать функцию ShellExecute для запуска нового приложения. Программе указывается в качестве первого параметра имя выполняемого файла или имя ассоциированного с программой документа. Должна быть предусмотрена возможность задания в командной строке варианта запуска приложения (в минимизированном или максимизированном виде и т.д.). 3) Программа 3 должна использовать функцию CreateProcess для запуска нового приложения. Программе указывается в качестве первого параметра имя выполняемого файла. Все последующие параметры являются параметрами нового приложения и должны быть переданы ему. Все задания предполагают создание отдельного программного модуля, предназначенного для решения поставленной задачи. для выполнения задания используется язык программирования Си (выбор транслятора языка осуществляется по выбору студента). Все программы должны реагировать на специальный параметр /? и, в случае, если данный параметр указан, должен вывести краткое описание данной программы (назначение, автор, используемые параметры и т.д) Лабораторная работа №4 Управление службами в операционной системе ЦЕЛЬ РАБОТЫ: изучить основные механизмы управления службами в операционных системах с использованием базовых принципов ОС (Win32 API). Задание Изучите на практике работу с функциями, предназначенными для управления службами в Windows NT/20001XP (см. описание функций OpenSCManager, EnumServicesStatus, EnumServicesStatusEx). Как пример работы с диспетчером служб, ознакомьтесь с командой net (см. описание команд net start и net stop). Изучите на практике работу с функциями, предназначенными для управления службами в Windows NT/20001XP (см. описание функций OpenSCManager, EnumServicesStatus, EnumServicesStatusEx). Как пример работы с диспетчером служб, ознакомьтесь с командой net (см. описание команд net start и net stop). 2. Пользуясь описанием функций выполните следующие задание и составьте отчет о работе. Требуется создать консольное приложение, получающее и выводящее на консоль список зарегистрированных служб в операционной системе Windows. Программа должна выводить, как обязательный минимум, следующую информацию о службах: - краткое название службы; - полное название службы; - текущий статус службы (см. описание структуры SERVICE_STATUS); Приветствуется вывод дополнительной информации о службе (тип запуска, исполняемый файл и т.п.) в следующем виде: - при наличии в командной строке ключа /d программа выводит список зарегистрированных драйверов устройств (в таком же виде, как и службы); - при наличии в командной строке ключа /i <имя _ службы> программа выводит подробную информацию о службе: тип службы (драйвер, служба и т.п.), название (полное и короткое), текущий статус, тип запуска, идентификатор процесса службы и др.) Задание предполагает создание отдельного программного модуля, предназначенного для решения поставленной задачи. Для выполнения задания используется язык программирования Си (выбор транслятора языка осуществляется по выбору студента). Все программы должны реагировать на специальный параметр /? и, в случае, если данный параметр указан, должен вывести краткое описание данной программы (назначение, автор, используемые параметры и т.д) Лабораторная работа №5 Управление ресурсами в операционной системе. Работа с объектами синхронизации. ЦЕЛЬ РАБОТЫ: изучить основные механизмы синхронизации параллельных ветвей выполнения (потоков) в операционных системах с использованием базовых примитивов ОС (Win32 API). Задание: Изучите на практике работу с функциями, предназначенными для работы с потоками управления, критическими секциями, событиями и мьютексами в Windows (см. описание функций CreateThread, CreateEvent, InitializeCriticalSection, CreateMutex, WaitForMultipleObjects и т.п.). Пользуясь описанием функций выполните следующие задание и составьте отчет о работе. Требуется создать консольное приложение, создающее не менее трех потоков управления (threads). Каждый поток управления периодически выводит на консоль определенную разработчиком фразу (например, "мама мыла раму"; содержание не является важным, важно, чтобы фразы не были одинаковыми). При этом, должны выполняться следующие критические условия: - поток управления повторяет вывод через случайным образом выбранный (см. функцию random) интервал времени; - задержка должна осуществляться с помощью функции Sleep(); с помощью критической секции (то есть, в каждый определенный момент времени к консоли может обращаться только один поток управления); - программа должна создать объект-событие (event), сообщающее о завершении работы приложения и каждый поток управления должен "просматривать" состояние данного объекта (и, если событие установлено, завершать выполнение потока); - программа не должна запускаться дважды; это значит, что, если программа уже запущена на выполнение в данный момент, повторный запуски должен привести к выводу сообщения о том, что данная программа уже запущена; использовать для проверки запуска файлы не допускается, вместо этого допускается использование глобальных объектов синхронизации (например, мьютексов). Задание предполагает создание отдельного программного модуля, предназначенного для решения поставленной задачи. для выполнения задания используется язык программирования Си (выбор транслятора языка осуществляется по выбору студента). Все программы должны реагировать на специальный параметр /? и, в случае, если данный параметр указан, должен вывести краткое описание данной программы (назначение, автор, используемые параметры и т.д) |