Диспетчер установленных файловых систем

В ОС W95 унифицирован доступ к файлам, расположенных на обычных локальных дисках, на компакт-дисках и на сетевых дисках. Этот доступ осуществляется с помощью диспетчера установленных файловых систем, который является посредником между различными файловыми системами и приложениями Windows.

Установленными файловыми системами в W95 являются VFAT, CDFS (CD-ROM FILE SYSTEM, файловая система компакт-дисков, заменяющая MS-DOS MSCDEX) и сетевая система переадресации.

VFAT – родная 32 разрядная файловая система W95. Ее контролирует драйвер VFAT.VXD.

Сетевые системы переадресации имеют названия VREDIR и NWREDIR.

Видеосистема W95 реализована на архитектуре мини-драйвера. Дисплейные драйверы включены в систему в виде аппаратно-независимого модуля поддержки отображения растровой графики DIBENG.DLL.

Поставщики оборудования пишут только мини-драйвер, т.е. аппаратно-зависимый код.

Для работы виртуальных машин MS-DOS с дисплеем служит виртуальный мини-драйвер VDD. Он обеспечивает переход от текущего видео режима к полноэкранному режиму VGA и обратно. VDD управляет работой видеопамяти, режимами дисплея, портами графическим и символьным режимами.

Виртуальный драйвер VFLATD.VXD управляет видеопамятью, поддерживая кадровый буфер объемом до 1 Мбайт.

Формирование изображения под управлением W-программы происходит в несколько стадий, в зависимости, от того, полноэкранное ли это приложение или оконное. Для работы приложения MS-DOS в окне свой особый сценарий.

OS/2 – ОС IBM

ОС IBM OS/2 Warp является полнофункциональной системой. Это означает, что для ее работы не требуется DOS. Она устанавливается в отдельный раздел жесткого диска или в раздел DOS ( по желанию пользователя).

Ядро ОС OS/2, как и ядро всякой другой полнофункциональной системы, содержит весь набор компонент, или систем, необходимых для решения таких задач, как обеспечение доступа к дискам, управление памятью, запуск программ, организация межпрограммного взаимодействия, организация интерфейса с пользователями и т.д.

Рассмотрим особенности основных систем.

Мультизадачность

ОС OS/2 использует вытесняющую (preemptive) мультизадачность. Как правило, пользователю нужно одновременно работать с несколькими программами одновременно, поэтому современные ОС обеспечивают возможность переключения между программами.

В DOS была доступна так называемая «переключательная» мультизадачность. Когда запускалось несколько резидентных программ, каждая из которых активировалась при определенной комбинации клавиш. В этом случае выполнение текущей программы приостанавливалось и на экране появлялось резидентная программа.

В ОС MS-DOS 5.0 был встроен специальный переключатель программ DOS Shell, который позволял запустить одновременно несколько обычных (не резидентных) программ DOS и переключаться между ними с помощью удобной диалоговой оболочки. Однако этот переключатель DOS Shell не прижился в MS-DOS так как был вытеснен Microsoft Windows.

И резидентные программы, и переключатель задач не обеспечивают реальной мультизадачности так как, пока одна из запущенных программ работает, другие находятся в «замороженном» состоянии.

Операционные системы Windows 3.* в некоторой степени решают проблему одновременного использования нескольких программ, организуя невытесняющую (nonpreemptive) мультизадачность, которую еще называют кооперативной и добровольной. Суть невытесняющей мультизадачности заключается в том, что ОС не выполняет принудительного переключения одновременно запущенных приложений, например по прерыванию таймера, но приложения время от времени передают друг другу управление по своей инициативе.

Однако ни пользователь, ни программист, создающий приложения для Windows, не может изменить приоритет этих приложений.

Дело в том, что для каждой программы DOS ОС Windows создает отдельную виртуальную машину, но все приложения Windows работают на одной системной виртуальной машине. При этом пользователь может принять приоритеты отдельных виртуальных машин, но не может изменить приоритет приложений Windows, работающих в рамках одной виртуальной машины.

