- •Основные понятия архитектуры и организации эвм. Состав электронной вычислительной машины (эвм)
- •Принцип программного управления и машина фон Неймана
- •Понятие архитектуры, организации и реализации эвм
- •Методы организации эвм Многоуровневая организация эвм.
- •Понятие семантического разрыва между уровнями
- •Способы организация аппаратных средств эвм
- •1) Эвм с непосредственными связями
- •2) Эвм с канальной организацией
- •3)Шинная организация
- •4)Организация с общей шиной (Unibus)
- •Типовая структура вм на микропроцессорных наборах
- •Раздел 2. Организация процессора и основной памяти вм
- •Типовая структура процессора и основной памяти
- •Основной цикл работы процессора
- •Организация процессора и памяти в микропроцессоре Intel 8086
- •Организация стека процессора
- •Распределение оперативной памяти в i8086, ms dos
- •Организация выполняемых программ в ms dos
- •Режимы адресации памяти в микропроцессоре Intel 8086
- •1. Регистровая адресация
- •2. Непосредственная адресация
- •3. Прямая адресация
- •4. Косвенная адресация
- •5. Адресация по базе
- •6. Косвенная адресация с масштабированием
- •7. Адресация по базе с индексированием и масштабированием
- •Система команд i8086
- •3DNow! от amd
- •Организация прерываний в процессоре Intel 80x86
- •Управление выполнением команд в эвм.
- •Способы формирования управляющих сигналов.
- •Способы кодирования микрокоманд.
- •Компьютеры с сокращенным набором команд.
- •Арифметические особенности risc процессоров.
- •Раздел 3. Организация памяти в эвм
- •Основные среды хранения информации.
- •Виды запоминающих устройств.
- •Память с произвольной выборкой.
- •Постоянные запоминающие устройства.
- •Ассоциативные запоминающие устройства (азу)
- •Иерархическая система памяти
- •Организация памяти типа кэш.
- •Организация структуры основной памяти в процессорах ix86.
- •Организация виртуальной памяти.
- •Организация виртуальной памяти на i386 и более старших моделях.
- •Организация работы с внешней памятью.
- •Организация работы с файлами на дисках в ms-dos.
- •Раздел 4. Организация системы ввода-вывода в эвм.
- •Архитектура систем ввода-вывода.
- •Способы выполнения операции передачи данных
- •Структуры контроллеров внешних устройств, для управления различными режимами передачи данных.
- •Программные средства управления вводом-выводом.
- •Основные компоненты процедуры управления ввода-вывода общего вида
- •Состав и реализация устанавливаемого драйвера символьного типа
- •Краткое введение в язык ассемблера.
- •1. Директивы задания данных
- •2. Директивы сегментации программы
- •3. Директивы группирования.
- •4. Порядок размещения сегментов.
- •5. Директивы ограничения используемых команд.
Программные средства управления вводом-выводом.
Состав:
Управление данными :
-Блочно ориен. I/O
-Записе оринт. I/O
-FCB доступ
-FH доступ
Управление данными :
- Распр. ВУ м\д
-Подип буфер
-Упр.опер во ВУ
Две основных части управления данными и управления устройства.
Подсистема управления данными делится на четыре группы:
Блочно ориентированный ввод-вывод для файлов последовательного доступа.
Записе-ориентированный ввод-вывод для файлов прямого доступа.
Любая система управления устройством содержит три группы (см. на схеме управление устройствами).
Основные компоненты процедуры управления ввода-вывода общего вида
Подготовительная (инициализирующая) часть:
Формирование областей для хранения (объема) данными и создание указателей на эти области.
Указания типа и логического номера внешнего устройства.
Задание режима передачи данных и направление передачи.
Этот этап обычно реализует процессор, который осуществляет подготовку.
Планирование, проверка готовности и запуск устройства.
Выбор канала
Выбор внешнего устройства.
Проверка готовности для выполнения операции
Запуск устройства для работы
Замена логического номера на физические адреса.
Выполнение устройством операции ввода-вывода
Для реализации используются драйверы и программы управления данными
Завершение операции ввода-вывода, следовательно освобождаются занимаемые области памяти и устройства, участвовавшие в операции.
Состав и реализация устанавливаемого драйвера символьного типа
Возможны четыре варианта использования драйвера^
Непосредственно написание драйвера на уровне битов портов ввода-вывода и включение его в собственную программу. Для одиночных редко используемых драйверов и специализированных машин (Бесперспективно).
Подключение драйвера в оверлейном режиме (сокращение занимаемой области памяти).
Написание драйвера как резидентный обработчик прерываний. Достоинство: доступно всем программам. Недостаток: как правило, доступен только из ассемблера.
Создание установочного в операционной системе драйвера, который включает в файл конфигурации config.sys с помощью команды device = path\drive1
Хорош тем, что драйвер полностью обслуживается средствами операционной системы. Соответственно к нему применимы команды операционной системы: copy a:\drive1 c:\drv
Во-вторых, с ним можно, работать из языков высокого уровня с помощью операции работы с файлами.
Установка драйверов:
Установки бывают двух типов: блочные и символьные.
Первая использует файловую организацию и передачу данных блоками (обычно применимо только для работы с дисковыми накопителями).
Вторая использует посимвольную передачу данных (она проще) и применима к любым внешним устройствам.
Символьный драйвер состоит из следующих элементов:
Заголовок драйвера
Процедура стратегии.
Буфер запроса
Обработчик прерываний подключает таблицу функции, которые задают операции, которые могут выполняться данным устройством.
1.Заголовок драйвера (18 байт)
Адрес следующего драйвера (4 байта)
Атрибуты (2 байта)
Смещение процедуры стратегии (2 байта)
Смещение обработчика прерываний
Имя устройства (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
Надо учесть, что драйвер не прощает ошибок. Так как он скрыт от пользователя, и поэтому нельзя пользоваться отладчиком.
Приложение 1