Понятия вычислительного процесса и ресурса

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

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

Пояснения

Любая программа имеет дело с некоторыми исходными данными, которые она обрабатывает, и порождает в конечном итоге некоторые выходные данные, резуль­таты вычислений. Очевидно, что в абсолютном большинстве случаев исходные данные попадают в оперативную память (с которой непосредственно работает процессор, выполняя вычисления по программе) с внешних (периферийных) устройств. Аналогично и результаты вычислений, в конце концов, должны быть выведены на внешние устройства. Следует заметить, что программирование опе­раций ввода/вывода относится, пожалуй, к наиболее с ложным и трудоемким за­дачам. Дело в том, что при создании таких программ без использования совре­менных систем программирования, как говориться, «по старинке», нужно знать не только архитектуру процессора (его состав, назначение основных регистров, систему команд процессора, форматы данных и т. п.), но и архитектуру подсис­темы ввода/вывода (соответствующие интерфейсы, протоколы обмена данными, алгоритм работы контроллера устройства ввода/вывода и т. д.). Именно поэто­му развитие системного программирования и самого системного программного обеспечения пошло по пути выделения наиболее часто встречающихся операций и создания для них соответствующих программных модулей, которые можно в дальнейшем использовать в большинстве вновь создаваемых программ.

Пример

Например, в далекие пятидесятые годы, на заре развития вычислительных сис­тем, при разработке первых систем программирования, прежде всего, создавали программные модули для подсистемы ввода/вывода, а уже затем — вычисления часто встречающихся математических операций и функции. Благодаря этому при создании прикладных программ программисты могли просто обращаться к соот­ветствующим функциям ввода/вывода и иным функциям и процедурам, что из­бавляло их от необходимости каждый раз создавать все программные компоненты «с пуля» и от необходимости знать во всех подробностях особенности работы контроллеров ввода/вывода и соответствующих интерфейсов.

Определение Операционная среда

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

Пояснения

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

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

Операционная система может иметь несколько операционных сред (поддержка выполнения программ различных операционных систем), а также несколько пользовательских сред (различные интерфейсы пользователя, графический интерфейс, командная строка , Norton Commander и т.д.).

Понятия вычислительного процесса и ресурса

Понятие «вычислительный процесс» (или просто — «процесс») является одним из основных при рассмотрении операционных систем. Как понятие, процесс яв­ляется определенным видом абстракции, и мы будем придерживаться следующе­го неформального определения. Последовательный процесс (иногда называемый «задачей»1) — это выполнение отдельной программы с ее данными на последовательном процессоре. Концептуально процессор рас­сматривается в двух аспектах: во-первых, он является носителем данных и, во-вторых, он (одновременно) выполняет операции, связанные с их обработкой.

В качестве примеров можно назвать следующие процессы (задачи): выполнение прикладных программ пользователей, утилит и других системных обрабатываю­щих программ. Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Причем трансля­ция какой-нибудь исходной программы является одним процессом, а трансля­ция следующей исходной программы — другим процессом, поскольку, хотя транслятор как объединение программных модулей здесь выступает как одна и та же программа, но данные, которые он обрабатывает, являются разными.

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

Другими сло­вами, ресурсом называется всякий объект, который может распределяться внутри системы.

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

Понятия вычислительного процесса и ресурса - student2.ru

Рис. 1.1. Классификация ресурсов

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

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

1 В концепции, которая получила наибольшее распространение в 70-е годы, задача {task) — это совокупность связанных между собой и образующих единое целое программных мо­дулей и данных, требующая ресурсов вычислительной системы для своей реализации. В последующие годы задачей стали называть единицу работы, для выполнения которой предоставляется центральный процессор. Вычислительный процесс может включать в себя несколько задач.

Поэтому было предложено организовать так называемый мультипрограммный (мультизадачный) режим работы вычислитель­ной системы. Суть его заключается в том, что пока одна программа (один вычис­лительный процесс или задача, как мы теперь говорим) ожидает завершения очередной операции ввода/вывода, другая программа (а точнее, другая задача) может быть поставлена на решение (рис. 1.2).

Понятия вычислительного процесса и ресурса - student2.ru

Рис. 1.2. Пример выполнения двух программ: а — однопрограммный режим; б — мультипрограммный режим

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

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

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

Директива обращения к операционной системе передает ей управление, перево­дя процессор в привилегированный режим работы (см. раздел «Прерывания», глава 1), если такой существует. Не все вычислительные комплексы имеют два (и более) режима работы: привилегированный (режим супервизора), пользова­тельский, режим эмуляции какого-нибудь другого компьютера и т. д.

Ресурс может быть выделен задаче, обратившейся к супервизору с соответствую­щим запросом, если:

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

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

После окончания работы с ресурсом задача опять с помощью специального вы­зова супервизора (посредством соответствующей директивы) сообщает операци­онной системе об отказе от ресурса, или операционная система забирает ресурс сама, если управление возвращается супервизору после выполнения какой-либо системной функции. Супервизор операционной системы, получив управление по этому обращению, освобождает ресурс и проверяет, имеется ли очередь к освободившемуся ресурсу. Если очередь есть — в зависимости от принятой дисци­плины обслуживания (правила обслуживания)1 и приоритетов заявок он выводит из состояния ожидания задачу, ждущую ресурс, и переводит ее в состояние го­товности к выполнению. После этого управление либо передается данной задаче, либо возвращается той, которая только что освободила ресурс.

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

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

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

1 Например, дисциплина «последний пришедший обслуживается первым» определяет об­служивание в порядке, обратном очередности поступления соответствующих запросов.

Наши рекомендации