- •Системное программное обеспечение Учебное пособие
- •Введение
- •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.1.Файловая система fat
Итак, файл - это именованная совокупность данных на внешнем устройстве и управление множеством файлов осуществляется с помощью файловой системы. С одной стороны, файловая система понимается как совокупность файлов и управляющей информации на диске для доступа к файлу. С другой - файловой системой называют совокупность программных средств ОС для доступа к файлу. По существу, эти определения отражают разные аспекты проблемы управления данными в операционной системе. Различают:
- регулярные файлы, которые состоят из блоков (кластеров);
- специальные символьные файлы, которые являются логическим представлением драйвера символьного устройства и директории - файлы с информацией о регулярных файлах и других директориях.
Логическая организация файла может быть представлена в виде непрерывной ленты байтов, имеющей начало и конец. В файле определен указатель записи-чтения, показывающий на текущую позицию, к которой осуществляется доступ. При достижении указателем последнего байта может быть зафиксирована ситуация - конец файла (End Of File - EOF). В современных операционных системах принята работа с файлами в цикле "открытие-доступ-закрытие". Для программ, написанных на языках высокого уровня, при запуске автоматически открываются файлы:
стандартного ввода (stdin);
стандартного вывода (stdout);
стандартного вывода ошибок (stderr);
стандартного дополнительного устройства (stdaux);
стандартного устройства печати (stdprn).
По завершении работы программы все открытые файлы принудительно закрываются.
Файлы на дисковых носителях физически организованы в блоки - кластеры. Кластер - это группа подряд расположенных секторов. Число секторов в кластере зависит от формата диска. Каждый кластер имеет свой уникальный номер. Файл представляет собой цепочку кластеров, хаотическим образом размещенных в дисковом пространстве. Для поиска файла на диске, выделения и освобождения кластера, отслеживания свободного пространства на диске используют таблицу размещения файлов (File Allocation Table - FAT).
FAT обычно начинается с логического сектора 1 в разделе DOS (читать по INT 25Н c DX = 1). В общем случае сначала надо прочитать корневой сектор (DX = 0).
Таблица состоит из 12- или 16-битовых элементов (в зависимости от емкости диска). Каждому кластеру соответствует один элемент FAT. Значение элемента:
(0)000 кластер свободен;
(F)FF8-(F)FFF последний кластер в файле
(EOC-end of cНain);
(F)FF7 дефектный кластер;
(X)XXX номер следующего кластера в цепочке кластеров файла.
При создании файла или дозаписи всегда выделяется целый кластер. Номер первого кластера заносится в элемент директория (26-27 байты). Остальные отыскиваются по цепочке:
Первые два элемента FAT используют как индикаторы формата диска. Начальный байт содержит дескриптор носителя : FF..F9 - дискеты, F8 - жесткий диск. Остальные байты заполняются значением FFН. Первым кластером области данных является кластер 2.
12-битный FAT позволяет пронумеровать 4096 кластеров. Для больших дисков это приводит к увеличению размера кластера (128 МБ диск - 32К, 128..256 МБ - 64К). Статистическими исследованиями установлено, что средний размер файла не превышает 1К. Следовательно, коэффициент полезного использования диска равен 1/32 (около 4 %). Для 16-битного кластера число кластеров равно 64К, размер кластера для диска - 256 МБ составляет 4К, т.е. коэффициент равен 25 %. 12-битные FAT применяются для гибких дисков и разделов жестких дисков до 10 МБ.
Чтобы пересчитать номер кластера в абсолютный сектор, можно использовать функцию MSDOS (INT 21Н, AН = 32Н) или прочитать Boot Sector и применить формулы:
wRootSects = (wRootEntries * 32) / wSectSize;
wFirstData = wResSects + (wFatSects * bFatCnt) + wRootSects;
lAbsSector = wFirstData + ((lAnyClusterNo - 2) * bClustects);
Файловая система, основанная на FAT, имеет иерархическую древовидную структуру. В узлах дерева расположены директории. Самый первый называют корневым (root). Директорий - это файл на диске, состоящий из элементов директория длиной 32 байта.
Рис. 21. Структура элемента директория
Имя файла может содержать до восьми букв, цифр и ряда специальных символов. Символы имени хранятся в кодах верхнего регистра (заглавными буквами). В директориях (кроме root) есть два специальных имени: ".." и ".", которые генерируются при создании директория. ".." - имя директория-предка, "." - имя данного директория, т.е. поле "номер первого кластера" содержит номер кластера данного файла-директория.
При уничтожении файла в байт 0 записывают символ "?"(E5Н). Для подстраховки кластеры такого файла не используются, пока это возможно.
Расширение имени служит для уточнения свойств данных, хранящихся в файле. По расширению системные и прикладные программы находят "родные" файлы, т.е. с известной им структурой записи и служебной информацией. Расширение имени может содержать до трех символов.
Рис. 22. Атрибуты файла
Установленные в единицу биты атрибутов имеют следующий смысл:
0 (read only) - только чтение (запись в файл запрещена);
1 (Нidden) - скрытый файл;
2 (system) - системный файл;
3 - метка тома. Байты 0-10 содержат саму метку, остальные поля игнорируются. Метка тома может содержаться только в Root;
4 - директорий;
5 - архивный бит. Устанавливается в 1 при создании файла и записи в него. Сброс в 0 осуществляют программы-архиваторы. При необходимости восстановления проверяется значение бита и, если он равен нулю, то восстановление не требуется, т.к. файл не изменялся. Старшие биты байта атрибутов в системе MS DOS не используются.
Время создания файла:
Дата создания файла:
Значение поля "Год", равное нулю, соответствует 1980 году.
Номер первого кластера файла: порядковый номер элемента в таблице размещения файлов (FAT).
Размер файла. Максимальный размер файла ограничен значением 4 Гбайта - 1 байт.
Для повышения степени рационального заполнения дискового пространства рекомендуется, во-первых, не использовать короткие файлы. Надо стремиться по возможности формировать файлы с длиной, кратной размеру кластера. Во-вторых, не использовать слишком ветвистую и глубокую иерархию директориев. На директорий, как и на любой другой файл, резервируется как минимум один кластер (например, 4К). Учитывая размер элемента директория, получим максимальное число файлов в директории:
4К / 32 = 512 .
Такое количество файлов в директории встречается крайне редко. Впрочем, данная рекомендация серьезно ослабляется требованием структурирования и группировки данных.