Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС управление процессами

.pdf
Скачиваний:
7
Добавлен:
28.05.2015
Размер:
1.21 Mб
Скачать

Принцип виртуализации

Он позволяет представить структуру системы в виде набора планировщиков процессов и распределителей ресурсов (мониторов) и использовать единую схему распределения ресурсов.

Наиболее полно принцип проявляется в понятии виртуальной машины (машины вообще), обладающей идеальными для пользователя архитектурными характеристиками:

Единая (т. е. виртуальная) память неограниченного объема, со временем доступа, совпадающим с аналогичным параметром реальной машины;

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

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

Степень приближения реальной машины и виртуальной тем больше, чем больше ее реальные характеристики отличны от машины, полученной пользователем.

Одним из примеров применения принципа виртуальности является имеющаяся во всех ОС Windows, OS/2 VDM, машина, защищенная подсистема, предоставляющая полную MS-DOS среду и консоль для выполнения DOS приложений.

Принцип независимости программ от внешних устройств

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

Принцип совместимости

Суть принципа − в обеспечении совместимости ОС выполнять программы, написанные для других ОС или под другие аппаратные платформы.

Различают совместимость на уровне исходных текстов (текстовая совместимость) и на уровне кодов (двоичная совместимость).

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

Вторая требует совместимость на уровне архитектуры процессов и систем команд. Для реализации такой совместимости используются эмуляторы (прикладные среды).

Одним из средств обеспечения совместимости интерфейсов является соответствие их стандарту POSIX.

11

Принцип открытости и наращиваемости

Открытая ОС доступна для анализа пользователем и системным программистом. Наращиваемая ОС позволяет вводить в состав новые модули, модернизировать существующие и т. д., не нарушая целостность системы. Пример наращиваемости демонстрируют структурированные ОС типа «клиент-сервер» на основе микроядерной технологии, когда ядро системы (привилегированная управляющая программа) сохраняется неизменяемым, а состав серверов (набор непривилегированных услуг) может модифицироваться. Примером открытой системы являет собой ОС Linux и все UNIX-системы.

Принцип мобильности (переносимости)

Принцип требует, чтобы ОС легко устанавливалась с одного процессора на другой, с одной аппаратной платформы на другую. Для этого ОС в основном должна быть написана на языке, имеющимся на всех платформах, куда ее планируется переносить (предпочтительно на С). Кроме того, в ней должны быть минимизированы (а еще лучше − исключены) средства взаимодействия с аппаратурой. Не исключенные аппаратно зависимые части кода должны быть изолированы в хорошо локализируемых модулях. Тогда при переносе меняются (или подстраиваются) только эти локальные данные и функции взаимодействия с ними. ОС, соответствующие стандарту POSIX, являются переносимыми, поскольку для этой цели он и создавался.

Принцип безопасности вычислений

Правила безопасности защищают ресурсы одного пользователя от другого и устанавливают квоты на ресурсы для предотвращения захвата всех ресурсов одним пользователем.

Основы стандартов в области безопасности вычислений были заложены в документе под названием «Критерии оценки наземных компьютерных систем», изданном Национальным центром компьютерной безопасности США (NCSC – National Computer Security Center) в 1983 г. В соответствии с ним, безопасной считается система, посредством специальных механизмов контролирующая доступ к информации так, что доступ к ней получают только лица с соответствующими полномочиями или процессы, выполняющиеся от их имени.

Определено 4 уровня безопасности : А (высший) − D (низший), при этом в класс D попадают системы, у которых выявлено несоответствие всем трем высшим классам.

Класс С делится на два уровня:

1.С1 обеспечивает защиту данных от ошибок пользователя, но не от злоумышленников.

2.С2 защищает данные в обоих ситуациях.

На уровне С2 должны присутствовать:

• Секретность входа (идентификация пользователей по уникальному имени и паролю).

12

Контроль доступа (информирование владельца данными о лицах, имеющими доступ к данным и их правах на пользование ими).

Наблюдение и учет за ситуацией с безопасностью (фиксация попыток получить доступ, создать или удалить системные реестры).

