Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Новгородский государственный университет имени Ярослава Мудрого»
Старорусский политехнический колледж (филиал)
Курсовая работа
по дисциплине «Системное программирование»
АСИНХРОННЫЙ ВВОД/ВЫВОД
Руководитель Шанаев И.Н
Студентка группы 22351
Михайлова А.Г.
Старая Русса
г.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
ФУНКЦИИ АСИНХРОННОГО ВВОДА/ВЫВОДА
ПРОЦЕДУРЫ DELPHI
СОЗДАНИЕ БЛОКНОТА НА DELPHI
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А
ВВЕДЕНИЕ
Под "Асинхронным вводом/выводом" в основном понимается возможность процесса выполнять ввод/вывод одновременно из многих источников. В частности асинхронным называют такой ввод/вывод, который производиться в том момент, когда входные данные доступны или выходные буферы свободны для принятия очередной порции данных. Это отличает асинхронных ввод/вывод от блокирующего, при котором операции чтения/записи пытаются выполняться, невзирая на доступность ресурсов, что типично приводит к блокировкам. Асинхронный ввод/вывод сам по себе несложен, обычно вопрос в том, чтобы одновременно контролировать много каналов, через которые должен выполняться ввод/вывод.
Ввод и вывод всегда выполнялись медленнее других операций. Эта низкая скорость вызвана следующими факторами:
задержки вследствие поиска дорожки и сектора на устройствах произвольного доступа;
задержки, вызванные относительно малой скоростью передачи данных между физическим устройством и системной памятью;
задержки при передаче данных через сеть;
Операции ввода-вывода во многих случаях являются синхронными с потоками. Иными словами, весь поток должен был ждать, пока ввод-вывод не завершится.
Асинхронный ввод/вывод - принципиально новая возможность введена впервые в Win32 с появлением реальной многозадачности. Вызывая функции чтения и записи данных, вы на самом деле передаете исходные данные одному из потоков (threads) операционной системы, который и осуществляет фактические обязанности по работе с устройством. Время доступа всех периферийных устройств гораздо больше доступа к ОЗУ, и ваша программа, вызвавшая Read или write, будет дожидаться окончания операции ввода/вывода. Замедление работы программы налицо.
Асинхронный ввод/вывод не может осуществить ни одна из родных Delphi функций: ни функции FileRead/FileWrite, ни функции, доставшиеся нам от pascal BlockRead/BlockWrite, ни класс TFileStream. Асинхронный ввод/вывод можно осуществить только через API функции..
Рисунок 1.Схема асинхронного ввода/вывода
ФУНКЦИИ АСИНХРОННОГО ВВОДА/ВЫВОДА
Функция CreateFile. С помощью этой функции можно
открыть на чтение или запись многие объекты: порты COM, дисковые устройства (для
прямой работы с диском), пайпы и т.д.
HANDLE CreateFile(lpFileName, // имя файлаdwDesiredAccess, // тип доступаdwShareMode, // параметры общего доступа_ATTRIBUTES lpSecurityAttributes,//атрибуты защитыdwCreationDistribution, // создавать или открыватьdwFlagsAndAttributes, // дополнительные атрибутыhTemplateFile // нужен при создании файлов
ПРОЦЕДУРЫ DELPHI
Создание процедуры Delphi является оптимальным решением для разумного использования блока операторов. Нам не нужно каждый раз прописывать блок операторов, а просто написав его один раз, его нужно будет просто вызвать по имени, и он сделает всю работу.
Как будет выглядеть общая схема процедуры будет выглядеть таким образом:
delphi блокнот оператор
Рисунок 2. Общая схема процедуры
Описание процедуры состоит из двух основных частей: заголовка и тела процедуры. Заголовок процедуры включает в себя зарезервированное слово procedure, имя процедуры и список формальных параметров. В списке формальных параметров нужно указывать тип этого параметра. Также допускается отсутствие формальных параметров. Имя процедуры - это уникальный идентификатор, по которому обращаются к процедуре. Нетрудно заметить, что процедурный блок по структуре похож на саму программу.
СОЗДАНИЕ БЛОКНОТА НА DELPHI
Наглядным примером асинхронного ввода/вывода является блокнот, рассмотрим его создание.
Первым делом мы должны построить базовый интерфейс пользователя приложения. Для этого добавьте в окно Designer Surface компоненты TMainMenu, TMemo, TActionList,TOpenDialog, TSaveDialog, TStatusBar (категория Win32) и компонент TToolbar.
Предметы
Актуальные Курсовые работы (Теория) по программному обеспечению, программированию