Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпаргалка по ОргЭвм.doc
Скачиваний:
120
Добавлен:
01.05.2014
Размер:
859.14 Кб
Скачать

Способы выполнения операции передачи данных

передача данных

синхронная асинхронная

несовмещенный вв/выв по программному

вв/выв прерывани

вв/выв по аппаратному

прерыванию

Синхронная передача.

← Команда вв/выв

Передача 1

← Команда вв/выв

Переача 2

Это самый быстрый способ передачи данных, но ненадежный.

Асинхронная передача.

Несовмещенный ввод-вывод

В данном случае центральный процессор после инициализации ввода-вывода с помощью команды, ожидает готовности внешнего устройства (говорят что процессор весит на флажке готовности). Этот бит представляет собой своеобразный семафор который управляет доступом данных, либо процессора, либо внешнего устройства. Это решение комфортно для внешнего устройства и неэффективно для процессора. Так как внешние устройство диктует условия, со стороны внешнего устройства это высокая скорость передачи данных. Иногда удается в цикле ожидания вставлять программу.

Ввод-вывод по программному прерыванию.

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

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

Ввод-вывод по аппаратному прерыванию (прямой доступ к памяти).

Процесс передачи осуществляется без участия центрального процессора.

У процессора занимается один цикл памяти необходимый для передачи.

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

Этот режим обеспечивает параллельную работу процессора и операции ввода-вывода, он быстрый, так как передача идет на уровне памяти.

29

Контроллер не совмещенного ввода-вывода.

Основы узла:

Селектор Адреса, который выдает на выходе единицу (разрешающий сигнал), только для одного адреса (своего адреса)

Регистр Управления и Состояния – который связывается с системой управления по входу и выходу и принимает от шины управления команду, на выходе выдает состояние внешних устройств при выполнение команды.

Буферный Регистр Данных – для согласования скоростей (буфер)

Используется в двух режимах

  1. Записи

  2. По чтению

30

Контроль передачи по программному прерыванию.

Контроль состоит из двух частей:

  1. Индивидуальный контроллер внешнего устройства.

(аналогично контроллеру не совмещенного ввода-вывода)

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

КНВВ линий связи с памятью и процессором те же, что и раньше.

От РгУС КНВВ берется признак разрешения прерываний EIи признак готовности (Done), может быть задан приоритет.

IRR– регистр приема запросов

ISR– регистр обслуживания запросов

IMR– маска прерывания

PRIOR– арбитр, схема разрешения приоритетов.

ШД – для ввода IM(маски)

Int– Выдача прерываний в процессор

Inta– Разрешение на прерывание

НВП – Номер Вектора Прерывания

Если прерывание (IRQ)INTA= ‘разрешено', то тогда команда выставляется НВП.

Далее идет передача данных по КНВВ с той лишь разницей, что процессор не висит на флаге ожидания. И так до следующего пакета данных.

Удобно для процессора.

Неудобно для устройств, так как устройство должно ожидает, пока контроллер получит разрешение.

31

. Передача данных в режиме аппаратного прерывания (или прямого доступа к памяти).

Основные компоненты.

CAR- Регистр текущего адреса (работает в режиме автоинкрементирования) увеличивается на

1 (байт) или 2 (слово).

CWR– счетчик слов (или байт), который работает в режиме автодекрементирования после передачи содержимое регистра уменьшается на 1(байт) или 2 (слово).

ModeR- регистр передачи(определяет характер и направление передачи).

BAR- регистр базового адреса, содержимое в процессе передачи не изменяется (служит для защиты).

BCR- регистр базового счетчика, содержит первоначальное количество слов для передачи (служит для контроля информации).

Управление – внутреннее управление передается внутри шины.

ШУ – Memrчтение памяти

Iorчтение устройства

Memwзапись памяти

Iowзапись устройства

ВУ – В режиме прямого доступа к памяти устанавливает взаимную передачу данных между памятью и внешним устройствам (HDD,Soundcardи т. д.).

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