Защита памяти (удаление содержимого памяти предыдущего сеанса работы перед началом нового).

Системы уровня В реализуют контроль доступа (каждый пользователь имеет рейтинг защиты и доступ только в соответствии с этим рейтингом). Эти системы защищены от ошибочного поведения пользователя.

Уровень А требует дополнительно формального, математически доказанного соответствия системы требованиям безопасности. Однако А-уровень занимает своими управляющими механизмами до 90% процессорного времени. Более безопасные системы не только снижают продуктивность, но и ограничивают число доступных приложений. Различные коммерческие структуры, например, банки, поддерживают безопасность своих систем, как правило, на уровне С2.

ОС виртуальных машин

••••••••• • • •• •••

Ý

Ý

Ý

Рис. 7

Несколько вариантов реализации промежуточного ПО

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

13

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

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

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

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

Виртуальная машина — это вычислительная среда, набор ресурсов и правил работы которой формируется (с помощью программного обеспечения) в некой другой вычислительной среде.

Виртуальная машина — гипервизор

Виртуальные машины являются основой таких технологий, как ESX Server компании VMware и свободно распространяемый монитор виртуальной машины Xen. Оба продукта представляют собой серверы, в которых используется одновременно несколько операционных систем, ориентированных на архитектуру x86. Подходы, реализованные в этих продуктах, — разновидности того, что называют виртуальными машинами для аппаратного уровня, для «голого железа» или виртуальными машинами типа гипервизор. Промежуточный программный уровень (называемый монитором виртуальной машины или гипервизором) размещается между ОС и аппаратным обеспечением. Благодаря гипервизору у всех работающих на данном компьютере операционных систем создается иллюзия, что каждая из них является единственной.

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

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

14

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

Хостовые виртуальные машины

Microsoft Virtual PC и GSX Server и GSX Workstation компании VMware

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

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

Виртуальные машины уровня приложений

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

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

Параллельная виртуальная машина

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

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

15

•••••••

,

,

,

. ,

.

.

.

Рис. 8

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

«Экзо» — приставка, обозначающая нечто внешнее, находящееся снаружи.

В традиционных операционных системах ядро предоставляет не только минимальный набор сервисов, обеспечивающих выполнение программ, но и большое количество высокоуровневых абстракций для использования разнородных ресурсов компьютера: оперативной памяти, жестких дисков, сетевых подключений. В отличие от них, ОС на основе экзоядра предоставляет лишь набор сервисов для взаимодействия между приложениями, а также необходимый минимум функций, связанных с защитой: выделение и высвобождение ресурсов, контроль прав доступа, и т. д. Экзоядро не занимается предоставлением абстракций для физических ресурсов – эти функции выносятся в библиотеку пользовательского уровня (так называемую libOS).

16

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

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

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

••••• ••••••-••••••

•• •• • «•• •••• -••••••»

-

,

- .

,

,

, ,

.

,

.

,

,

.

,

.

Рис. 9

Модель «клиент-сервер»

Модель «клиент-сервер» − это еще один подход к структурированию ОС. В широком смысле модель «клиент-сервер» предполагает наличие программного компонента − потребителя какого-либо сервиса-клиента, и программного компонента − поставщика этого сервиса-сервера. Взаимодействие между клиентом и сервером стандартизуется, так что сервер может обслуживать клиентов, реализованных различными способами и, может быть, разными производителями. При этом главным требованием является то, чтобы они запрашивали

17

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

Рис. 10

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

Данная теоретическая модель является идеализированным описанием системы клиент-сервер, в которой ядро состоит только из средств передачи сообщений. В действительности различные варианты реализации модели клиент-

18

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

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

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

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

19

1.• •• •• •••• (•••••••••••),

.

2. • •• • • •••••••• (••••••),

,

.

Рис. 11

Ядро в привилегированном режиме

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

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

(kernel mode), или режимом супервизора (supervisor mode). Подразумевается,

что операционная система или некоторые ее части работают в привилегированном режиме, а приложения – в пользовательском режиме.

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

20