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

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

Мультипрограммирование, многопользовательский режим работы и режим разделения времени - student2.ru

Рис. 1.6. Пример выполнения двух программ в мультипрограммном режиме

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

28_____________________________________________ Глава 1. Основные понятия

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

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

Мультипрограммирование стало применяться все чаще и шире в 60-х годах XX ве­ка, когда крупные компании получили, наконец, возможность приобретать в соб­ственность вычислительную технику и использовать ее для решения своих задач. До этого времени вычислительная техника была доступна, прежде всего, для воен­ных целей и решения отдельных задач общегосударственного масштаба. А посколь­ку стоимость компьютеров в то время была чрезвычайно большой, то компании, вложив свои капиталы в вычислительную технику, захотели за счет продажи ма­шинного времени не только покрыть те расходы, которые сопутствовали ее приоб­ретению и использованию, но и зарабатывать дополнительные деньги, то есть по­лучать прибыль. Машинное время стали активно продавать, сдавая в аренду имеющиеся компьютеры, и потенциальная возможность решать в единицу време­ни большее количество задач, возможно от разных клиентов, стала выступать ос­новным стимулом в развитии способов организации вычислений и операционных систем.

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

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

Очевидно, что диалоговый режим работы может быть реализован и без мульти­программирования. Наглядное тому доказательство — многочисленные дисковые операционные системы, начиная от СР-М и кончая PC-DOS 7.0, которые долгие годы устанавливались на персональные компьютеры и обеспечивали только одно-программный режим. Однако эти однопрограммные диалоговые системы появи-

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

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

Совмещение диалогового режима работы с компьютером и режима мультипрог­раммирования привело к появлению мультитерминалъных, или многопользова­тельских, систем. Организовать параллельное выполнение нескольких задач можно разными способами (более подробно об этом см. в главе 2). Если это осуществля­ется таким образом, что на каждую задачу поочередно выделяется некий квант времени, после чего процессор передается другой задаче, готовой к продолжению вычислений, то такой режим принято называть режимом разделения времени (time sharing). Системы разделения времени активно развивались в 60-70 годы, и сам термин означал именно мультитерминальную и мультипрограммную систему.

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

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

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

Мультипрограммирование, многопользовательский режим работы и режим разделения времени - student2.ru ' Супервизор — центральный (главный) управляющий модуль операционной системы. Может состо­ять из нескольких модулей, например супервизора ввода-вывода, супервизора прерываний, супер­визора программ, диспетчера задач и т. д. В последние годы термин «супервизор» применяется все реже и реже.

30 Глава 1. Основные понятия

Мультипрограммирование, многопользовательский режим работы и режим разделения времени - student2.ru Ресурс может быть выделен вычислительному процессу (задаче), обратившемуся к операционной системе с соответствующим запросом, если:

- ресурс свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;

- текущий запрос и ранее выданные запросы допускают совместное использова­ние ресурсов;

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

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

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

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

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

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

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