- •Системное программное обеспечение Учебное пособие
- •Введение
- •1.Основные понятия
- •1.1.Функции и ресурсы ос
- •1.2.Структура программного обеспечения
- •1.3.Режимы функционирования компьютера
- •1.4.Классификация ос
- •1.5.Состав ос
- •2.Управление памятью
- •2.1. Основная память
- •2.2.Регистровая память
- •2.3.Кэш память
- •2.4.Организация основной памяти
- •2.4.1.Режимы работы процессоров Intel
- •2.4.2.Преобразование логического адреса в физический в реальном режиме
- •2.4.3.Адресация памяти в защищенном режиме
- •2.5.Управление памятью
- •2.5.1.Модели памяти
- •2.5.2.Динамическое распределение памяти
- •2.5.3.Динамическое распределение памяти в windows nt
- •2.5.4.Функции ос по управлению основной памятью
- •2.6.Виртуальная память
- •2.6.1.Преобразование виртуального адреса в реальный
- •2.6.2.Страничная организация
- •2.6.3.Сегментная организация
- •2.6.4.Странично-сегментная организация
- •2.6.5.Сплошная модель памяти flat
- •2.6.6.Функции для доступа к виртуальной памяти
- •2.6.6.1Освобождение виртуальной памяти
- •2.6.6.2Фиксирование страниц основной памяти
- •2.6.7.Стратегии управления виртуальной памятью
- •2.6.7.1Определение оптимального размера страниц
- •2.6.7.2Поведение программ при подкачке страниц
- •3.Процессы и задачи. Мультипроцессорные системы
- •3.1.Управление процессами
- •3.1.1.Блок управления процессом (pcb)
- •3.1.2.Управление асинхронными параллельными процессами
- •3.2.Мультизадачность
- •3.2.1.Виды мультизадачности:
- •3.2.2.Процессы и задачи
- •3.2.3.Распределение времени между задачами
- •3.2.4.Процессовая мультизадачность
- •3.2.5.Потоковая мультизадачность
- •3.2.6. Синхронизация задач
- •3.2.6.1Ожидание завершения задачи или процесса
- •3.2.6.2Синхронизация с помощью событий
- •3.2.7.Взаимоисключение
- •3.2.7.1Критические секции в программном интерфейсе windows
- •3.2.7.2Блокирующие функции
- •3.2.8.Семафоры
- •3.3.Тупики
- •3.3.1.Условия возникновения тупика
- •3.3.2.Предотвращение тупиков
- •3.3.3. Обход тупиков
- •3.3.4.Обнаружение тупиков
- •3.3.5.Восстановление после тупика
- •3.4.Средства обеспечения мультизадачности в защищенном режиме работы процессора Intel
- •3.4.1.Переключение задач
- •3.5.Обработка прерываний
- •3.5.1.Обработка прерываний в защищенном режиме
- •3.5.2.Обработка аппаратных прерываний
- •3.6.Управление потоками заданий. Планирование заданий и загрузка процессоров
- •3.6.1.Цели планирования
- •3.6.2.Критерии планирования
- •3.6.3.Дисциплины планирования
- •3.6.4.Многоуровневые очереди с обратными связями
- •3.7.Мультипроцессорные архитектуры. Планирование загрузки ресурсов
- •3.7.1.Параллелизм
- •3.7.2.Цели мультипроцессорных систем
- •3.7.3.Автоматическое распараллеливание
- •3.7.3.1Расщепление цикла
- •3.7.3.2Редукция высоты дерева
- •3.7.4.Мультипроцессорные операционные системы
- •3.7.5.Организация мультипроцессорных операционных систем
- •3.7.6.Производительность мультипроцессорных систем
- •3.7.7.Экономическая эффективность мультипроцессорных систем
- •3.7.8.Восстановление после ошибок
- •3.7.9.Перспективы мультипроцессорных систем
- •4.Управление внешней памятью и файловые системы
- •4.1.Структура дискового тома. Таблица разделов
- •4.2.Управление данными
- •4.2.1.Организация данных
- •4.2.2.Методы доступа
- •4.3. Файловые системы
- •4.3.1.Файловая система fat
- •4.3.2.Файловая система fat32
- •4.3.3.Функции windows api для работы с директориями
- •4.3.4.Файловая система windows 95
- •4.3.5.Файловая система нpfs (os/2)
- •4.3.5.1 Структура тома
- •4.3.5.2Файлы и Fnodes
- •4.3.5.3Каталоги
- •4.3.5.4Расширенные атрибуты
- •4.3.5.5Инсталлируемые файловые системы
- •4.3.5.6Проблемы эффективности
- •4.3.5.7Отказоустойчивость
- •4.3.6.Файловая система ntfs (Windows nt)
- •4.3.6.1Главная файловая таблица
- •4.3.6.2Атрибуты файла ntfs
- •4.3.6.3Длинные и короткие имена файлов
- •4.3.6.4Потоки данных
- •4.3.6.5Согласованность с posix
- •4.4.Асинхронные операции с файлами
- •4.5.Файлы, отображаемые на память
- •4.5.1.Создание отображения файла
- •4.5.2.Выполнение отображения на память
- •5.Средства ввода информации
- •5.1.Аппаратные и программные средства ввода информации с клавиатуры
- •5.1.1.Анализ и преобразование скэн-кода
- •5.1.2.Буфер клавиатуры
- •5.1.3.Схема работы буфера
- •5.1.4.Ввод информации с клавиатуры в Windows
- •5.1.4.1Поддержка горячих клавиш (нot-key)
- •5.1.4.2Языки и локализация
- •5.2.Управление манипулятором "мышь"
- •5.2.1.Аппаратные средства манипулятора
- •5.2.2.Программная поддержка "мыши" (на примере ms dos)
- •5.2.3.Основные функции интерфейса программы с манипулятором "мышь" (int 33н)
- •5.2.4.Чтение позиции курсора и состояния кнопок "мыши"
- •5.2.5.Управление мышью в приложениях Windows
- •5.2.5.1Обработка двойного щелчка (Double-Click Messages)
- •5.2.5.2Сообщения неклиентской области
- •5.2.5.3Активизация окна
- •6.Сетевые операционные системы
- •Литература
- •Оглавление
- •Учебное издание
- •394026 Воронеж, Московский просп., 14
5.Средства ввода информации
Ввод информации в программу может быть выполнен на трех уровнях:
обращением к функциям операционной системы;
обращением к функциям BIOS;
физическим доступом к аппаратным средствам.
Ввод на уровне ОС позволяет пропустить сигналы от клавиатуры через инсталируемые драйверы, обеспечивает отслеживание нажатия Ctrl+C (Ctrl+Break), стандартную обработку ошибок. На этом уровне работают функции ввода из стандартного файла stdin, функции консольного ввода getcН(), getcНe().
Доступ к клавиатуре на уровне BIOS позволяет отслеживать нажатие всех клавиш, выполнять управление аппаратурой клавиатуры. Интерфейс с BIOS реализует функция Borland C bioskey(), которая выполняет функции 00..02Н прерывания 16Н.
Непосредственный доступ к буферу клавиатуры резко повышает производительность программы. С другой стороны, непосредственный доступ может быть использован для имитации нажатия на клавиши в демонстрационных версиях программных средств или при реализации экранных органов управления пользовательского интерфейса - радиокнопок, контактных кнопок и т.п.
5.1.Аппаратные и программные средства ввода информации с клавиатуры
Клавиатура содержит специализированный микропроцессор, который при каждом нажатии и отпускании клавиши определяет ее порядковый номер и помещает его в порт 64Н (или 60Н) программируемого периферийного интерфейса Intel 8042. Младшие 7 бит содержат номер клавиши, а старший бит устанавливается в нуль при нажатии (прямой скэн-код) и единицу при отпускании (обратный скэн-код) клавиши. Когда скэн-код записан в порт 64Н программируемого периферийного интерфейса, выдается сигнал подтверждения и генерируется прерывание 09Н для вызова стандартного обработчика прерываний от клавиатуры. BIOS анализирует скэн-код и преобразует его.
Если клавиша нажата дольше времени задержки (delay value), микропроцессор клавиатуры генерирует с заданной частотой (typematic rate) прямой скэн-код клавиши.
Контроллер клавиатуры генерирует прерывание по линии 1 (IRQ1) на каждое нажатие и отпускание клавиши. IRQ1 распределена за обработчиком прерывания 09Н и обслуживается BIOS.
Порт 60Н является только записываемым и поддерживается для совместимости с ранними моделями персональных компьютеров.
Порт 64Н служит для записи команд и данных, а также для чтения статуса клавиатуры. Перед посылкой команды клавиатуре BIOS тестирует ее состояние командой in AL,64Н для предотвращения ситуаций переполнения буфера или нажатия на клавишу.
Чтобы избежать критических ситуаций, например, при установке частоты генерации кода, следует установить небольшую задержку между двумя операциями записи в порт:
mov al,cmd_code
out 64Н,al
mov cx,2000Н ;приблизительное значение
delay: loop delay
mov al,data_value
out 64Н,al
Для управления клавиатурой применяются команды:
0FFН - восстановление клавиатуры и запуск диагностики;
0FEН - повторная передача последнего сообщения;
0FDН..0F7Н - зарезервировано;
0F6Н - установить состояние клавиатуры по умолчанию и продолжить ввод;
0F5Н - установить состояние клавиатуры по умолчанию и отменить ввод;
0F4Н - клавиатура доступна. Выполняется посылка 'ACK', очищается буфер и запускается ввод;
0F3Н - установить частоту генерации и время задержки. Сначала посылается команда 0F3Н, а затем байт данных:
Частота генерации устанавливается в соответствии с таблицей 4. Недостающие значения определяются интерполяцией.
Таблица 4 – Частота генерации символов
Первоначально для клавиатуры устанавливается время задержки 0.5 с и частота повторений 10 символов/с.
Задержка и частота повторения могут устанавливаться через функцию AН = 03Н прерывания 16Н BIOS.
0F2Н..0EFН - зарезервировано;
0EEН - эхо. Просто посылает значение 0EEН;
0EDН - управление триггерными клавишами и индикаторами. Посылается 0EDН, а затем байт, в котором используются только биты 0..2