Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 6
Текст из файла (страница 6)
Рассмотренную нами схему иллюстрирует рис. 1.4.Как мы видим из рисунка, здесь отсутствует возврат в прерванную ранее программу непосредственно из самой подпрограммы обработки прерывания. Для прямого24Глава 1. Основные понятиявозврата достаточно адрес возврата сохранить в стеке, что и делает аппаратурапроцессора. При этом стек легко обеспечивает возможность возврата в случае вложенных прерываний, поскольку он всегда реализует дисциплину LCFS.Супервизор прерыванийИсполняемаяпрограмма1Выполнение кодаподпрограммыобработки прерыванияОтключениепрерываний, сохранениеконтекста прерваннойпрограммы в еедескрипторе,установкарежима работы системыпрерываний(маскирование)Эта подпрограммауже не заботитсяо сохраненииконтекста прерванногопроцессаОпределение адресапрограммного модуля,обслуживающего запросна прерывание,и передача управленияна негоДиспетчер задачВыбор готовойк выполнениюзадачи (на основепринятой дисциплиныобслуживания)Восстановлениеконтекста задачи,установка прежнегорежима работысистемы прерыванийи передачауправленияэтой задачеРис.
1.4. Обработка прерывания при участии супервизоров ОСОднако если бы контекст вычислительных процессов сохранялся просто в стеке,как это обычно реализуется аппаратурой, а не в специальных структурах данных,называемых дескрипторами, о чем будет подробно изложено чуть позже, то у насне было бы возможности гибко подходить к выбору той задачи, которой нужнопередать процессор после завершения работы подпрограммы обработки прерывания. Естественно, что это только общий принцип. В конкретных процессорах и вконкретных операционных системах могут существовать некоторые отступленияот рассмотренной схемы и/или дополнения. Например, в современных процессорах часто имеются специальные аппаратные возможности для сохранения контекста прерываемого вычислительного процесса непосредственно в его дескрипторе,то есть дескриптор процесса (по крайней мере его часть) становится структуройданных, которую поддерживает аппаратура.Для полного понимания принципов создания и механизмов реализации рассматриваемых далее современных операционных систем необходимо знать архитектуру и, в частности, особенности системы прерывания персональных компьютеров.Этот вопрос более подробно рассмотрен в главе 4, посвященной архитектуре микропроцессоров i80x86.Понятия вычислительного процессаи ресурсаПонятие последовательного1 вычислительного процесса, или просто процесса,является одним из основных при рассмотрении операционных систем.
Как понятие процесс является определенным видом абстракции, и мы будем придерживатьсяследующего неформального определения, приведенного в [47]. Последовательныйпроцесс, иногда называемый задачей2 (task), — это отдельная программа с ее данными, выполняющаяся на последовательном процессоре. Напомним, что подпоследовательным мы понимаем такой процессор, в котором текущая командавыполняется после завершения предыдущей. В современных процессорах мы сталкиваемся с ситуациями, когда возможно параллельное выполнение несколькихкоманд. Это делается для повышения скорости вычислений. В этих процессорахпараллелизм достигается двумя основными способами — организацией конвейерного механизма выполнения команды и созданием нескольких конвейеров.
Однако в подобных процессорах аппаратными решениями обязательно достигается логическая последовательность в выполнении команд, предусмотренная программой.Необходимость этого объясняется в главе 7, посвященной организации параллельных вычислительных процессов.Концепция процесса предполагает два аспекта: во-первых, он является носителемданных и, во-вторых, он собственно и выполняет операции, связанные с обработкой этих данных.В качестве примеров процессов (задач) можно назвать прикладные программыпользователей, утилиты и другие системные обрабатывающие программы. Процессом может быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Причем трансляция какой-нибудь исходнойпрограммы является одним процессом, а трансляция следующей исходной программы — другим процессом, поскольку транслятор как объединение программных модулей здесь выступает как одна и та же программа, но данные, которые онобрабатывает, являются разными.Слово «последовательный» в большинстве случаев опускается.
Считается, что речь идет о вычислениях, осуществляемых на обычных «последовательных» процессорах, которые выполняют командуза командой, а не параллельно несколько команд за один такт." концепции, которая получила наибольшее распространение в 70-е годы, задача — это совокупность связанных между собой и образующих единое целое программных модулей и данных, требующая ресурсов вычислительной системы для своей реализации. В последующие годы задачей сталиназывать единицу работы, для выполнения которой предоставляется центральный процессор.
Вычислительный процесс может включать в себя несколько задач.26Глава 1. Основные понятияКонцепция процесса преследует цель выработать механизмы распределения и управления ресурсами. Понятие ресурса, так же как и понятие процесса, является,пожалуй, основным при рассмотрении операционных систем. Термин ресурс обычно применяется по отношению к многократно используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, задействуютсяи освобождаются в период их активности. Другими словами, ресурсом называетсявсякий объект, который может распределяться внутри системы.Ресурсы могут быть разделяемыми, когда несколько процессов используют их одновременно (в один и тот же момент времени) или параллельно (попеременно в течение некоторого интервала времени), а могут быть и неделимыми (рис.
1.5).Рис. 1.5. Классификация ресурсовПри разработке первых систем ресурсами считались процессорное время, память,каналы ввода-вывода и периферийные устройства [22, 53]. Однако очень скоропонятие ресурса стало гораздо более универсальным и общим. Различного родапрограммные и информационные ресурсы также могут быть определены для системы как объекты, которые могут разделяться и распределяться и доступ к которым необходимо соответствующим образом контролировать.
В настоящее времяпонятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов,характеризующих способы доступа к этой структуре и ее физическое представление в системе. Более того, помимо системных ресурсов, о которых мы сейчас говорили, ресурсами стали называть и такие объекты, как сообщения и синхросигналы, которыми обмениваются задачи.В первых вычислительных системах любая программа могла выполняться толькопосле полного завершения предыдущей.
Поскольку эти первые вычислительныесистемы были построены в соответствии с принципами, изложенными в известной работе Яноша Джона фон Неймана, все подсистемы и устройства компьютерауправлялись исключительно центральным процессором. Центральный процессоросуществлял и выполнение вычислений, и управление операциями ввода-выводаданных. Соответственно, пока осуществлялся обмен данными между оперативнойпамятью и внешними устройствами, процессор не мог выполнять вычисления.27Понятия вычислительного процесса и ресурсаВведение в состав вычислительной машины специальных контроллеров позволило совместить во времени (распараллелить) операции вывода полученных данныхи последующие вычисления на центральном процессоре. Однако все равно процессор продолжал часто и долго простаивать, дожидаясь завершения очередной операции ввода-вывода.
Поэтому было предложено организовать так называемый мультипрограммный, или мультизадачный, режим работы вычислительной системы.Мультипрограммирование,многопользовательский режим работыи режим разделения времениВкратце суть мультипрограммного режима работы заключается в том, что покаодна программа (один вычислительный процесс, как мы теперь говорим) ожидаетзавершения очередной операции ввода-вывода, другая программа (а точнее, другая задача) может быть поставлена на решение (рис. 1.6).
Это позволяет более полноиспользовать имеющиеся ресурсы (например, центральный процессор начинаетменьше простаивать, как это видно из рисунка) и уменьшить общее (суммарное)время, необходимое для решения некоторого множества задач.CPU• '•-;•\Задача ВЗадач а АВвCPU''-•Задача А--|CPUЗадача В•*••Рис. 1.6.
Пример выполнения двух программ в мультипрограммном режимеНа рисунке в качестве примера изображена такая гипотетическая ситуация, прикоторой благодаря совмещению во времени двух вычислительных процессов об-28Глава 1. Основные понятиящее время их выполнения получается меньше, чем если бы их выполняли по очереди (запуск одного начинался бы только после полного завершения другого).
Изэтого же рисунка видно, что время выполнения каждого процесса в общем случаебольше, чем если бы мы выполняли каждый из них как единственный.При мультипрограммировании повышается пропускная способность системы, ноотдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожиданиеосвобождения ресурса).Мультипрограммирование стало применяться все чаще и шире в 60-х годах XX века, когда крупные компании получили, наконец, возможность приобретать в собственность вычислительную технику и использовать ее для решения своих задач.До этого времени вычислительная техника была доступна, прежде всего, для военных целей и решения отдельных задач общегосударственного масштаба.