Файловая система содержит 2 драйвера:
- Доступ к традиционным дискам.
- Доступ к CD-ROM.
Часть системы, которая используется для доступа к обычным дискам, называется VFAT. Она позволяет использовать длинные имена файлов (255 символов). Кроме этого поддерживает и короткие имена (8.3). Длинные имена рассматриваются как правильные, а короткие - псевдонимы.
Для поддержания совместимости VFAT и FAT, на каждый файл, имеющий длинное имя, создается короткое на основе длинного имени следующим образом: пробелы удаляются с уплотнением, недоступные символы заменяются знаком подчеркивания, имя урезается до 6 символов, в конце имени ставится знак "тильда", номер 1, 2, 3 и т.д. и расширение.
Стандартная программа для проверки файловой структуры - ScanDisk.
Выполняет два уровня проверки:
- Стандартная. Используется для файловой структуры и папок.
- Полная. Дополняет стандартную проверкой поверхности диска на чтение и запись.
Функции ScanDisk:
- Собирает утерянные кластеры в отдельные файлы.
- Ликвидирует перекрестные ссылки.
- Исправляет и пытается исправить длинные имена файлов, если они запорчены.
Defrag - дефрагментация файлов и файловой структуры. Кэширование дисков.
Кэш - это область памяти, которая используется в качестве буфера жесткого диска. Существует два вида кэширования:
- Упреждающее чтение, т.е. система пытается предугадать какие данные жесткого диска потребуются ей в дальнейшем и загружает их в кэш.
- Отложенная запись, т.е. информация запоминается в кэш до полной записи ее на диск.
- Файл обмена служит в качестве виртуальной памяти, создается автоматически и чем меньше оперативная память компьютера, тем интенсивнее он используется.
Доступ к CD-ROM.
Является компонентом файловой системы CDFS. В DOS доступ к CD-ROM осуществляется специальным драйвером MSCDEX. К CD-ROM применим 1-й вид кэша: упреждающее чтение. Необходимый объем кэша устанавливается в зависимости от типа дисковода.
Корзина.
Это приемник для удаленных файлов. Windows отслеживает содержимое корзины и при ее переполнении удаляет старые файлы. По умолчанию объем корзины составляет 10% от емкости диска. Существует несколько вариантов настройки корзины:
- не использовать вообще
- использовать одну корзину на все диски
- использовать на каждый диск по одной корзине
4.5. Начальная загрузка Windows.
Процесс загрузки имеет 4 фазы:
- Boot Strapping (самозагрузка). Это инсталляция BIOS, проверка стандартного оборудования и поиск начального кода ОС. По завершению начальной проверки оборудования BIOS завершает свою работу. После этого с диска загружается boot-сектор ОС.
- Драйверы MS-DOS. На этом этапе выполняются инструкции файла io.sys. Для поддержки совместимости с MS-DOS система загружает драйверы DOS.
- Реальный режим. На этом этапе ОС загружает 3 файла: win.com, vmm32.exe и system.ini.
win.com выполняет начальную проверку системы и загружает компоненты ядра Windows.
vmm32.exe (менеджер виртуальных машин) - осуществляет начальную загрузку драйверов виртуальных устройств и создает все необходимые виртуальные машины.
system.ini - загружаются драйвера, прописанные в этом файле. - Защищенный режим. В этом режиме vmm переключает CPU в защищенный режим. После этого загружает остальные части ОС в следующем порядке:
- ядро системы (krnl386.exe)
- графический интерфейс (gdi.exe, gdi32.exe)
- загрузка файлов ввода/вывода (пользовательский интерфейс - user.exe, user32.exe)
- загрузка системных ресурсов (шрифты)
После выполнения указанных шагов vmm загружает компоненты рабочего стола.
После аппаратно-базированной части начальной загрузки появляется сообщение Start Windows. Если в это время нажать F8, то появится стартовое меню, состоящее из 8 пунктов, где можно выбрать режим загрузки:
- Normal - нормальный старт Windows.
- Logged - отслеживание операций во время загрузки системы. Система создает файл bootlog.txt, который используется для определения ошибок.
- Safe Mode - запуск системы в безопасном режиме. Система загружает драйверы мыши, клавиатуры, видеоадаптера.
- Safe Mode with network support - загрузка в безопасном режиме с сетевыми драйверами.
- Step by Step - пошаговое выполнение загрузки файлов.
- Command prompt only - режим командной строки. В нем графическая оболочка не загружается, а появляется командная строка.
- Safe Mode command prompt only - безопасный режим, с использованием командной строки.
- Загружается предыдущая версия DOS, поверх которой была установлена Windows.
4.6. Диспетчер виртуальной памяти.
Развитие технологии ОС сводилось к поиску того, как сделать процессор занятым большую часть времени, и таким образом выполнять больший объем работы. Многозадачные ОС загружают в память несколько программ и поддерживают высокий уровень загрузки процессора, переключаясь между ними.
Распределение всей доступной памяти между процессами и, в то же время, защита кода и данных одного процесса от других и составляет задачу управления памятью, а в WinNT это управление виртуальной памятью.
Раньше не было возможности выполнять программу, размер которой превышает объем физического памяти компьютера.
Позже программисты стали писать оверлейные программы, которые выгружали одни части своего кода на диск и загружали другие части в память.
Виртуальная память - это централизованная система выгрузки на диск содержимого памяти при ее переполнении. Она позволяет программистам создавать и запускать программы, который требуют памяти больше, чем есть у компьютера. Компонент исполнительной системы NT, отвечающий за виртуальную память - это диспетчер виртуальной памяти (ДВП).
Память компьютера можно описать в двух терминах: физической структуры и логической структуры.
Физическая память организована как последовательность однобайтовых ячеек; байты пронумерованы от 0 до общего размера памяти. Этот набор чисел и составляет физическое адресное пространство компьютера.
Логическая память (виртуальная память) - способ представления памяти для программы и в современных ОС она редко совпадает с физической структурой памяти.
Виртуальное адресное пространство (ВАП) - это набор адресов памяти, которые могут использовать потоки процесса. Каждый процесс имеет отдельное адресное пространство, которое обычно гораздо больше размера физической памяти.
Вывод: диапазон физических адресов для компьютера ограничен объемом имеющейся у него памяти, а диапазон виртуальных адресов ограничен только количеством битов в адресе => несоответствие между физическим и виртуальным адресным пространством приводит к тому, что система виртуальной памяти (ДВП) обязательно должна выполнять следующие 2 задачи:
- Транслировать (отображать) некоторые подмножества виртуальных адресов каждого процесса в участке физической памяти.
- Выгружать на диск часть содержимого памяти, когда она переполняется, т.е. когда потоки, выполняющиеся в системе пытаются использовать больше памяти, чем доступно физически (диск выступает в роли "резервного хранилища").
Перемещение данных между памятью и диском было бы недопустимо медленным, если бы ДВП перемещал лишь по одному байту за один раз, поэтому ВАП разделено на блоки равного размера, которые называются страницами (виртуальными страницами). Соответственно ФАП (физическое адресное пространство) разделяется на блоки, которые называются страничными фреймами, которые используются для хранения виртуальных страниц.
В любой момент времени, в памяти находится некоторое множество страниц из ВАП каждого процесса.
Страницы, находящиеся в физической памяти, и доступные немедленно, называются действительными страницами.
При обращении потока по виртуальному адресу, который находится на недействительной странице, процессор генерирует системную ловушку (страничная ошибка), ДВП находит нужную страницу на диске и загружает ее в свободный страничный фрейм ФАП. Когда число доступных фреймов становится мало, ДВП выбирает фреймы, подлежащие освобождению, и копирует их содержимое на диск. Этот процесс называется подкачкой виртуальных страниц, который невидим прикладному программисту.
Отображение виртуальных страниц в физические фреймы.
Задачи ДВП:
- Отображение виртуальных адресов в физические.
- Пересылка данных между ФАП и ЖМД.
- Обеспечение легкого и эффективного способа совместного использования памяти двумя процессами.
- Защита как совместной, так и "частной" памяти от несанкционированного доступа.
- (для WinNT) Обработка страничных ошибок от нескольких потоков одновременно.
4.7. Управление памятью в ОС Windows.
ДВП представляет набор базовых сервисов, при помощи которых процесс может напрямую управлять своей виртуальной памятью.
Эти сервисы позволяют процессу:
- Выделять память в два этапа.
- Выполнять чтение и запись в виртуальную память
- Фиксировать виртуальные страницы в физическую память.
- Получать информацию о виртуальных страницах.
- Защищать виртуальные страницы.
- Сбрасывать содержимое виртуальных страниц на диск.
ДВП устанавливает двухфазный способ выделения памяти - это резервирование памяти (1), а затем ее передача (2).
Зарезервированная память - это набор виртуальных адресов, которые ДВП зарезервировал для использования процессом.
Переданная память - это память, для которой ДВП выделил место в файле подкачки.
Файл подкачки - это дисковый файл, в котором записываются виртуальные страницы, когда их надо удалить из памяти. Поток может либо сразу зарезервировать и передать виртуальную память, либо вначале лишь зарезервировать, передавая по мере необходимости.
Совместное использование памяти.
Виртуальная память представляет собой удобный механизм совместного использования ФАП.
Т.к. у каждого процесса есть отдельное виртуальное адресное пространство, ОС достаточно загрузить в ФАП один раз ту программу, которую используют оба процесса => ДВП будет отображать виртуальные адреса первого или второго процесса на физические фреймы, в которых находится требуемая программа.
Защита памяти.
Существует 4 формы защиты памяти, которые используются в современных ОС:
- Отдельное адресное пространство для каждого процесса.
Аппаратура не позволяет потоку обращаться по виртуальным адресам другого процесса. - Два режима работы: режим ядра, в котором потоки имеют доступ к системному коду и данным; пользовательский режим, потоки которого такого доступа не имеют.
- Механизм постраничной защиты, т.е. с каждой виртуальной страницей связан набор флажков, определяющий какие типы доступа к ней разрешены в пользовательском режиме и какие в режиме ядра.
- (для WinNT) Пообъектная защита памяти. Всякий раз, когда процесс открывает описатель объекта, справочный монитор защиты WinNT проверяет, имеет ли процесс, пытающийся выполнить операцию соответствующие права доступа.