Фактически виртуальные машины Windows работают в режиме вытесняющей мультизадачности. При этом каждая виртуальная машина получает для работы квант времени.

Системная виртуальная машина тоже получает квант времени. Поэтому приложения Windows, добровольно разделяя между собой кванты времени, выделенные системой виртуальной машине, сами по себе работают в режиме невытесняющей мультизадачности. Это может привести к зависанию ОС в результате запуска плохо отлаженного приложения. Результат – перегрузка ПК, что не всегда приемлемо.

В ядро ОС OS/2 встроена система разделения времени, выделяющая каждой запущенной программе кванты времени. Кванты времени выделяются по прерыванию таймера, поэтому будут работать все запущенные программы независимо от их состояния. Такая мультизадачность называется вытесняющей. Она реализована не только в IBM OS/2, но и в Microsoft Windows 95, Windows NT и в различных версиях UNIX.

Когда пользователь запускает программу в среде IBM OS/2, операционная система создает процесс. Для него выделяется отдельное адресное пространство, изолированное от адресных пространств других процессов. Изоляция выполняется на физическом уровне м использованием схемы адресации памяти защищенного режима.

В рамках процесса создается задача, которая выполняется автономно и асинхронно по отношению ко всем остальным активным задачам. После запуска эта задача может создать в рамках процесса другие задачи. Задача больше всего похожа на подпрограмму, которая вызывается из основной программы, но выполняется по отношению к ней асинхронно. Это возможно благодаря системе разделения времени, которая передает управление всем активным задачам по прерыванию таймера и с учетом приоритетов задач.

Все задачи, созданные в рамках одного процесса. Используют общее адресное пространство процесса. ОС OS/2 присваивает приоритеты не процессам и задачам, поэтому можно управлять только приоритетом отдельных задач.

При использовании параллельно работающих задач возникает проблема синхронизации их выполнения. ОС OS/2 обеспечивает такие средства синхронизации задач, как критические секции и семафоры.

Программист может организовать внутри задачи фрагмент когда, который должен выполняться в монопольном режиме по отношению ко всем другим задачам создаваемого их процесса. Такой фрагмент называется критической секцией. (он ограничен сверху и снизу функциями DosEnter CritSee и DosExitCritSee)

По своей сути критические секции предназначены для временной отмены мультизадачности в рамках одного процесса. Обычно критические секции используются для организации доступа к такими ресурсам, которые можно использовать только последовательно.

Семафоры служат для организации правильной последовательности выполнения задач. По запросу задачи ОС может создать один или несколько семафоров, для синхронизации задач, выполняющихся в рамках одного или разных процессов. При создании семафора ему присваивается идентификатор, который используется во всех последующих операциях, выполненных над семафором.

Семафор можно представить как объект, способный находиться в двух состояниях: установленным и сброшенным. При помощи специальных функций задача может переключать семафор из одного состояния в другое, а так же ожидать момента, когда семафор может быть переключен другой задачей. В составе программного интерфейса OS/2 имеется набор функций для работы с задачами и семафорами. Задача может создать семафоры 3-х типов, с помощью которых можно организовать ожидание одного или нескольких событий, а так же организовать последовательное использование ресурсов, к которым невозможен одновременный доступ со стороны нескольких задач.

Так уже отмечалось при запуске программы ОС создает новый процесс, имеющий изолированное адресное пространство. Изоляция повышает надежность системы, так как ни в результате ошибки ни намеренно один процесс не сможет адресовать память другого процесса. Однако полностью изолированные процессы не могут обменяться данными через оперативную память. Хотя один процесс может подготовить данные для другого процесса в виде файла на диске, но этот способ передачи данных хотя и работает, но медленно.

Система управления памятью OS/2 позволяет создавать совместно используемые области памяти, которые, в принципе, можно использовать для организации передачи данных между процессами. Однако такой способ требует использования средств синхронизации задач и непригоден для передачи данных между процессами, запущенными на разных рабочих станциях локальной сети.

В ОС OS/2 предусмотрено специальное средство передачи данных между различными процессами - каналы (pipes).

