КООРДИНАЦИЯ ДЕЙСТВИЙ МАШИНЫ
В этом разделе мы рассмотрим, как операционная система координирует выполнение прикладных программ, утилит и собственных программных элементов. Начнем обсуждение с понятия процесса.
Понятие процесса. Одной из наиболее фундаментальных концепций в современных операционных системах является разграничение между самой программой и деятельностью, связанной с ее выполнением. Первое представляет собой статиче- ский набор инструкций, в то время как второе – это динамическая деятельность, свойства которой меняются во времени. Эта деятельность и получила название процесса (process). Процесс охватывает текущее состояние работы, называемое состояни- ем процесса (process state). Это состояние включает текущую позицию выполняемой программы (значение счетчика адреса), а также значения прочих регистров центрального процессора и тех ячеек памяти, к которым производится обращение. Гово- ря упрощенно, состояние процесса – это моментальный снимок состояния машины в определенный момент времени. В раз- личные моменты выполнения программы (процесса) будут получаться различные моментальные снимки (состояния процесса).
Чтобы подчеркнуть различие между программой и процессом, заметим, что одна программа может быть связана одно- временно с несколькими процессами. Например, в многопользовательской системе с разделением времени двум пользовате- лям может одновременно потребоваться редактировать различные документы. Оба могут использовать одну и ту же про- грамму редактирования, но в каждом случае это будет самостоятельный процесс, со своим набором данных и относительной
скоростью выполнения. В такой ситуации операционная система может хранить в основной памяти только одну копию про- граммы редактирования и разрешить каждому из процессов пользоваться ею на время выделенного ему кванта времени.
В типичной компьютерной установке с разделением времени в состязании за кванты времени обычно принимает уча- стие множество процессов. Эти процессы включают выполнение прикладных программ, утилит и программных элементов операционной системы. Задача операционной системы состоит в координации выполнения всех этих процессов. Координа- ция подразумевает получение гарантий в том, что каждый процесс получит все необходимые ему ресурсы (доступ к перифе- рийным устройствам, место в основной памяти, доступ к данным и центральному процессору); что независимые процессы не влияют друг на друга, а процессы, которым необходимо обмениваться информацией, имеют возможность делать это. Взаи- модействие между процессами называется межпроцессным взаимодействием.
Управление процессами. Задачи, связанные с координацией процессов, решаются планировщиком и диспетчером, входящими в состав ядра операционной системы. Планировщик ведет пул записей о процессах, присутствующих в вычисли- тельной системе, вводит в него сведения о новых процессах и удаляет информацию о завершившихся. Для отслеживания состояния всех процессов планировщик организует в основной памяти блок информации, называемый таблицей процессов (process table). Каждый раз, когда машине дается новое задание, планировщик создает процесс для этого задания посредст- вом занесения новой записи в таблицу процессов. Эта запись содержит сведения об объеме выделенной процессу памяти (эта информация поступает от модуля управления памятью), о присвоенном ему приоритете, а также о том, находится про- цесс в состоянии готовности или ожидания. Процесс находится в состоянии готовности (ready), если его развитие может продолжаться, и переводится в состояние ожидания (waiting), когда его развитие приостанавливается до тех пор, пока не произойдут некоторые внешние события, например, завершится процедура доступа к диску или поступит сообщение от дру- гого процесса.
Диспетчер – это компонент ядра, отвечающий за то, чтобы запланированные процессы действительно выполнялись. В системе с разделением времени эта задача решается посредством разбиения времени процессора на короткие интервалы, называемые квантами (обычно продолжительностью около 50 миллисекунд). По истечении этого времени происходит при- нудительное переключение центрального процессора от одного процесса к другому; так что каждому процессу предоставля- ется возможность непрерывного выполнения лишь в течение одного кванта времени (рис. 3.6). Процедура смены одного процесса другим называется переключением процессов (process switch).
Рис. 3.6. Разделение времени между процессами А и В
Каждый раз, когда процессу предоставляется очередной квант времени, диспетчер инициирует цепь таймера, подготав- ливая его к измерению продолжительности следующего кванта. По окончании установленного кванта цепь таймера генери- рует сигнал, называемый прерыванием (interrupt). Центральный процессор реагирует на этот сигнал так же, как и человек, которого останавливают во время выполнения определенного задания. Человек прекращает свою работу, записывает теку- щее состояние задачи и обращает внимание на то, что его отвлекло. При получении сигнала прерывания центральный про- цессор завершает текущий машинный цикл, сохраняет свое положение в текущем процессе (подробнее мы обсудим это чуть ниже) и начинает выполнять программу, называемую обработчиком прерываний (interrupt handler), помещенную в заранее определенное место в основной памяти.
В нашем сценарии разделения времени обработчик прерываний – это часть диспетчера. Таким образом, результатом поступления сигнала прерывания является приостановка текущего процесса и передача управления диспетчеру. В этот мо- мент диспетчер разрешает планировщику обновить состояние таблицы процессов (например, возможно, что приоритет толь- ко что отработавшего свой квант времени процесса следует понизить, а приоритеты других процессов – повысить). Затем из таблицы процессов диспетчер выбирает процесс с наивысшим приоритетом из числа процессов, находящихся в состоянии готовности, заново инициализирует цепь таймера, после чего разрешает выбранному процессу использовать новый квант времени.
Главным условием успешной работы системы с разделением времени является ее способность остановить, а затем по- вторно запустить процесс. Если вас прерывают во время чтения книги, то возможность продолжить чтение позднее зависит от вашей способности вспомнить, на чем вы остановились и что прочли до этого момента. Короче говоря, вы должны иметь возможность воссоздать ситуацию такой, какой она была непосредственно в момент прерывания. В отношении процесса эта ситуация есть его состояние. Напомним, что состояние процесса включает в себя значение счетчика адреса, а также содер- жимое регистров ЦП и ячеек памяти, к которым выполняется обращение. Машины, разработанные для систем с разделением времени, включают средства, позволяющие сохранять эту информацию как реакцию центрального процессора на сигнал прерывания. Кроме того, машинный язык таких процессоров обычно включает специальные команды для перезагрузки ра- нее сохраненной информации о состоянии. Подобные функциональные возможности вычислительных машин упрощают задачу диспетчера по переключению процессов и служат примером того, как потребности современных операционных сис- тем оказывают влияние на разработку компьютеров.
Иногда использование процессом предоставленного ему кванта времени заканчивается раньше, чем истекает интервал,
установленный на таймере. Например, если процесс выдает запрос на выполнение операции ввода/вывода, скажем запрос на получение данных с диска, выделенный процессу квант времени будет принудительно завершен, так как в противном случае процесс бесполезно потратит оставшееся время на ожидание, когда контроллер выполнит запрос. В этом случае планиров- щик обновит таблицу процессов, отразив в ней переход данного процесса в состояние ожидания, а диспетчер предоставит очередной квант времени процессу, находящемуся в состоянии готовности. Позднее (возможно, через несколько сотен мил- лисекунд), когда контроллер сообщит о том, что поступивший запрос на операцию ввода/вывода уже выполнен, планиров- щик вновь отметит данный процесс как готовый к выполнению, и этот процесс сможет конкурировать за получение очеред- ного кванта времени ЦП.
Модель "клиент/сервер". Различные составляющие операционной системы обычно выполняются как отдельные про- цессы, конкурирующие в системе с разделением времени за получение от диспетчера квантов времени ЦП. Для координации своих действий этим процессам необходимо взаимодействовать друг с другом. Например, чтобы запланировать новый про- цесс, планировщик должен получить для него место памяти от программы управления памятью, а чтобы получить доступ к файлу, массовой памяти, любой процесс должен сначала получить информацию об этом файле от программы управления файлами.
Обмен сообщениями между процессами называется межпроцессным взаимодействием (interprocess communication) и является объектом постоянных исследований. Межпроцессное взаимодействие может иметь самые разные формы. Одна из них (рис. 3.7) – модель "клиент/сервер" (client/server model) – широко применяется как для взаимодействия компонентов операционной систем, так и в организации компьютерных сетей.
Рис. 3.7. Модель "клиент/сервер"
Согласно этой модели, каждый компонент выступает в роли клиента, посылающего запросы другим компонентам, или же в роли сервера, отвечающего на запросы, поступившие от клиентов. Например, система управления файлами функционирует как сервер, предоставляющий доступ к файлам в соответствии с запросами, поступающими от различных клиентов. Постро- енное в соответствии с этой моделью взаимодействие между процессами внутри операционной системы предусматривает поступление запросов от процессов, выполняющих роль клиентов, и предоставление ответов на них другими процессами, играющими роль серверов.
![]() |
Рис. 3.8. Идентичность схемы взаимодействия клиентов и серверов, функционирующих на одной и той же машине и на разных машинах
Желание установить единообразную систему отправки сообщений, которая сможет поддерживать такую распределен- ную систему в компьютерной сети, является основополагающей целью ряда стандартов и спецификаций, известных как CORBA (Common Object Request Broker Architecture – архитектура брокеров запросов общих объектов). Спецификация CORBA включает систему стандартов, регламентирующих сетевые взаимодействия элементов программного обеспечения, называемых объектами (такими, как клиенты или серверы). Она была разработана группой OMG (Object Management Group
– группа по управлению объектами), представляющей собой консорциум фирм-производителей аппаратного и программного обеспечения, а также пользователей, заинтересованных в расширении сферы применения объектно-ориентированной техно- логии, с которой мы познакомимся в главе 5 и к которой будем неоднократно возвращаться в последующих главах.
1. Кратко опишите различия между программой и процессом.
2. Кратко опишите действия, предпринимаемые центральным процессором при возникновении прерывания.
гих?
3. Каким образом в системе с разделением времени процесс с высоким приоритетом может выполняться быстрее дру-
4. В системе с разделением времени каждый квант времени равен 50 миллисекундам, а на каждое переключение между
процессами затрачивается 5 миллисекунд. Сколько процессов может обслужить машина за одну секунду?
5. Если каждый процесс в машине с характеристиками, указанными в предыдущем вопросе, использует свой квант времени полностью, какая часть машинного времени используется для реального выполнения процессов? Какой будет эта часть в случае, если каждый процесс выполняет запрос на ввод/вывод по истечении 5 миллисекунд от начала каждого выде- ленного ему кванта времени?
6. Определите, какие взаимосвязи в обществе отвечают модели "клиент/сервер"?
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.