- •Системное программное обеспечение Учебное пособие
- •Введение
- •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.2Файлы и Fnodes
Каждый файл или каталог на HPFS томе базируется на фундаментальном объекте файловой системы называемом Fnode. Каждый Fnode занимает одиночный сектор и содержит управляющую информацию и информацию об истории доступа, которые используются внутренне файловой системой, расширенные атрибуты и списки управления доступом. Fnode всегда хранится близко к тому файлу или каталогу, который он представляет. Структура Fnode может принимать несколько форм, в зависимости от размера и степени непрерывности файла или каталога. HPFS рассматривает файл как совокупность групп секторов или цепочку непрерывных секторов. Каждая группа отображается в символической форме парой двойных слов: начальным номером сектора и длиной в секторах (групповое кодирование). С точки зрения прикладной программы файл рассматривается как непрерывный поток байтов.
Пространство, зарезервированное для информации распределения в Fnode может содержать указатели на восемь групп секторов до 16 МБ каждая. (Этот размер является только суммой размера полосы и свободного пространства растра размещения и не является ограничением файловой системы). Маленькие файлы или сильно непрерывные файлы, следовательно, могут описываться полностью внутри Fnode.
HPFS использует новый метод представления расположения файлов, являющихся слишком большими или слишком фрагментированными для Fnode и состоящими более чем из восьми групп секторов.
Структура распределения Fnode становится корнем для B+дерева секторов распределения, которые содержат фактические указатели к группам секторов файла. Корень Fnode имеет участок памяти для 12 элементов. Каждый сектор распределения может содержать, кроме различной информации управления, не более 40 указателей на группу секторов.
Следовательно, распределение с двумя уровнями B+дерева может описывать файл, имеющий 480 (12 * 40) групп секторов с теоретическим максимальным размером 7.68Gb (12 * 40 * 16 МБ) в отдельной реализации.
Маловероятно, что B+дерева с двумя уровнями будет недостаточно для описания сильно фрагментированного файла, по необходимости файловая система будет представлять дополнительные уровни в дереве. Секторы распределения в промежуточных уровнях могут содержать не более 60 внутренних (нетерминальных) узлов. Например, 3-х уровневое распределение B+дерева может описывать файл с 28,800 (12 * 60 * 40) групп секторов.
Групповое кодирование и B+деревья сектора распределения являются эффективными с точки зрения памяти способами определять размер и расположение файла, но они имеют другие значительные преимущества. Трансляция логического смещения файла в номер сектора чрезвычайно быстра: файловая система нуждается только в списке обхода (или B+дерева списках) указателей групп до тех пор, пока она найдет правильный диапазон. Она тогда может идентифицировать сектор внутри группы простым вычислением. Групповое кодирование также делает это просто для логического расширения файла, если недавно назначенный сектор непрерывен с предыдущим последним сектором файла; файловая система просто должна инкрементировать двойное слово последнего группового указателя файла и очистить бит сектора в соответствующем растре свободного пространства.