Драйверы внешних устройств

На главную

Математика
Функции и их графики
Интеграллы примеры
Пределы
Производные
Решить систему методом Гаусса
Интегральное исчисление
Векторная алгебра
Система программирования
Турбо Паскаль
Корни уравнения
Математический анализ
Предел последовательности
Два основных метода
интегрирования
Дискретные источники
Кривые и поверхности
Последовательные алгоритмы
программирования
Функции маршрутизаторов
Комплексные числа
Мультиплексор или
коммутационная схема
Математическая логика
Дифференцирование и
интегральное исчисление
Дифференциальные уравнения
Интегралы
Многопроцессорные ВС
Курсовые задания
Применение интегралов
Теория функций
комплексного переменного
Двойные интегралы
Физические задачи
Элементарная математика
Постулаты квантовой механики
Математический анализ
Степенные ряды
Вычисление пределов
Типовой расчет
Вероятность безотказной
работы системы
Подготовка к экзамену
Примеры решения задач
Лекции матан
Правило Лопиталя
Элементы теории кривых
Производные и дифференциалы
высших порядков
Непрерывные функции
Предел функции
Последовательности
Формула Тейлора
Определенные интегралы
Кратные интегралы
Тензоры
Интегралы, зависящие
от параметра
Отображение рабочего
экрана Adobe Illustrator
Элементы теории поля
Криволинейные интегралы
Тройные интегралы
Задачи по Кузнецову
Вычислить предел
Построить график
Комбинаторика
Ядерная физика
Cвойства атомных ядер
Ядерные реакции
рабочий чертеж
Воздействие радиации на человека
Модели атомных ядер
Задачи по физике
Механика
Термодинамика
Электростатика
Радиоактивность

Геометрическая оптика

Квантовая механика
Атомная физика
Класическая физика
Кинематика
Волновая и квантовая оптика
Электромагнитное и
электростатическое поле
Примеры решения
физических задач
Электромагнетизм
II семестр физики
III семестр физики
Потенциал
Электpостатика

Теория ОС