В обеспечении передачи задействованы все три вида контроллеров:

  1. Контроллер памяти.

  2. Контроллер прерываний, в к ПДП – формируется сигнал в процессоре о завершение передачи в прямом доступе.

  3. Обычный контроллер КНВВ содержащийся во внешнем устройстве..

  1. После подготовки устройством данного оно выставляет запрос на (DRQ) передачу в режиме прямого доступа.

  2. В ответ контроллер прямого доступа выставляет запрос на возможность захвата шины.

  3. Вырабатывается подтверждающий сигнал Back.

  4. Вырабатывается подтверждающий сигнал (DACK) у контроллера к внешнему устройству.

  5. Далее либо MemrлибоMemw

IOW IOR

после чего сбрасывается сигнал запроса шины и разрешается доступ к памяти.

  1. BRQ  0,DACK  0

  2. TA ++ либоCC --

Пункты с 1 по 7 называются “занятие цикла памяти”, и выполняются для передачи одного данного.

В i8086 в качестве КПДП выступала микросхема.

  1. 8237A–XT(содержит четыре канала с номерами 0 - 3, работает с одно байтовыми портами)

  2. 8237A– 5 -ATи выше (содержит две группы по четыре канала, первая как уXT(для поддержки), а вторая с шестнадцати битными портами).

Состав регистров и адресация 8237A.

00h– 07hномера регистров по каждому из каналов.

0Ahрегистр маски разрешает и запрещает работу по каждому из каналов.

номера битов:

0, 1 – номер канала

2 – разрешить, запретить

3…7 – не используются

0Bh– регистр режима

номера битов:

0, 1 – номер канала

2, 3 – тип цикл DMA

00 – цикл проверки

01 – цикл занятости

10 – цикл чтения

11 – запрещенная комбинация

4 – режим инициализации

5 – направление приращения адреса

0 – увеличение

1 – уменьшение

6, 7 – режим обслуживания

00 – по требованию

01 – одиночная передача

10 – блочная передача

11 – каскодирование (использование двух уровневых контроллеров)

0Ch– сброс триггеров байта

0Eh– сброс регистра маски

81h…8Fh– регистры страниц, текущий адрес равен 16 бит, шина адреса и шина данных (прямого доступа к памяти) равны 20 бит, регистры страниц задают адрес страницы (старшие четыре бита адреса – работают с 1Мб.), одна страница – 64 Кб. . При прямом доступе к памяти переходит границы страницы.

Для 8237A-5-ATиспользуются байтовые регистры станицы (24 бита) и появляется возможность адресовать до 16Мб оперативной памяти.

32

Существует два способа доступа:

  1. С использованием управляющих блоков файлов(УБФ (FCB)). Применялся в первых двух версиях операционной системы, поддерживается только для преемственности.

  1. Не поддерживается иерархическая структура каталогов и доступ только к файлу в текущем каталоге.

  2. Любое обращение к файлу требует специальной таблицы из УБФ.

  3. Размещение буферной области данных (DTA–DataTransferArea) для этого метода зафиксирована и меняться не может.

Этот способ удобен для работы с файлами прямого доступа.

  1. Через дескриптор файла (ДФ) (FH–FileHandler). /Используется в настоящее время/

  1. для любого обращения к файлу требуется одно слово, в котором хранится индетификатор или номер файла.

  2. Поддержка иерархических структур каталогов

  3. DTA– может размещаться в любом месте

Структура УБФ (FCB).

1 байт – номер диска (0 – текущий , 1-А, 2-В, …)

8 байт – имя файла

3 байта – тип файла

2 байта – номер текущего блока (до 128 записей)

2 байта – размер записей (по умолчание 128 байт)

4 байта – размер файла

2 байта – дата последней модификации

10 байт – резерв операционной системы

2 байта – номер текущей записи

2 байта – номер записи ПД (прямого доступа)

№ Блока

№ записи

№ зап. ПД

0

1

1

0

127

127

1

0

128

1

1

129

1

127

2

0

Нет атрибутов файла. Для этого используется расширенный УБФ (FCB) (+ 7 байт)

