Асинхронный ввод/вывод - онлайн-чтение

 

 


Страница 1 из 8

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Новгородский государственный университет имени Ярослава Мудрого»

Старорусский политехнический колледж (филиал)



Курсовая работа

по дисциплине «Системное программирование»

АСИНХРОННЫЙ ВВОД/ВЫВОД



Руководитель Шанаев И.Н

Студентка группы 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.

Предметы

Все предметы »

 

 

Актуальные Курсовые работы (Теория) по программному обеспечению, программированию