Канал – это специальная область памяти созданная ОС по запросу процесса специально для передачи данных между процессами. Канал может иметь имя. Процесс создает канал, вызывая специально предназначенную для этого функцию, возвращающую идентификатор канала, затем процесс может предавать данные в канал или принимать их из канала, вызывая функции, напоминающих функции записи и чтения в DOS. ОС OS/2 позволяет создавать каналы между процессами, запущенными на различных рабочих станциях локальной сети.

Помимо каналов ОС имеет другое, более сложное средство передачи данных между процессами – очереди (queue)

Очереди позволяют организовать передачу данных от нескольких "передающих" процессов к одному "принимающему". Они так же часто используются для передачи данных между различными задачами внутри одного процесса.

Через очередь можно предавать элементы данных размером 32 бит, причем формат этих элементов полностью определяется процессом или задачей, создавшими очередь.

Процесс или задача, создавшие очередь, называются серверным процессом для очереди. Серверный процесс является владельцем очереди и может извлекать или читать из нее информацию в любом порядке.

Остальные процессы, использующие очередь, называются клиентными процессами. Они могут только записывать данные в очередь, но не читать их оттуда т.е. очередь служит для передачи данных только в одном направлении от клиентных процессов к серверному процессу. Для синхронизации передачи данных для очереди можно назначит один семафор.

Система управления памятью.

 
  Диспетчер установленных файловых систем - student2.ru

1. Управление памятью в DOS.

Схема адресации реального режима имеет много недостатков. Прежде всего любая программа могла обратится для чтения или записи в любую область оперативной памяти. Например, могла разрушить таблицу векторов прерываний или операционную систему. Размер сегмента памяти не превышал 64 Кбайт, что создавало трудности для адресации данных большого размера. Поэтому система управления памятью DOS существовала лишь номинально, практически программы должны были сами внимательно следить за использованием памяти.

С появлением i 80286, способного работать не только в реальном, но и в запущенном режиме, появилась возможность создания более завершенной системы управления памятью.

Самое главное достижение запущенного режима работы процессора заключается в том, что программы не оперировали непосредственно с физическими адресами памяти, а использовали для адресации так называемые таблицы глобальных и локальных дескрипторов. Эти таблицы готовились операционной системой м программы не могли их изменить самостоятельно. Кроме того, был предусмотрен механизм защиты, с помощью которого операционная система может предотвратить доступ обычных программ к системной памяти и памяти других программ.

Появилось понятие "логический адрес". Когда программа адресуется к памяти в защищенном режиме, она не указывает сегмента и смещение, в место этого она пользуется логическим адресом.

Логический адрес состоит из двух компонент - селектора и смещения.

Селектор служит индексом в таблицах дескрипторов, содержащих помимо другой информации 24 – разрядные базовые адреса сегментов. Дескриптор описывает сегмент памяти и содержит не только базовый адрес, но и размер сегмента и поле доступа. Для получения 24- разрядного физического адреса базовый адрес складывается с 16 – разрядным смещением.

 
  Диспетчер установленных файловых систем - student2.ru

Эта схема памяти была использована в первых версиях OS\2 и в стандартном режиме Windows.

Создавая дескриптор, операционная система описывает в нем размер памяти, если программа, адресуя блок памяти с помощью данного дескриптора, попытается выполнить чтение или запись за пределами сегмента, произойдет прерывание и работа программы будет остановлена.

Далее для каждого сегмента памяти, описанного в таблице дескрипторов, храниться его тип.

Выделяются сегменты кода, сегменты данных и системные сегменты. Программа не может ни чего записать в сегмент кода, ей можно даже запретить читать сегменты кода. Сегмент кода содержит программный код и по тому может только выполняться. Сегменты данных предназначены исключительно для хранения данных. К системным сегментам обычная программа не имеет к ним ни какого доступа.

В защищенном режиме предусмотрено 3 уровня доступа, называемые так же кольцами защиты,. Специальное поле доступа дескриптора сегмента памяти содержит номер кольца защиты, необходимый для доступа к сегменту.