1 байт – OFFh

5 байт – ASCIIкод 0

1 байт – атрибуты файла

7 – файл доступен из NovellNetWare

6 – не используется

5 – архивный

4 – каталог

3 – метка тома

2 – системный (sys)

1 – скрытый (hidden)

0 – только для чтения (Readonly)

Операции над файлами.

  1. Создание

  2. Открытие

  3. Передачи данных

  4. Закрытие

  5. Удаление

Создание файла для FCB.

FCB AH OFFh, 5DUP(0), 2, 1 ‘MyFile.dat’, 25DUP(0)

;проверка существования файла

mov AH, 11h ; поиск на A (указан в FCB)

lea dx, FCB ; DS:DX адрес FCB

int 21h

cmp al,0

je warn_user

mov ax, 16h ;функция создания файла

int 21h

cmp al, 0

jne error

Использование FH

Задается полный путь к файлу в виде ASCIIZ(нулевой байт в конце)

в DS:DXдолжен быть указан адрес строки.

Создается 16 битный номер файла, который помещается в AX.

Path DB ‘c:\level1\level2\myfile.dat’,0

mov ax, 4Eh; поиск файла

lea dx, path

int 21h

jnc warn_user ; файла нет  CF  0

mov ax, 3Ch

mov cx, 0; байт атрибутов

int 21h

jc error

mov fnumber, ax

Тип ошибки (в AL):

2 – путь не существует

3 – открыто слишком много файлов

4 – нет места на диске.

FCB: Функция 0Fh– открывает файл

10h– закрывает файл

13h- удаляет файл

FH: Функция 3Dh– открывает файла

5Bh– создает и открывает файл

3Eh– закрывает файл

41h– удаляет файл

Открытие файла функцией FCB, сопровождается заполнением следующих полей:

  1. Размер записи.

  2. Дата модификации (берется из текущей даты).

  3. Размер блока и номер текущей записи.

  4. Еще есть запоминание текущего доступа.

Удаление файла той же функцией происходит путем замены первого байта в файле на E5h(удобно для восстановления файла и для замещения на новые данные). Нельзя совершить удаление при незакрытом файле. После закрытия файла все освобождаются буферные области.

Чтение / Запись

DTA(буфер)

файл на диске данные в оперативной памяти.

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

В последовательном: файл может иметь переменную длину, разделяемый парой кодов 10hи 13h. И доступом в середину файла путем пропуска ограничтельных пар символов нужного количества раз.

(дескриптор более предрасположен к использованию последовательного доступа).

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

Для FCB– поля выбираются из управляющей области памяти.

33

Программные средства управления вводом-выводом.

Состав:

ПСУВВ

Управление данными

Управление устройствами

Блочно ориен. I/O

записе ориен. I/O

FCBдоступ

FH доступ

распр. ВУ м/д

подсис. буфер.

упр. опер. во ВУ

Две основных части управления данными и управления устройства.

Подсистема управления данными делится на четыре группы:

Блочно ориентированный ввод-вывод для файлов последовательного доступа.

Записе-ориентированный ввод-вывод для файлов прямого доступа.

Любая система управления устройством содержит три группы (см. на схеме управление устройствами).

FCB- доступ через управляющие блоки файла.FH-доступ через дескриптор файла.

Основные компоненты процедуры управления ввода-вывода общего вида

  1. Подготовительная (инициализирующая) часть:

Формирование областей для хранения (объема) данными и создание указателей на эти области.

Указания типа и логического номера внешнего устройства.

Задание режима передачи данных и направление передачи.

Этот этап обычно реализует процессор, который осуществляет подготовку.

  1. Планирование, проверка готовности и запуск устройства.

Выбор канала

Выбор внешнего устройства.

Проверка готовности для выполнения операции

Запуск устройства для работы

Замена логического номера на физические адреса.

  1. Выполнение устройством операции ввода-вывода

Для реализации используются драйверы и программы управления данными

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

34

