Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia (1).docx
Скачиваний:
18
Добавлен:
01.03.2025
Размер:
187.86 Кб
Скачать

Принципы работы канала ввода-вывода. Буферный ввод-вывод.

Ввод-вывод, программируемый с помощью канала или ПДП

Канал представляет собой процессор способный выполнить программу ввода вывода на связанном с ним периферийном устройстве.

Программа канала состоит из последовательности команд, каждому из которых определяет операцию ввода-вывода.

Это программа должна быть подготовлена центральным процессором за ранее.

Принципы работы процессора:

1) Канал может быть запущен в действие только центральным процессором специальной инструкцией Запустить_канал. Эта инструкция инициализирует слово-состояние канала(ССК), специально определяется адрес первой выполненной команды, с этого момента канал и центральный процессор работают параллельно.

2) После запуска канал выполняет свою программу, это выполнение может завершится либо нормальным завершение программы, либо ошибкой (технический сбой), либо приказом центрального процессора Остановить_канал.

Вся необходимая информация о только что законченной программы заносится в стек.

3) в каждый момент центральный процессор может проверить с помощью инструкции тестировать_канал состояние канала, выполняющего свою программу.

Получаемое состояние соответствует последней точки наблюдения канала.

Проверка не влияет на ход выполнения программы канала.

Буферный ввод-вывод.

Так как скорости работы центрального процессора и периферийных органов сильно различаются, применяют «буферизацию» ввода-вывода.

Буфер – специальная область памяти которая служит передаточным звеном между программой пользователя и ПУ, используется для временного хранения передаваемых данных.

Программа пользователя, обменивались данными с ПУ на самом деле считывает или записывает данные в буфер. В свою очередь буфер служит источником или приемником информации для ПУ.

Например: для обмена данных между центральным процессором и магнитным диском используется буфер в оперативной памяти, а для вывода данных на принтер может быть использована буферизация на диске.

Для изучения буферного ввода-вывода рассмотрим упрощенную модель, описываемую следующими спецификациями:

  • при обмене с периферийными устройствами используются записи фиксированной длины;

  • размер буфера фиксирован и составляет N записей;

  • для программы пользователя обмен с буфером должен имитировать обмен с периферийным устройством, следовательно, должен сохраняться порядок передачи информации между буфером и периферийным устройством и ни одна запись не должна быть потеряна;

  • бесполезное ожидание должно быть сведено к минимуму как для центрального процессора, так и для периферийного устройства;

  • возможности носителей не ограничены: при чтении постоянно обеспечивается данными устройство ввода, при записи - устройство вывода;

  • будем считать для нашей модели, что передача осуществляется без ошибок.

В качестве буфера используется структура, работающая по принципу FIFO(первый вошел первый вышел), для работы с очередью будем использовать следующие функции.

Поместить (запись, буфер) – поместить запись в буфер

Изъять (запись, буфер) – Изъять запись из буфера

Состояние очереди определяется переменными:

Буфер_пустой

Буфер_полный

Состояние передачи канала или ПДП определяется переменной

Передача

Запрос прерывания от канала процессору проступает по окончанию передачи очередной записи.

ПРОЧИТАТЬ(ЗАПИСЬ) {--вызов супервизора--} If not БУФЕР_ПУСТОЙ then begin ИЗЪЯТЬ(ЗАПИСЬ,БУФЕР);

If not ПЕРЕДАЧА then ЗАПУСТИТЬ_КАНАЛ; end;

else begin

If not ПЕРЕДАЧА then ЗАПУСТИТЬ_КАНАЛ;

ОЖИДАНИЕ:=true;

Сохранить контекст, перейти к другой активности

end {--обработчик прерывания--} if not БУФЕР_ПОЛНЫЙ then Запустить_канал; if ОЖИДАНИЕ then

Begin

:

Востоновить контекс, повторить чтение записи

:

End;

Метод нисходящей декомпозиции.

Расхождение между языком, на котором формируются задача и языком, на котором описываются алгоритмы их решения порождают трудности при разработке конструкции программ.

Термин язык- определяет некоторые объекты и механизмы, позволяющие их создавать.

