Главная страница  Цифровые системы 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [ 68 ] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90]

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

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

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

10.2.3. Распределенные операционные системы

Распределенная операционная система (distributed operating system) - это общий термин, обозначающий решения с различным уровнем функциональности. Распределенная операционная система может представлять собой средство сетевого взаимодействия, сетевую файловую систему с единым интерфейсом или даже совокупность независимых ЭВМ, которую пользователи системы воспринимают как единую ЭВМ.

Различия хорошо видны на примере операции копирования файла, приведенного на рис. 10.4. Предположим, что на станции 3 выдана команда скопировать файл со станции 1 на станцию 2. При такой операции блоки обычно считываются из файла-источника в буфер в памяти станции, выполняющей копирование, а затем копр руются в файл-приемник. Если хотя бы один из файлов (либо источник, либо прием ник) расположен на станции, с которой была выдана команда копирования, то описанный алгоритм вполне приемлем, однако при работе в сети, когда в опера ции принимают участие три станции, возможен другой подход. Простейшая сетев операционная система перенаправляет запросы ввода/вывода не к локальнь. а к удаленным устройствам. Данные сначала копируются со станции 1 в промеЖУ точный буфер на станции 3, а затем посылаются на станцию 2. Локальная команд Сору "ничего не знает" о том, что работает с удаленными файлами, поскольку за тО к какому устройству - локальному или удаленному - перенаправить запрос, отвсча

сетевая операционная система. Такой механизм порождает явно избыточный тра-i в сети.

распределенная операционная система высокого уровня работает совершенно ина-Станция 3 лишь инициирует процесс копирования, в котором в дальнейшем уча-

только станции 1 и 2; данные вообще не попадают на станцию 3 - она лишь

олучает информацию о результате завершения операции. Очевидно, что в этом слу-"je объем трафика и время выполнения операции уменьшаются примерно вдвое.

станция 1

станция 2

копирование копирование файла в буфер файла из буфера

локальная сеть

станция 3

Рис. 10.4. Операция копирования файла в простейшей сетевой ОС

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

операционным системам, используемым в распределенных средах, относятся •IX, OSE/1 и Windows NT, которые будут рассмотрены более подробно в следую-

разделах этой главы.

••2.4. Управление процессором и состояния процесса

оц "°"ь1ми объектами в многозадачной среде являются процессы или задачи, Исываемые своим контекстом (раздел 10.1.2). На одном процессоре в любой мо-всер 1Ремени может исполняться только одна задача. Контекст исполняемой задачи гда можно заморозить", сохранив содержимое регистров процессора. При оста-3% кущей задачи процессор продолжает исполнение других задач. Таким обра-. процессор есть ограниченный ресурс, который распределяется между всеми за-"чами.

•to/ процессоре для организации многозадачного режима выполнение каж-

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



в Па-

Внешний эффект разделения процессорного времени между задачами состоит раллельном выполнении п задач. Когда п задач выполняются в системе параллельнц каждая из них в среднем монопольно "располагает" процессором с производительное тью \/п, т. е. работает (развивается) на виртуальном процессоре, производительность которого в п раз меньше, чем у реального физического процессора. Если вместо одного используется несколько процессоров, то это просто другая реализация того же самого логического принципа. В первом случае процессы разделены во времени, во втором ~ в пространстве. Если исключить накладные расходы на планирование и межзадачное взаимодействие, то при выполнении п процессов на k одинаковых процессорах каждому процессу в среднем выделяется виртуальный процессор с производительностью равной k/n части от производительности одного физического процессора.

задача

1 -2-3-

I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I

время

задача

I-1 I-1

Ы 1-1 I-1

м I I I I I I I I I I I I I I I I I I I I I м I I I

время

Рис. 10.5. Принцип организации многозадачного режима; а - внешний эффект, б - распределение времени процессора

Простейшая многозадачная однопроцессорная система состоит из процедуры, со храняющей контекст текущего процесса в стеке или в определенной области нам и восстанавливающей контекст другого процесса, исполнение которого возооно ется с того места, где он был прерван. Системная программа, выбирающая ""g. готовых для исполнения процессов, называется планировщиком {scheduler). ТР гии выбора достаточно разнообразны и меняются от одной операционной к другой, однако чаще всего используется какой-либо механизм на основе приоР . Планировщик работает как один из процессов, который автоматически полу

стандартных инструкций процессора. В набор команд процессора, спроектированно-

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

Планировщик вызывается обычно после обработки каждого прерывания. Если используется стратегия переключения процессов на основе квантования времени (рис. 10.5), необходимо иметь внешний по отношению к процессору интервальный таймер, вырабатывающий прерывания по истечении кванта времени {time slice), выделенного процессу. При возникновении прерывания исполнение текущего процесса приостанавливается и проверяется, должен ли быть прерван текущий процесс и загружен новый. Принудительная приостановка текущего процесса для передачи управления другому процессу называется вытеснением {preemption).

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