Возможны четыре варианта использования драйвера:

  1. Непосредственно написание драйвера на уровне битов портов ввода-вывода и включение его в собственную программу. Для одиночных редко используемых драйверов и специализированных машин (Бесперспективно).

  2. Подключение драйвера в оверлейном режиме (сокращение занимаемой области памяти).

  3. Написание драйвера как резидентный обработчик прерываний. Достоинство: доступно всем программам. Недостаток: как правило, доступен только из ассемблера.

  4. Создание установочного в операционной системе драйвера, который включает в файл конфигурации config.sysс помощью командыdevice=path\drive1

Хорош тем, что драйвер полностью обслуживается средствами операционной системы. Соответственно к нему применимы команды операционной системы:

copya:\drive1c:\drv

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

Установка драйверов:

Установки бывают двух типов: блочные и символьные.

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

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

Символьный драйвер состоит из следующих элементов:

  1. Заголовок драйвера

  2. Процедура стратегии.

  3. Буфер запроса

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

1.Заголовок драйвера (18 байт)

  1. Адрес следующего драйвера (4 байта)

  2. Атрибуты (2 байта)

  3. Смещение процедуры стратегии (2 байта)

  4. Смещение обработчика прерываний

  5. Имя устройства (8 байт)

Драйвер обычно записывается как самостоятельный модуль, но без PSP, поэтому не может запускаться самостоятельно.

Атрибуты:

15 бит : 1- символьный драйвер

0 – блочный драйвер

14 бит : поддержка IOCTL

13 бит : формат блоков

1 – IBM

0 – любой другой

………

3 бит : 1 – часы

0 – не часы

2 бит : 1 – null

0 – не null

1 бит : 1 – STDOUT(стандарт вывода)

0 - STDIN(стандарт ввода)

2.Процедура стратегии.

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

DEV_STRAT:

mov cs:SEG_PQBF, es ;

mov cs:OFF_PQBF, es ;

ret

SEG_PQBF DW ?

OFF_PQBF DW ?

3.Буфер запроса.

Структура данных, через которые прикладная программа связывается с драйвером (прикладная программа задает вид операции вводе-вывода и место расположения данных, а драйвер возвращает ей свой статус (все идет через буфер запроса)).

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

Заголовок запроса.

+0 : длина буфера запроса

+1 : код внешнего устройства

+2 : код команды ввода-вывода

+3 : статус

+5 : резерв

+13d: данные

4.Обработчик прерывания.

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

Код обработчика прерываний.

dev_intpr: push A

mov ax, SEG_PQBF ;

mov es, ax ;

mov bx, OFF_PQBF ;

mov al, es:[bx+2] ;

shl al, 1 ;

xor ah, ah ; Подготовка и загрузка

lea di, FUN_TAB ; смещения функции

add di, ax ; в таблицу функции

jmp word ptr[DI] ;

FUN_TAB LABEL WORD;

 DW INITIALIZE

 DW CHECK_MEDIA

 . . . . . . .

 DW INPUT_DATA

Тринадцать  . . . . . . .

функций  DW OUPUT_DATA

 . . . . . . .

 DW OUTPUT_STATUS

 . . . . . . .

 DW IOCTL_OUT

Определенная функция находится в определенной строке таблицы.

Предположим что драйвер поддерживает только две функции initиout, тогда:

CHECK_MEDIA:

. . . . . .

INPUT_DATA:

. . . . . .

IOCTL_OUT:

or es.word ptr[bx]+3, 8103h

JMP QUIT

INITIALIZE:

lea ax, E_O_P

mov es, word ptr[bx]+14, ax

mov es, word ptr[bx]+16, cs

JMP QUIT

OUTPUT_DATA

QUIT:

OR es:word ptr[bx]+3, 100h

POPA

RET

В поле статус, бит

15 – ошибка

9 – драйвер занят

8 – функция завершена

с 0 – 7 – код ошибки

Пример: 8103hозначает 8 – ошибка , 1 – операция завершена, 03 – означает неизвестная ошибка

После разработки драйвера нужно вставить его в config.sys

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

55