Самым привилегированным является нулевое кольцо защиты в котором располагаются сегменты операционной системы и драйверы. В первом и во втором кольцах могут располагаться менее критичные системы, такие, например, как программы обслуживания, программы, работающие с портами аппаратуры, система управления базами данных и т.п. обычные программы располагаются в третьем, наименее привилегированном кольце защиты.

Операционная система IBM OS/2 Warp способна работать только на процессоре i 386 и выше.

В отличие от i 80286 эти процессоры могут работать в 32 – разрядном режиме с использованием так называемой страничной адресации памяти.

Схема страничной адресации следующая.

 
  Диспетчер установленных файловых систем - student2.ru

Программы оперируют с логическим адресом, состоящим из 16- разрядного селектора и 32- разрядного смещения. С помощью таблицы дескрипторов логический адрес преобразуется в 32- разрядный линейный адрес.

На следующем этапе 32- разрядный линейный адрес разбивается на 10- разрядный индекс в таблице страниц, 10- разрядный номер страницы и 12- разрядное смещение. Операционная система создает каталог таблиц страниц, а также одну или несколько таблиц страниц. Каждый элемент таблицы страниц описывает один блок памяти размером 4 Кб.

Эта сложная схема адресации не видна программисту, т.к. заполнение таблиц дескрипторов, каталога таблиц, страниц и самих таблиц страниц выполняется операционной системой. Программист работает только с логическим адресом, состоящим из 16 – разрядного селектора и 32 – разрядного смещения.

В то же время ОС имеет большую свободу при отображении физических страниц памяти в пространство логических адресов. Незаметно для программ она может перемещать страницы в памяти или изменять физические адреса с сохранением логических адресов. При использовании виртуальной памяти часть страниц можно разместить на диске в специальном файле и загрузить в оперативную память при необходимости.

Для программиста виртуальная память создает иллюзию присутствия в системе ОЗУ очень большого объема (в IBM OS/2 Warp – 512 Мбайт).

Модель памяти FLAT.

Схема преобразования адресов процессора 386 позволяет работать с сегментами очень большого размера – порция 4 Гбайт. Это намного больше, чем нужно для программирования в среде OS/2.

В результате можно полностью отказаться от использования сегментированной модели памяти. Для этого достаточно установить базовый адрес, получаемый с помощью сегментных регистров процессора, равным нулю. После этого одним только уменьшением 32-разрядного смещения можно адресовать любую область памяти.

Соответствующая модель памяти называется моделью FLAT или сплошной (несегментированной) моделью памяти.

Таким образом, составляя 32-разрядные программы для OS\2 можно забыть про селекторы, сегментные регистры, модификаторы near и far. Содержимым сегментных регистров управляет ОС. Программисту это делать запрещено. В состав программного интерфейса OS\2 входят многочисленные функции, с помощью которых приложение может получать блоки памяти нужного размера и с нужными характеристиками.

Файловая система.

Файловая система является фундаментом, на котором лежит любая современная ОС, так как в файлах хранятся программы и библиотеки ОС, программы и данные пользователя.

ОС OS\2 способна работать как с файловой системой DOS, так и со своей собственной системой HPFS. Кроме того в OS\2 есть средства монтирования других файловых систем.

OS\2 можно установить в существующий раздел диска, созданный в стандарте DOS, либо в созданный заново раздел HPFS. При этом OS\2 будет иметь доступ к обоим разделам.

ОС DOS использует файловую систему, основанную на таблице размещения файлов FAT, обладающую рядом недостатков, в частности низкой производительностью в мультизадачных ОС. Этот недостаток объясняется тем, что в таблицах FAT, каталог и файл находятся в трех различных и, как правило, не смененных областях диска, поэтому для чтения файла нужно выполнить много перемещений головок.

Для повышения производительности IBM OS\2 была создана файловая система (High Performance File System) HPSF – высокопроизводительная файловая система. Эта файловая система оптимизирована для мультизадачной среды и ускоряет одновременную работу программ с файлами, расположенными на дисках большого объема. Специальный алгоритм размещения файлов значительно уменьшает фрагментацию файлов, что повышает производительность системы. При размещении файла для него подбирается подходящий непрерывный свободный участок диска и оставляется некоторый запас свободного пространства. Когда файл расширяется, для него выделяются в первую очередь секторы из зарезервированного для этого файла участка диска. Если же размер файла увеличился значительно, для него может быть выделен еще один или несколько свободных участков.