Процесс исполняется до тех пор, пока не произойдет одно из следующих событий:

- истек выделенный ему квант времени;

- процесс заблокирован, например ждет завершения операции ввода/вывода;

- процесс завершился;

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

В многозадачной среде процесс может находиться в одном из трех состояний (рис. 10.6).

Готов {ready). Процесс может начать исполнение, как только освободится процессор. • Исполнение {running, executing). Процесс исполняется в данный момент, т. е. процессор исполняет его код.

Ожидание, заблокирован {waiting, locked). Для продолжения работы процессу не хватает какого-либо ресурса, за исключением ЦП, либо он ждет наступления внешнего события.

загрузочный

модуль на диске


управление после каждого прерывания текущего процесса. .

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

текста - переключение процессов - реализуется длинной последовательное Ис. ю.б. Состояния процесса

уничтожен



На рис. 10.6 также показаны возможные переходы из одного состояния в щ

1. От "Загрузочный модуль на диске" к "Готов". Программа загружается (fo л-, в оперативную память, настраиваются относительные адреса (relocation), ляются рабочие области для данных, кучи и стека с соответствующими указате лями и создается контекст процесса.

2. От "Готов" к "Исполнение". Планировщик выбирает первый в очереди готовых процессов и передает ему управление.

3. От "Исполнение" к "Готов". Процесс либо исчерпал свой квант времени, либо появился готовый для исполнения процесс с бо.тее высоким приоритетом.

4. От "Исполнение" к "Ожидание". Для дальнейщего развития процесс должен ждать наступления какого-либо внещнего события (заверщения операции ввода/вывода или освобождения ресурса, например доступа к памяти, заблокированной другим процессом, или сигнала от другого процесса и т. п.). Иногда процесс переводится в состояние ожидания до истечения некоторого интервала времени с помощью явной инструкции в его программе.

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

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

10.2.5. Стратегии выбора процесса

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

Наиболее простой стратегией выбора является циклический (round-robin) метод - процессы выбираются последовательно один за другим в фиксированно\ порядке и через равные интервалы времени. Основное достоинство метода - пр стота, однако, поскольку процессам с различными требованиями выделяю равные ресурсы процессора, некоторые из них обслуживаются неадекватно св

потребностям. каЖД*"*

Более сложный принцип выбора основан на приоритетах (pnonttes). При переключении планировщик передает управление готовому процессу с наивь! приоритетом. Приоритет присваивается процессу в момент его создания и ф постоянным в течение всего времени - статический приоритет (staticpriority)- . приоритет, как правило, определяется на основе информации, предоставл пользователем.

льзова1слсм. пмяТ

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

[-оритм динамического назначения приоритетов (dynamic priority allocation). Например, планировщик снижает приоритет исполняемого процесса на фиксирован-jjyjo величину. В результате его приоритет будет ниже, чем у другого готового процесса, который затем и выбирается для исполнения. Таким образом обеспечивается заполнение всех процессов. Через некоторое время ожидающим процессам возвращаются номинальные значения их приоритетов. Этот метод обеспечивает исполнение процессов даже с низким приоритетом и гарантирует, что процесс с высоким начальным приоритетом не будет непрерывно занимать процессор.

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

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

10.2.6. Управление оперативной памятью

Наиболее важным ресурсом после процессора является оперативная память. Методы управления, используемые в системах реального времени, обычно проще, чем в многопользовательских системах с разделением времени. В крупных вычислитель-ИЬ1Х системах с множеством пользователей большинство программ и данных хранятся во вторичной (внешней) памяти - жесткий диск - и загружаются в оперативную Память только при необходимости. Это приемлемо для систем разделения времени и "акетной обработки, в которых несущественно, начнется задание минутой раньше "ли позже. Однако в системах реального времени задержек исполнения быть не должно, поэтому все необходимые модули предварительно загружаются в оперативную амять. Тем не менее в системах реального времени может возникнуть необходи-° ""РУЗке содержимого части оперативной памяти на диск, объ расширения оперативной памяти сверх физически установленного ема за счет временной выгрузки на диск не используемых в данный момент про-Мм и данных называется виртуальной памятью (viri:ual memory). Работа виртуаль-памяти основана на предположении, что объем памяти, требуемый для процессам размер доступной оперативной памяти. Устройства массовой Чол" ""Р™еР жесткий диск, используемые для реализации этого механизма, Жны обладать как достаточной емкостью, так и значительным быстродействием, ерационная система копирует с диска в оперативную память только те части про-са и области его данных, называемые страницами (pages), которые непосред-енно используются в данный момент, оставляя остальную часть во внешней памя-




[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [ 68 ] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90]

0.013