Асинхронный режим в Windows.

Windows позволяет осуществить асинхронный режим ввода/вывода с использованием функций ReadFile и WriteFile или ReadFileEX и WriteFileEX. Первые две функции обеспечивают обмен данными как в обычном (синхронном) режиме, так и в асинхронном режиме. Вторые две функции специально предназначены для работы в асинхронном режиме. Для использования функций ReadFile и WriteFile в асинхронном режиме необходимо при открытии (создании) файла подготовить (заполнить) специальную структуру данных и передать ее адрес этим функциям. В случае вызова этих функций в асинхронном режиме процесс обмена данными только инициируется, а управление немедленно возвращается вызвавшему их блоку. Одним из параметров, передаваемым этим функциям, является количество участвующих в обмене с устройством байт, т. е., фактически размер буфера для обмена с файлом. Операционная система автоматически создает отдельную задачу, обеспечивающую ввод/вывод, а вызвавшая эти функции задача продолжит свое выполнение, не дожидаясь завершения обмена. В случае необходимости ожидания завершения операции обмена, этой, или другой задачей, следует пользоваться соответствующими средствами синхронизации. В качестве этих средств могут быть задействованы или функция WaitForSingleObject или функция GetOverLappedResult, которая обычно используется для проверки результата выполнения асинхронной файловой операции.

Порядок выполнения лабораторной работы.

Часть I

2.1.1 Для выполнения первой части данной лабораторной работы необходимо изучить правила обращения к функциям, перечисленным в пункте 1, и структуры данных, связанные с этими функциями.

2.1.2 Подготовить заранее некоторый файл (например, текстовый), над которым будут выполняться действия в ходе выполнения лабораторной работы.

2.1.3. Подготовить и отформатировать дискету с указанием метки тома;

2.1.4. Разработать приложение, которое реализует следующие функции:

    • Получает полную информацию о выбранном файле. Файл выбирается из каталога с помощью стандартных диалоговых панелей;
    • Изменяет атрибуты выбранного файла;
    • Получает информацию о наличии дисковых устройств в системе;
    • Получает информацию о дискете (см. п. 2.1.3);
    • Изменяет метку тома на дискете (см. п. 2.1.3);

2.1.5. Изменяя с помощью разработанного приложения атрибуты выбранного файла, попытаться выполнить над ним различные действия стандартными средствами: текстовым редактором и т. п. Например: установить атрибут "только чтение" и попытаться его модифицировать. После каждого действия над файлом следить за изменением информации с помощью разработанного приложения.


Часть II

2.2.1. Для выполнения второй части лабораторной работы необходимо изучить правила обращения к функциям, перечисленным в пункте 2, и структуры данных, связанные с этими функциями.

2.2.2. Разработать приложение, которое реализует следующие функции:

    • Создает на сменном магнитном диске некоторый текстовый файл;
    • Заполняет его некоторыми (случайными) символами (не менее 1000 Кб) в обычном (синхронном) режиме;
    • После закрытия файла запускает какую - либо вычислительную процедуру (например, из лабораторной работы №1) с большим количеством циклов и отображением хода ее выполнения;
    • После его завершения выводит на терминал время, потребовавшееся для выполнения вышеперечисленных действий;
    • Уничтожает ранее созданный файл;
    • Вновь создает его, но для заполнения в асинхронном режиме;
    • Заполняет его некоторыми (случайными) символами (не менее 1000 Кб) в асинхронном режиме;
    • Не дожидаясь завершения обмена, запускает вышеуказанную вычислительную процедуру;
    • После окончания операции обмена выводит на терминал соответствующее сообщение и время, затраченное на эту операцию;
    • После окончания вычислительной процедуры выводит на терминал соответствующее сообщение и время, затраченное на ее выполнения;
    • После завершения всех действий выводит на терминал время, затраченное на их выполнение.

Перечисленные пункты необходимо выполнить, задавая различные размеры буфера обмена: 512, 1024, 2048 и 4096 байт.

Содержание отчета.

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