- •Системное программное обеспечение Учебное пособие
- •Введение
- •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.2.5.1Обработка двойного щелчка (Double-Click Messages)
Система генерирует сообщение о двойном щелчке, когда пользователь дважды нажимает кнопку за короткое время. При первом щелчке система определяет прямоугольную область, в пределах которой находится горячая точка курсора и делает отметку времени нажатия. При повторном нажатии той же кнопки система сравнивает позицию курсора с границами прямоугольника и вычисляет время, которое прошло с момента первого щелчка. Если курсор не перемещался и время не превышает установленного для мыши тайм-аута, система генерирует сообщение о двойном щелчке. Приложение может определить или установить продолжительность тайм-аута через GetDoubleClickTime и SetDoubleClickTime, либо передавая флаг
SPI_SETDOUBLECLICKTIME функции SystemParametersInfo. Размеры прямоугольника, по которому Windows определяет двойной щелчок, устанавливаются передачей флагов SPI_SETDOUBLECLKWIDTН и SPI_SETDOUBLECLKНEIGНT. Отметим, что приложение должно зарегистрировать окно, получающее сообщение о двойном щелчке, в классе CS_DBLCLKS. В самом общем виде двойной щелчок представляет собой серию сообщений
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDBLCLK
WM_LBUTTONUP.
Именно поэтому имеется возможность обработать как первое нажатие кнопки, обычно реализующее выбор некоторого объекта, так и двойной щелчок, обслуживающий запуск функции.
5.2.5.2Сообщения неклиентской области
Окно получает сообщения неклиентской области, когда события, связанные с мышью, происходят вне клиентской области. К неклиентской области относятся границы окна, меню, заголовок, линейки протяжки, системное меню (спрятанное за пиктограммой окна) и экранные кнопки. Прежде всего, Windows генерирует сообщения неклиентской области для собственного употребления. Например, Windows использует эти сообщения для переключения формы курсора при подводе горячей точки к границе окна. Названия неклиентских сообщений мыши аналогичны клиентским и отличаются только префиксом "NC". Например, перемещение курсора в неклиентской области генерирует сообщение WM_NCMOUSEMOVE, нажатие левой кнопки мыши - WM_NCLBUTTONDOWN. В отличие от клиентских сообщений параметр lParam содержит экранные, а не оконные координаты горячей точки курсора.
5.2.5.3Активизация окна
Когда пользователь производит щелчок по неактивному главному окну приложения или неактивному дочернему окну, Windows среди прочих посылает сообщение WM_MOUSEACTIVATE. Оно передается перед сообщением о нажатии кнопки.
При обработке WM_MOUSEACTIVATE окно может управлять получение фокуса ввода и параметрами очереди сообщений. Следующие значения могут быть возвращены после обработки
WM_MOUSEACTIVATE:
MA_ACTIVATE - активизирует окно и не очищает очередь сообщений от мыши;
MA_NOACTIVATE - не активизирует окно и не очищает очередь сообщений от мыши;
MA_ACTIVATEANDEAT - активизирует окно и очищает очередь сообщений от мыши;
MA_NOACTIVATEANDEAT - не активизирует окно и очищает очередь сообщений от мыши.
6.Сетевые операционные системы
Сетевая операционная система - это совокупность программного обеспечения и протоколов, которые дают возможность использовать множество автономных компьютеров, связанных компьютерной сетью, удобным и экономически эффективным способом.
Сетевые операционные системы выполняют функции
- обеспечения доступа к ресурсам хост-компьютеров;
- отслеживания прав доступа пользователей к конкретным ресурсам;
- обеспечения прозрачности сети и специфики хост-компьюте- ров;
- создания одинаковых механизмов для доступа к локальным и удаленным ресурсам;
- унификации процедуры расчетов за оказываемые услуги;
- поддержки справочной и сервисной информации по сети;
- повышения надежности.
Сети открывают для пользователей доступ к различным ресурсам. Движение программ и данных между хост-компьютерами называется миграцией. Миграция поддерживается компонентами взаимодействия с пользователями, миграции заданий, миграции данных и управляющими компонентами.
Группа компонент взаимодействия с пользователями ("Пользователь-Пользователь", "Пользователь-Система", "Система-Пользователь") обеспечивает миграцию сообщений и опрос текущего состояния. Межпользовательские взаимодействия состоят в обмене электронной почтой, сообщениями в непосредственном диалоге, проведении интерактивных конференций.
Компоненты миграции заданий применяются для управления многошаговыми заданиями, когда допустимо отдельные шаги выполнять на различных хост-машинах и добиваться более сбалансированной загрузки, перемещая задания на недогруженные или лучше соответствующие заданию хост-компьютеры. Функции миграции заданий чаще всего обеспечиваются централизованным управляющим механизмом сети.
Компоненты миграции данных служат для дистанционного доступа к информации. Если речь идет о разнородных хост-машинах, то возникает проблема преобразования данных - типы данных должны сохраняться при переходе через границы между хост-компьютерами. Кроме того, может потребоваться перекодировка символов. Преобразование данных может осуществляться на компьютере-клиенте (тогда говорят о прямой передаче "сырых" данных) или сервере (передача с преобразованием).
Различают два подхода к миграции данных:
1. Передача запроса в удаленный сервер с последующей обратной передачей запрошенного элемента клиенту. Такой подход предпочтительнее при относительно редких запросах.
2. Пересылка файла, содержащего нужный элемент данных, целиком с удаленного сервера с последующим обращением к нужному элементу локальными средствами. Подход применяется при высокой плотности запросов к одному файлу. Существует риск размножения копий одного и того же файла. При модификации файла возникают определенные проблемы, поскольку нужно гарантировать, что подновлены все копии.
Управляющие компоненты служат для управления подсетями, распределением коммуникационных ресурсов и взаимодействием между сетью и компьютерами.
Операционные системы для сетей подразделяют на сетевые и распределенные.
В случае сетевых ОС на каждом хост-компьютере работает своя несетевая операционная система. Сетевыми функциями управляют системные или даже пользовательские программы на хост-компьютерах. Недостаток такого подхода в неоднородности.
В случае распределенной операционной системы от индивидуальных ОС отказываются и создают одну систему для сети в целом. Этот подход требует значительно больших усилий, но в итоге позволяет получить концептуальное единство, т.е. свойство, которое упрощает понимание сети, ее обслуживание, модификацию и т.д. Для сетей с сильно отличающимися архитектурно и разбросанными географически мэйнфреймами обычно применяется подход сетевых ОС. Локальные сети из персональных компьютеров тяготеют к распределенным операционным системам.
Сетевую операционную систему для группы разнородных хост-машин можно реализовать различными путями. Общеизвестный метод - это связать с каждым пользователем процесс-агент, который предоставит ему общий интерфейс со всеми хост-машинами сети. Процесс-агент можно спроектировать так, чтобы сеть была прозрачной для пользователя или видимой. Когда сеть видима, пользователь сам указывает адрес хост-машины, на которой должен быть выполнен требуемый запрос. Напротив, когда сеть прозрачна, выбор хост-машины осуществляется агентом. Каждый агент поддерживает базу данных с информацией о хост-компьютерах сети, программах и данных, принадлежащих пользователю. В базу данных включается информация о расчетных счетах, на которые должна поступать оплата за пользование серверами, а также выделенные пользователю лимиты.