- •Системное программное обеспечение Учебное пособие
- •Введение
- •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
4.3.5.4Расширенные атрибуты
Атрибуты файла - информация относительно файла, которая поддерживается операционной системой. FAT файловая система поддерживает только небольшое количество простых атрибутов (только для чтения, системный, скрытый, и архивный) которые фактически сохраняются как разрядные флажки в файловом элементе каталога; Эти атрибуты контролируются или изменяются специальными обращениями к функции и не доступны через нормальные файловые операции открытия, чтения, записи.
HPFS поддерживает те же самые атрибуты как и в FAT по историческим причинам, но она также поддерживает новую форму атрибутов, называемую расширенными атрибутами (EA). Каждый EA в принципе подобен системной переменной, принимающей форму имя=значение, за исключением того, что часть значения может быть или ASCIIZ строкой или двоичными данными.
Метод хранения EA может изменяться. Если EA связанные с данным файлом или каталогом достаточно маленькие, то они будут корректно сохранены в Fnode. Если размер EA слишком большой, то они хранятся снаружи Fnode в группах секторов, и B+дерево распределения секторов может создаваться чтобы описать группы. Если одиночный EA становится слишком большим, он может быть помещен снаружи Fnode в собственное B+дерево.
API функции ядра DosQFileInfo и DosSetFileInfo позволяют прикладным программам управлять расширенными атрибутами файлов.
Функции DosQPatНInfo и DosSetPatНInfo используются, чтобы читать или записать EA связанные с произвольными путями. Прикладная программа может или запрашивать значение специфического EA или может получать все EA для файла или каталога сразу.
Мы должны обратить внимание на то, что кроме EA, LAN Manager версия НPFS поддерживает другой класс связанной с файлом информации, называемой контрольный список доступа (ACL). ACL имеют тот же самый вид как EA и управляются подобным способом, но они предназначены для хранения прав доступа, паролей, и другой информации, представляющей интерес для работы с сетями.
4.3.5.5Инсталлируемые файловые системы
Поддержка для инсталлируемой файловой системы была одной из наиболее долгожданных особенностей OS/2 1.2. Она сделала возможным обращение к несовместимым по структуре томам - FAT, HPFS, CD ROM на той же самой системе OS/2 в то же самое время.
Устанавливаемый драйвер файловой системы (FSD) является одним из удобных способов доступа к устройству. FSD постоянно находится на диске в файле, который структурно подобен библиотеке динамической компоновки (DLL), обычно с SYS или IFS расширением, и загружается в течение инициализации системы операторами IFS= в файле CONFIG.SYS. Это позволяет загружать драйвер устройства для нестандартного устройства, загружать драйвер файловой системы из тома на том устройстве, и так далее.
4.3.5.6Проблемы эффективности
Для повышения производительности НPFS использует расширенные структуры данных, непрерывное распределение, интеллектуальное кеширование, отложенную запись.
Сложные структуры данных (B-деревья и B+деревья) для быстрого произвольного доступа к именам файлов, именам каталогов, и спискам секторов распределяются в файлы или каталоги и простые компактные структуры данных (растры) для размещения кусков свободного пространства соответствующего размера. Подпрограммы, которые управляют этими структурами данных, написаны на ассемблере, что обеспечивает отличную скорость их работы.
Следующая основная цель HPFS's - оптимизация распределения файлов в совокупности с управляющими структурами.
Время требуемое чтобы переместить головку диска для чтения- записи от одной дорожки до другой дает задержки, особенно при большом расстоянии между дорожками и сильной интенсивностью обращений, поэтому HPFS активно работает, чтобы избегать или минимизировать такие движения головки, распределяя файловое пространство близко и храня управляющие структуры типа Fnodes и свободные растры близко к тому, к чему они относятся.
Высоконепрерывные файлы также помогают файловой системе делать меньшее количество обращений к диску для чтения/записи большого количества секторов одновременно, позволяя эксплуатировать возможности передачи мультисектора контроллером диска.
Одна стратегия использования HPFS - рассеивание недавно созданных файлов по диску (в раздельных полосах, если возможно), поэтому сектора, по которым распределены файлы, поскольку они расширяются, не будут чередоваться.
Другая стратегия - это присоединение приблизительно 4 КБ непрерывного свободного места к файлу каждый раз когда он должен расширится и отсоединять обратно любой излишек, когда файл закрывается.
Если прикладная программа знает окончательный размер нового файла заранее, она может помочь файловой системе, определяя начальное размещение файла когда она создает файл. Система будет тогда искать все растры свободного пространства, чтобы найти последовательную группу секторов, достаточную чтобы сохранить файл. Если это не получится, она будет искать две группы по половине файла, и так далее.
HPFS полагается на несколько различных видов кеширования чтобы минимизировать число физических дисковых передач, которые запрашиваются. Практически это кэширование секторов, как и в FAT.
Но в отличие от FAT, HPFS может управлять очень большими кэшами эффективно и может корректировать кеширование секторов на заголовочной основе. HPFS кеширует также имена путей и каталоги, преобразуя дисковые элементы каталогов в более компактное и эффективное представление в памяти.
Другая методика которая используется HPFS для улучшения эффективности - это упреждающее чтение данных в которых программа нуждается. Например, когда файл открывается, файловая система будет производить упреждающее чтение и кэшировать Fnode и первые несколько секторов файла. Если файл - внешняя программа или информация хронологии в Fnode файла показывает, что операция открытия сопровождается последовательным чтением всего файла, то файловая система будет производить упреждающее чтение и кэшировать еще больше секторов файла.
Когда программа производит относительно маленькие запросы чтения, файловая система всегда выбирает данные из файла в кусках 2 КБ и кэширует излишек, позволяющий последующие операции чтения производить из кэша.
В заключение, для улучшения эффективности работы в мультизадачной системе OS/2, НPFS используется ленивая запись (иногда называемая отложенной записью). Когда программа запрашивает запись на диск, данные помещается в кэш и буфер кэшей помечается как занятый, т.е. несогласованный с состоянием данных на диске. Когда диск становится неактивным, файловая система использует задачу процессов, чтобы записать буфера на диск, начинающийся с самыми старыми данными.