Классификация ОС
Представление данных
Машинные языки
Загрузка программ
Управление памятью
Виртуальная память
Внешние события
Параллелизм
Реализация многозадачности
Внешние устройства
Драйверы устройств
Файловые системы
Безопасность
Обзор архитектур ОС
Сетевые ОС
Корпоративные ИС
Протоколы TCP/IP
Брандмауэры
Учебник FTP
Системы безопасности
Windows 2000
Windows 2003
Linux
Архитектура ЭВМ
NT 5.0 Справка
Основы Интернет
Атака через Internet
Основы защиты
Компьютерные сети
Введение в КС
Принципы построения ВС
Local Area Network
Монтаж сети
Передача дискр. данных
Базовые технологии ЛС
Построение локальных сетей
Сетевой уровень
Глобальные сети
Средства анализа
Топология ЛС
Глобальные КС
Глоссарий
Информатика
Турбо Паскаль
Процедуры и функции Pascal
Pascal Курс лекций
Базы данных
Язык запросов SQL
Программирование на СИ
Логическое программирование
Примеры программирования

 

  • Драйверы внешних устройств
  • Функции драйверов
  • Многоуровневые драйверы
  • Загрузка драйверов
  • Архитектура драйвера
  • Искусство Древнего Египта Древнегреческая писменность Религия
  • Запросы к драйверу
  • Сервисы ядра, доступные драйверам
  • Асинхронная модель ввода-вывода с точки зрения приложений

     

    Спулинг

    Термин спулинг (spooling) не имеет общепринятого русского аналога. В соответствии с программистским фольклором, слово это происходит от аббревиатуры Simultaneous Peripherial Operation Off-Line. Эту фразу трудно дословно перевести на русский язык; имеется в виду метод работы с внешними устройствами вывода (реже — ввода) в многозадачной ОС или многомашинной среде, при котором задачам создается иллюзия одновременного доступа к устройству. При этом, однако, задачи не получают к устройству прямого доступа, а работают в режиме offline (без прямого подключения). Выводимые данные накапливаются системой, а затем выводятся на устройство так, чтобы вывод различных задач не смешивался.
    Видно, что этот метод работы отчасти напоминает простую отложенную запись, но основная задача здесь не только и не столько повышение производительности, сколько разделение доступа к медленному внешнему устройству.
    Чаще всего спулинг применяется для работы с печатающими устройствами, а для промежуточного хранения данных используется диск. Многие почтовые системы применяют механизм, аналогичный спулингу: если получатель не готов принять письмо, или линия связи с получателем занята, либо вообще разорвана, предназначенное к отправке письмо помещается в очередь. Затем, когда соединение будет установлено, письмо отправляется.
    Классический спулинг реализован в ОС семейства Unix. В этих ОС вывод задания на печать осуществляется командой lpr. Эта команда копирует предназначенные для печати данные в каталог /usr/spoo!/lp, возможно, пропуская их при этом через программу-фильтр. Каждая порция данных помешается в отдельный файл. Имена файлов генерируются так, чтобы имя каждого вновь созданного файла было "больше" предыдущего при сравнении ASCII-колов. За счет этого файлы образуют очередь.
    Системный процесс-демон (daemon) ipd (или lpshed в Unix System V) периодически просматривает каталог. Если там что-то появилось, а печатающее устройство свободно, демон копирует появившийся файл на устройство. По окончании копирования он удаляет файл, тем или иным способом уведомляет пользователя об окончании операции (в системах семейства Unix чаще всего используется электронная почта) и вновь просматривает каталог. Если там по-прежнему что-то есть, демон выбирает первый по порядку запрос и также копирует его на устройство.
    Тот же механизм используется почтовой системой Unix- программой sendmail, только вместо каталога /usr/spool/lp используется /usr/spool/mail.
    Этот механизм очень прост, но имеет один специфический недостаток: демон не может непосредственно ожидать появления файлов в каталоге, как можно было бы ожидать установки семафора или другого флага синхронизации. Если бы демон непрерывно сканировал каталог, это создавало бы слишком большую и бесполезную нагрузку системы. Поэтому демон пробуждается через фиксированные интервалы времени; если за это время ничего в очереди не появилось, демон засыпает вновь. Такой подход также очень прост, но увеличивает время прохождения запросов: запрос начинает исполняться не сразу же после установки, а лишь после того, как демон в очередной раз проснется.
    В OS/2 и Win32 спулинг организован отчасти похожим образом с той разницей, что установка запроса в очередь может происходить не только командой PRINT, но и простым копированием данных на псевдоустройство LPT[1-9|. В отличие от систем семейства Unix как программа PRINT, так и псевдоустройства портов активизируют процесс спулинга непосредственно при установке запроса. Графические драйверы печатающих устройств в этих системах также используют спул вместо прямого обращения к физическому порту.
    Novell Netware предоставляет специальный механизм для организации спулинга — очереди запросов. Элементы очереди в этом случае также хранятся на диске, но прикладные программы вместо просмотра каталога могут пользоваться системными функциями GetNextMessage и PutMessage. Вызов GetNextMessage блокируется, если очередь пуста; таким образом, нет необходимости ожидать пробуждения демона или специальным образом активизировать его — демон сам пробуждается при появлении запроса. Любопытно, что почтовая система Mercury Mail для Novell Netware может использовать для промежуточного хранения почты как очередь запросов, так и выделенный каталог в зависимости от конфигурации.

Уравнение Шрёдингера Представление речи в виде цифровых сигналов и их передача Поверхности второго порядка
Классификация операционных систем Виртуальная память Реализация многозадачности
Системы безопасности Операционная система Linux Введение в компьютерные сети Принципы построения вычислительных систем Базовые технологии локальной сетиСредства анализа Процедуры и функции Pascal Язык запросов SQL Программирование на СИ Брандмауэры Протоколы TCP/IP Файловые системы Драйверы устройств
макросы