- •1 Ядро. Модули ос
- •Функции ядра
- •2 Ядро в привилегированном режиме
- •3 Процесс. Модель процесса
- •Создание процессов
- •Состояния процессов
- •4 Завершение процесса
- •5 Иерархия процессов
- •6 Структура ядра
- •7 Переключение процессов
- •Содержимое таблицы процессов (ее столбцы)
- •8 Потоки. Модель потока
- •9 Межпроцессорное взаимодействие. Состояние состязания
- •10 Критические области
- •11 Запрещения прерываний и переменные блокировки Попытка аппаратного решения проблемы
- •Рассмотрим программные решения
- •12 Алгоритм петерсона. Команда tsl
- •Примитивы межпроцессорного взаимодействия
- •13 Семафоры
- •14 Мьютексы
- •15 Функции ос по управлению памятью
- •16 Типы адресов
- •17 Образ процесса. Виртуальное адресное пространство
- •18 Методы распределения памяти
- •Распределение памяти фиксированными разделами
- •Распределение памяти динамическими разделами
- •Перемещаемые разделы
- •19 Swopping и виртуальная память
- •Включает решение следующих задач
- •20 Страничное распределение памяти
- •22 Сегментное распределение памяти
- •24 Кэш память
- •Принцип действия кэш памяти
- •25 Устройство ввода-вывода
- •Контроллеры внешних устройств
- •1 Способ. Раздельные адресные пространства
- •2 Способ. Одно адресное пространство
- •3 Способ. Гибридный
- •27 Использование нескольких шин для ввода-вывода
- •28 Прямой доступ к памяти. Direct Memory Access (dma)
- •29 Процедура прерываний. Контроллер прерываний
- •30 Принципы программного обеспечения ввода-вывода
- •31 Программный ввод-вывод
- •31 Управляемый прерываниями ввод-вывод. Использование дма
- •32 Программные уровни ввода-вывода
- •Обработка прерываний и драйверы
- •Программные уровни ввод-вывод
- •33 Независимое от устройств программное обеспечение ввода-вывода Единообразный интерфейс для устройств
- •Единообразный интерфейс драйверов устройств
- •34 Структура и функции драйверов
- •35 Буферизация ввода-вывода
- •36 Юникс подобные ос
- •37 Структура ядра ос юникс
- •38 Загрузка юникс подобной ос
- •39 Процессы в системе юникс
- •40 Управление процессами ядром юникс
- •41 Системные вызовы управления процессами
- •42 Системные вызовы управления потоками
- •43 Сигналы
- •44 Файловая система и иерархия данных
- •45 Файловая система fat
31 Программный ввод-вывод
Главным аспектом программного ввода-вывода на примере печати (сетевой принтер) состоит в том, что после печати каждого символа процессор в цикле опрашивает готовность устройства. Такое поведение процессора называется опросом или ожиданием готовности (активным ожиданием). Программный ввод-вывод легко реализуется, но его существенный недостаток состоит в том, что ЦП занят все время, пока осуществляется ввод-вывод..
31 Управляемый прерываниями ввод-вывод. Использование дма
Предоставить ЦП делать что-нибудь в то время, когда принтер находится в состоянии готовности можно с помощью прерывания. Процессор вызывает копировщик, который запускает, какой либо другой процесс, а процесс, попросивший распечатать строку, оказывается заблокирован на все время печати строки. Когда принтер напечатал символ и готов принять следующий, он инициализирует прерывание. Это прерывание вызывает остановку текущего процесса и сохранение его состояния. Затем запускается процедура обработки прерывания от принтера. Если напечатаны все символы, то обработчик принимает меры для разблокировки процессов пользователя. В противном случае он печатает следующий символ, подтверждая прерывание, и возвращается к процессу, выполнение которого было приостановлено. Недостаток метода в том, что при печати каждого символа, сама обработка занимает некоторое время. Неэффективный метод.
Решение этой проблемы в использовании ДМА. Идея состоит в том, чтобы позволить котроллеру ДМА поставлять принтеру символы по одному, не беспокоя при этом ЦП. По существу этот метод почти не отличается от программного ввода-вывода, с той лишь разницей, что всю работу вместо ЦП выполняет контроллер ДМА. Наибольший выигрыш от использования ДМА, состоит в уменьшении кол-ва прерываний с одного на 1 печатный символ до одного на 1 буфер.
Если символов много, а прерывание обрабатывается медленно, то этот выигрыш весьма существенен.
32 Программные уровни ввода-вывода
Программное обеспечение ввод-вывод обычно организуется в виде 4 уровней. У каждого уровня есть четко очерченная функция, которую они должны выполнять, и строго определять интерфейс с соседним уровнями. Функции и интерфейсы этих уровней меняются от одной ОС к другой.
1. Программное обеспечение ввода- вывода уровня пользователя.
2. Устройство-независимое программное обеспечение ОС.
3. Драйверы устройства.
4. Обработчики прерываний.
5. Аппаратура.
В большинстве операционных систем определен стандартный интерфейс, который должен поддерживать все блочные драйверы и второй стандартный интерфейс, который должен поддерживать все символьные драйверы.
Эти интерфейсы включают наборы процедур, которые могут вызываться остальной ОС для обращения к драйверу.
К этим процедурам относятся чтение блока, запись символьной строки и др.
В некоторых ОС, которые являются монолитными, т.е. представляют собой единственную двоичную программу, содержащую в себе в откомпилированном виде все необходимые ей драйверы. Хотя уже в MS-DOS перешли к динамической перегрузке драйверов.