- •1.Классификация программного обеспечения. Функции операционных систем.
- •2.Примеры операционных систем. Требования, предъявляемые к операционной системе на примере операционной системы управления химическим реактором.
- •3.Механизмы выполнения программ: понятия активности, контекста активности, точки наблюдения.
- •4.Механизмы выполнения программ: стек выполнения, алгоритм вызова процедур.
- •Приоритет и маскировка прерываний
- •Общая организация ввода/вывода
- •Адресация периферийных устройств
- •Управление периферийными устройствами
- •Принципы работы канала ввода-вывода. Буферный ввод-вывод.
- •Организация простейшей ос для одного пользователя исходя из метода нисходящей декомпозиции (мнд)
- •Система управления файлами.
- •Машина ввода вывода.
- •Стратегия выбора буфера.
- •Далее 4 и 5 работа
- •Взаимодействие совокупности процессов
- •Синхронизация процессов
- •Блокировка памяти
- •Проверка и установка
- •Монитор Хоара
- •Семафоры
- •Состав цепи доступа
- •Структура представлений. Дескрипторы
Адресация периферийных устройств
Разные устройства на каждом уровне выделяются с помощью адресов, которые позволяют различать:
каналы, связанные с памятью;
контроллеры, соответствующие каждому каналу;
периферийные устройства, соединенные с каждым контроллером.
На каждом уровне такой адрес - просто порядковый номер. В результате периферийное устройство обозначается составным адресом
.
Рис. 3.1. Адресация периферийных устройств.
Управление периферийными устройствами
Программа, которая управляет элементарным функционированием периферийного устройства, называется его драйвером.
Драйвер непосредственно управляет интерфейсом контроллера устройства, обрабатывает передаваемые им прерывания, обнаруживает и обрабатывает случаи ошибок.
Синхронный ввод-вывод: спецификация ввода-вывода, принципы работы драйвера
При синхронном вводе-выводе параллелизм между обработкой и передачей информации отсутствует. Процессор занят в течение всего времени передачи.
Спецификации механизма
Пусть базовой операцией является передача одного байта информации из ячейки памяти к периферийному устройству. Состояние пары контроллер - устройство определяется словом состояния, содержащимся в контроллере. Слово состояние включает совокупность следующих.
Указатель |
Значение |
ГОТОВ |
Устройство готово к работе; дополнительные условия зависят от устройства. |
КОНЕЦ |
Передача завершена; устройство готово передать новый символ. |
ОШИБКА |
Во время передачи произошла ошибка, которая может быть уточнена кодом, составляющим часть слова состояния. |
Контроллер управляется центральным процессором с помощью следующих примитивов.
Примитив |
Назначение |
ВВЕСТИ(А_П,А_У) |
Требует передачи байта из устройства с адресом А_У в ячейку памяти с адресом А_П. |
ВЫВЕСТИ(А_П,А_У) |
Требует передачи байта из ячейки памяти А_П на устройство А_У. |
ТЕСТ(А_У) |
Копирует слово состояния устройства А_У в регистр для проверки указателей. |
Алгоритм работы драйвера.
Пусть
требуется вывести последовательность
символов(байтов), содержащихся в памяти
.
Символ
для
не может быть выведен на периферийное
устройство, пока не завершится вывод
символа
КОНЕЦ:=false; ТЕСТ(А_У); if not ГОТОВ then <Обработка ошибки>; for i:=0 to n-1 do begin ВЫВЕСТИ(T[i],А_У); repeat ТЕСТ(А_У); if ОШИБКА then <Обработка ошибки>; until КОНЕЦ; end
Асинхронный ввод-вывод: спецификация ввода-вывода, принципы работы драйвера.
Пусть
при переходе указателя конец к значению
истина контролер вызывает прерывание
центрального процессора. Прерывание
таким образом сигнализирует о конце
передачи элемента
,
процесс вывода массива Т будет приводится
в действие передачи символа
Работа драйвера будет выглядеть следующем образом:
Главная программа.
ЗАКОНЧЕН:=false; i:=0; ВЫВЕСТИ(T[0],А_У); ... <параллельная обработка> ... if ЗАКОНЧЕН then ...
Обработчик прерывания.
<Сохранить контекст>; ТЕСТ(А_У); if ОШИБКА then <Обработка ошибки> else begin if i<n-1 then begin i:=i+1; ВЫВЕСТИ(T[i],А_У); end else ЗАКОНЧЕН:=true end; <Восстановить контекст>
