- •Системное программное обеспечение Учебное пособие
- •Введение
- •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.1.4.1Поддержка горячих клавиш (нot-key)
Windows включает ряд функций, которые приложение может использовать, чтобы определить горячие клавиши. Горячая клавиша представляет собой кодовую комбинацию, возвращающую сообщение WM_НOTKEY. Приложение использует горячие клавиши для создания высокоприоритетного клавиатурного ввода. Например, определяя горячую клавишу из комбинации CTRL+C key, приложение может обеспечить аварийное завершение некоторой операции.
Чтобы определить горячую клавишу, выполняется вызов функции RegisterНotKey с указанием комбинации клавиш, идентификатора окна-получателя сообщения и идентификатора горячей клавиши. Перед тем как завершить приложение необходимо вызвать UnregisterНotKey чтобы разрушить описание горячей клавиши.
5.1.4.2Языки и локализация
На уровне Windows API поддерживается работа с национальными языками и диалектами. Приложения обычно используют локализацию (т.е. установку национального языка) для ввода и отображения информации). Каждая кодовая таблица оснащается идентификатором, который определяет язык. Обычно приложение само не манипулирует языками. Напротив, пользователь может устанавливать языковую кодовую таблицу или переключаться между ними. Функция ActivateKeyboardLayout устанавливает входной язык для текущей задачи. Идентификаторы кодовых страниц могут быть получены от функций LoadKeyboardLayout или GetKeyboardLayoutList.
5.2.Управление манипулятором "мышь"
5.2.1.Аппаратные средства манипулятора
"Мышь" - один из самых распространенных пультов управления компьютером. Профессиональные приложения не имеют шансов на коммерческий успех при отсутствии поддержки ввода с "мыши". Мышь представляет собой устройство, подключаемое к одному из адаптеров последовательной связи ПК (иногда и к параллельным портам). Формат информации, передаваемой в адаптере, зависит от режима работы "мыши": mouse mode - 3 управляющие кнопки; microsoft mode - 2 управляющие кнопки.
Большинство конструкций "мыши" позволяют переключаться из режима в режим либо аппаратно (например, Genius Mouse), либо программно, т.е. с помощью драйвера "мышь". Если при загрузке драйвера нажата левая кнопка, то выбирается второй режим, иначе первый.
В состав "мыши" входят (рис. 27):
- датчики перемещения в горизонтальном и вертикальном направлениях,
- пульт и блок связи с интерфейсом RS-232.
Рис. 27. Схема манипулятора "мышь"
5.2.2.Программная поддержка "мыши" (на примере ms dos)
Использование "мыши" требует загрузки драйвера, который поставляется вместе с манипулятором в одной одной из двух форм: как инсталляционный драйвер (.sys) или .exe(.com) файл. Основными частями драйвера являются:
1. Секция инсталляции - проверяет, подключена ли "мышь" нужного типа и не был ли драйвер установлен ранее. Инсталлятор подменяет вектор прерывания 0CН (com1 для AT) или 0BН (com2) точкой входа в собственный обработчик. Многие драйверы позволяют указать порт. Инсталлятор настраивает аппаратуру адаптера на генерацию запросов прерываний, деблокирует в контроллере прерываний биты, соответствующие IRQ4, устанавливает нужный формат слова и частоту передачи. Кроме того, подменяется вектор прерывания 10Н (старый вектор включается каскадно). В таблицу векторов помещается адрес обработчика 33Н. Ряд внутренних переменных устанавливается по умолчанию.
2. Обработчик прерываний от адаптера последовательной связи - принимает данные от "мыши" и изменяет внутренние переменные: текущие координаты, состояние кнопок, характер нажатия (одиночный/двойной) и т.д. Выполняется перемещение курсора по экрану.
3. Обработчик прерывания 33Н - коллекция функций, образующих интерфейс программы. Номер функции задается в АХ.
4. Обработчик прерывания 10Н - поддерживает форму курсора, отслеживает переключение режимов видеоадаптера.