При использовании HPFS можно использовать имена файлов размером до 254 символов. Имя может содержать строчные и прописные буквы, пробелы и другие символы в произвольном количестве.

В дополнение к обычным атрибутам файлов как «только для чтения», «скрытый», «системный» и «архивированный» OS/2 хранит для каждого файла набор расширенных атрибутов. Это тип файла, комментарий и ключевые слова для поиска, пиктограммы для визуального представления файлов и т.д.

В программном интерфейсе имеются функции для операций с файлами, в том числе и многозадачные. Есть средства для работы с расширенными атрибутами файлов, для создания, удаления и переименования файлов и каталогов и другие необходимые функции.

Библиотеки динамической компоновки.

При компоновке программы DOS в загрузочный ЕХЕ – файл добавляется программный код функций, взятых из стандартных библиотек транслятора или из дополнительных библиотек. Этот метод компоновки называется статическим. При его использовании файл программы DOS содержит в себе все необходимое для работы, за исключением кода функций DOS и BIOS, вызываемого с помощью приложений.

В мультизадачной среде такой подход приведет к неэкономному использованию оперативной памяти, так как в нее будет загружено несколько копий одних и тех же модулей.

В OS/2, как и в других мультизадачных операционных системах применяется динамическая компоновка, исключающая дублирование кода функций. Для этого группы используемых вместе функций объединяются в файлы с расширением имени .dll, которые называются библиотеками динамической компоновки, динамическими библиотеками или просто DLL - библиотеками.

В процессе компоновки код внешних функций, расположенных в DLL – библиотеках, не включается в загрузочный ЕХЕ – файл программы. Вместо этого там располагается ссылка на внешние функции. Когда запускается первая программа, использующая функцию из DLL – библиотеки, вся библиотека загружается в оперативную память. Если потом пользователь запустит вторую копию этой программы, то будет использован код функции, уже загруженный в память в процессе работы первой программы.

Этим достигается значительная экономия памяти, поэтому динамические библиотеки очень широко используются в практике программирования. Ядро OS/2 в основном состоит из DLL – библиотек, поэтому многие функции ядра доступны программам через механизм динамической компоновки.

Драйверы.

Программы DOS часто вынуждены работать непосредственно с картами периферийных устройств, таких как видеоконтроллер или последовательный порт. Это связано с тем, что DOS и BIOS не имеют в своем составе достаточно быстрых и удобных средств для работы с этими устройствами.

Если нужно обеспечить быстрый ввод изображения на экран для создания динамичной игры или разработать телекоммуникационную программу, необходимо изучать аппаратное обеспечение ПК, становясь системным программистом.

На этом пути есть несколько неприятных моментов:

во-первых, трудно найти подробное описание портов видеоконтроллеров и другой аппаратуры, так как оно поставляется фирмами-изготовителями не всем желающим.

во-вторых, разнообразие аппаратуры велико. Сейчас выпускаются сотни несовместимых друг с другом видеоконтроллеров, принтеров, контроллеров дисков и т. д.

в-третьих, аппаратура постоянно совершенствуется. Новые периферийные устройства не всегда совместимы со старыми. Поэтому старые программы либо не работают на новых ПК, либо работают не так как нужно.

В составе OS/2 поставляется набор драйверов для всех стандартных устройств ПК, что исключает необходимость работы с аппаратурой на уровне портов. В крайнем случае, можно использовать драйверы производителя аппаратуры. Нужно только убедиться, что он предназначен для той версии ОС, которая используется на ПК.

Так же как в MS DOS в OS/2 драйверы подключаются в файле конфигурации config.sys Однако в отличие от DOS файл конфигурации содержит две команды подключения драйверов – BASEDEV и DEVICE. Первая подключает базовые драйверы, без которых работа OS/2 невозможна, вторая – все остальные.

Наши рекомендации