Действия или примитивы, позволяющие оперировать объектом. И правила композиции таких действий . Т.о. каждый язык определяет некую абстрактную машину способную его интерпретировать.

Перечень инструкции этой машины совпадает со множеством операций языка, ее механизм выполнения инструкций определяется правилами интерпретации языка.

Метод нисходящей декомпозиции заключается сведении задач к последовательности элементарных под задач, решаемых более простыми способами, для этого в начале определяют некую абстрактную машину , так что с помощью объектов и примитивов, реализованных в ней мы надеемся решить поставленную задачу более простым способом.

При этом возникает проблема реализации определенной нами машиной на реально имеющихся в нашем распоряжении машине М.

Если при реализации машины используется интерфейс машины , то говорят что машина использует машину или зависит от . В действительности зависит лишь от интерфейса , а не от деталей ее внутренней реализации.

Структура системы может быть описан в виде графа вершины которого представляют машины, определенные данной декомпозицией, а ребра – отношения зависимости, например:

Иерархическая структура слоев в виде нисходящей декомпозицией обладающие следующими преимуществами.

1) Независимость концепции, т.е. состояние машины для пользователя полностью описывается спецификация ее интерфейса.

2) Независимость модификации, т.е. изменение в реализации одной из машины не влекут за собой изменений в машинах, которые используют данную машину если спецификация интерфейса остается неизменными.

3) Независимость отладки после того как интерфейс некой машины М специфицирован, ее отладка может производится независимо от машин, которые ее использует и наоборот, которые использует она.

Наряду с методом нисходящей декомпозиции вводится понятие объекта, который определяется совокупностью своих свойств(атрибутов) и механизмов взаимодействия .

Объект определяется с помощью следующих атрибутов:

  1. имени, которое позволит обозначить объект и отличить его от других объектов.

2) Состояние, которое определяется в каждый момент времени и может меняться с течением времени.

3) множество операций или функций доступа которые в частности позволяют создавать и уничтожать объекты, проверять и применять состояние объекта , а также комбинировать объекты между собой.

Вводится понятие канал объектов, позволяющие группировать объекты, обладающие общими свойствами. Каждому классу соответствует множество функции , применяемых ко всем объектам данного класса. Примеры:

  1. Файлы, физическая реализация их осуществляется во внешней памяти

  2. Процессы, физическая реализация осуществляемая процессором.

Виртуальная память и т.д.

Понятие интерфейса, спецификации интерфейса.

Любой интерфейс связан либо с абстрактной машиной, либо с некоторым классом объектов. Он представляет пользователю инструкцию 3-х типов:

  1. структура данных

  2. Процедуры

  3. 3) правила пользования этими процедурами

Обычно правила пользования отражают структуру и ограничения на данные и процедуры и могут принимать разные формы.

Например:

  1. ограничения на доступ к данным (только для чтения)

  2. Ограничения на порядок выполнения процедур

  3. Режим одновременного выполнения процедур или одновременного доступа к данным.

Пример спецификации интерфейса для процедур языка PASCAL

Динамическое выделения памяти.

Имя процедуры

GetMem (p,size)

Описание процедуры

Производит динамическое выделения памяти размера Size в куче (оставшееся от выделения стека для пок и сегмента данных для поб). Указатель на выделенную память присевается переменной p.

Формальные параметры:

Size – размер значения типа word, определяет размер требуемой памяти в битах.

Выходные параметры:

p- переменная типа pointer, которой присваивается длинный указатель на выделенную память.

Ошибки:

Если память требуемых размеров выделить не удалось, то параметр p получает значение nil (нулевой адрес)

Побочные эффекты: нет

Замечание:

Выделенная данной процедурой память должна быть освобождена процедурой FreeMem

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

Для учета ошибок исходя из спецификации используется как правило 2 метода:

  1. просмотр кодов ошибок.

Здесь в каждую процедуру вводится дополнительный параметр – код ошибки, этот параметр может быть изменен процедурой и его конечное значение указывает на результат завершения процедуры.

  1. Присоединение процедуры обработки.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]