Конспект лекций по дисциплине «Операционные системы и среды»

Вид материалаКонспект
2.2.Объектная модель
2.3.Симметричная мультипроцессорная обработка
Подобный материал:
1   2   3   4   5   6   7   8

2.2.Объектная модель


В своей книге "Создание объектно-ориентированного программного обеспе­чения" Бертран Мейер (Bertrand Meyer) характеризует ОС как программы, "над которыми ничего нет" ("have no top")3. Как и в случае других больших про­граммных систем, трудно найти одну "главную программу", которая управляет всей ОС. Таким образом, вместо того, чтобы разрабатывать такую систему сверху вниз, по объектно-ориентированной методологии сначала рассматривают дан­ные, с которыми должна работать программа для выполнения своей задачи. Для ОС такими данными являются системные ресурсы — файлы, процессы, блоки памяти и т. д.

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

Один из способов минимизации необходимых изменений в объектно-ориентированных программах — это сокрытие физического представления данных внутри объектов. Объект (object) — это структура данных, физический формат которой скрыт в определении типа. Он имеет набор свойств, называе­мых атрибутами (attributes), и с ним работает группа сервисов.

Хотя Windows 2000 не является в строгом смысле объектно-ориентирован­ной системой (как определяет это понятие Мейер), она использует объекты для представления системных ресурсов. Каждый системный ресурс, который могут совместно использовать несколько процессов, — файлы, память и физические устройства — реализован как объект и обрабатывается объектными сервисами. Такой подход уменьшает влияние изменений, которые могут происходить в си­стеме с течением времени. Например, если изменение в ОС вызвано изменением в аппаратуре, то необходимо изменить только объект, представляющий данный аппаратный ресурс, и его сервисы; код, который использует объект, не нуждает­ся в модификации. Аналогично, если нужно ввести в систему поддержку нового устройства, создается новый объект, и добавление его к системе не нарушает существующего кода.

Помимо того, что уменьшается влияние изменений, построение ОС на ос­нове объектов имеет еще ряд несомненных преимуществ:
  • Доступ ОС к ресурсам и работа с ними унифицированы. Создание, уда­ление и ссылка на объект-событие осуществляется так же, как и для объекта-процесса: с использованием описателей (handle) объектов. И поскольку каждый ресурс — это объект, контроль использования ресур­сов сводится к отслеживанию создания и использования объектов.
  • Упрощается защита, так как для всех объектов она осуществляется одина­ково. При попытке доступа к объекту подсистема защиты вмешивается и проверяет допустимость операции, независимо от того, является ли объект процессом, секцией совместно используемой памяти или ком­муникационным портом.
  • Объекты предоставляют удобную и унифицированную парадигму для совместного использования ресурсов двумя или несколькими процес­сами. Для работы с объектами любого типа используются описатели объектов. Два процесса совместно используют объект тогда, когда каж­дый из них открыл его описатель. ОС может отслеживать количество описателей, открытых для данного объекта, чтобы определить, дейст­вительно ли он все еще используется. После этого система может уда­лить объекты, которые более не используются.

2.3.Симметричная мультипроцессорная обработка


Многозадачность — это техника, применяемая ОС для использования одного процессора несколькими потоками управления. Однако, если у компьютера имеется более одного процессора, то от модели многозадачности следует пе­рейти к модели мультипроцессорной обработки (multiprocessing). Компьютер, имеющий два процессора, может выполнять два потока одновременно. Таким образом, если многозадачная ОС только создает иллюзию одновременного вы­полнения нескольких потоков, то ОС с мультипроцессорной обработкой в дей­ствительности выполняет несколько потоков одновременно — по одному пото­ку на каждом процессоре.

ОС с мультипроцессорной обработкой делятся на две категории — с асим­метричной либо симметричной обработкой, как показано на рис. 2-5.

Операционные системы с асимметричной мультипроцессорной обработ­кой (asymmetric multiprocessing, ASMP) обычно выбирают для исполнения соб­ственного кода один и тот же процессор (например А), в то время как другие процессоры выполняют только пользовательские задачи. Так как код ОС испол­няется на одном процессоре, то ОС ASMP довольно просто создать, усовершен­ствовав существующую однопроцессорную ОС. Особенно хорошо ОС ASMP подходят для работы на асимметричном оборудовании, например, процессо­ре, к которому подключен сопроцессор, или на двух процессорах, совместно использующих не всю доступную память. Однако такую ОС трудно сделать пе­реносимой. Аппаратура разных производителей (и даже разные версии аппа­ратуры одного производителя) имеет тенденцию различаться по типу и степе­ни асимметрии. Либо производители оборудования должны ориентироваться на одну ОС, либо ОС придется постоянно переписывать для каждой аппарат­ной платформы.

Системы с симметричной мультипроцессорной обработкой (symmetric multiprocessing, SMP), к которым относится и Windows 2000, позволяют коду ОС системы выполняться на любом свободном процессоре или на всех процессо­рах одновременно, причем каждому из процессоров доступна вся память. Такой подход полнее реализует возможности нескольких процессоров, так как сама ОС может использовать значительную часть процессорного времени компьютера, в зависимости от того, какие приложения на нем исполняются. Исполнение ОС только на одном процессоре может сильно загружать его, в то время как остальные простаивают, что уменьшит производительность системы; при увели­чении числа процессоров в системе возрастает вероятность того, что узким местом станут именно действия, выполняемые ОС. Помимо равномерного рас­пределения системной загрузки, системы SMP сокращают время простоя из-за неисправностей, так как при сбое одного процессора код ОС может исполнять­ся на других. Наконец, поскольку симметричная аппаратура реализуется разны­ми производителями сходным образом, имеется возможность создания перено­симой ОС SMP.

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

Windows 2000 обладает свойствами, которые принципиально важны для мультипроцессорной ОС:
  • Код ОС может выполняться на любом из доступных процессоров и на нескольких процессорах одновременно. За исключением ядра, которое выполняет планировку потоков и обработку прерываний, весь код ОС может быть вытеснен (принужден к освобождению процессора) пото­ком с более высоким приоритетом.
  • В одном процессе может быть несколько потоков управления. Потоки позволяют процессу выполнять разные части его программы на не­скольких процессорах одновременно4.
  • Серверные процессы могут использовать несколько потоков для одно­временной обработки запросов от нескольких клиентов.
  • Имеются удобные механизмы совместного использования объектов разными процессами и гибкие возможности коммуникаций между про­цессами, включая совместно используемую память и оптимизирован­ное средство передачи сообщений.