Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
02.05.2014
Размер:
1.46 Mб
Скачать

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

В ОС 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 бит, причем формат этих элементов полностью определяется процессом или задачей, создавшими очередь.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Соседние файлы в папке Операционные системы