Алгоритмизация - это процесс построения алгоритма решения задачи. Алгоритм и алгоритмизация в информатике

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

Классический подход

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

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

Возможные определения

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

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

Процессы и этапы

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

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

  • Какие системы информационной обработки будут эффективными в конкретном случае?
  • Каковы математические методики функционирования применительны к крупным системам?

Особенности вопроса

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

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

Как это работает?

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

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

Кому и как?

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

  • анализ исходных данных;
  • выявление самых значимых аспектов;
  • формализацию ключевых моментов;
  • представление данных символами;
  • формирование цельной последовательности операций.

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

Зачем это нужно?

Где можно встретить примеры алгоритмизации на практике? Иным может показаться, что это «наука в себе», не слишком применимая для чего-либо. На самом деле алгоритмизация - это эффективный метод автоматизации широчайшего спектра задач, рабочих процессов, в которых участвуют люди. Формирование программ, алгоритмов в первую очередь используется для упрощения вычислительных задач, которые раньше можно было решить только вручную. Несколько реже алгоритмизация позволяет создать последовательность действий управления машинами.

Алгоритмизация позволяет эффективно переформулировать исходный (зачастую довольно хаотичный) объем информации в алгоритмический вид, четкий, упорядоченный и структурированный. При этом выделяют все объекты, которые участвуют в операциях, идентифицируют их, определяют исполнителей и задают алгоритм последовательных действий. Важное условие - обязательная однозначность толкования любого этапа. После А всегда следует В, а не «может, В, а может, С, вы уж решите сами, как лучше». Это правило - основа алгоритмизации.

Информация и алгоритмы

Представленные в алгоритмической форме сведения - данные, продуцируемые алгоритмизацией. Для них невозможны многозначные интерпретации. Что такое алгоритм в информатике, математике, логике? Это такая последовательность, которую исполнитель может понять, имея перед собой только этот документ и никаких сторонних источников, условий, объяснений операциям. В алгоритме всегда указывается порядок действий. Без этой информации система не может считаться полноценной и применимой на практике.

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

  • линейные;
  • циклические;
  • ветвления;
  • смешанные.

А если поподробнее?

Если внимательно изучить основы алгоритмизации, можно найти подробное описание всех типов последовательностей действий. Разберем их детальнее.

Линейная предполагает наличие четкой последовательности по шагам: есть первая операция, вторая и так далее. Отклонения от схемы не допускаются, вариантов корректировки не предусмотрено.

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

Продолжая тему

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

Наконец, в основах информатики рассматривается смешанный вариант последовательности алгоритмизованных действий. В таком будут участки линейные, циклические, ветвления - все возможные формы. Если программа, алгоритм являются сложными, можно с уверенностью говорить, что они принадлежат именно к такой форме, ее просто невозможно избежать. Причем сложность - понятие очень и очень растяжимое. То, что для обычного человека кажется элементарной задачей, при формулировании ее в виде алгоритма может превратиться длительную последовательность действий разного плана и характера. Задача алгоритмиста - учитывать все возможные состояния всех включенных в систему объектов.

Инструкции и алгоритмы

Фактически с алгоритмизацией, как и с основами информатики, мы сталкиваемся в повседневной жизни, просто привыкли к этому и не замечаем, не обращаем внимание. К примеру, технологические инструкции - это классический образец алгоритма.

Исполнительные инструкции обычно составляются применительно к разнообразным объектам - клапанам, агрегатам, вытяжкам, двигателям. В инструкции описываются физические операции - взять, поднять, закрыть. Когда речь идет о вычислительной машине, объекты в алгоритме будут математические, действия, соответственно, такие же. Алгоритм может быть посвящен формулам, таблицам, в которые скомпонованы значения, а действия бывают самыми разными - от простейших вычислений до довольно сложных для человека матричных табличных операций. Инструкция обычно содержит условие, соответствующее правилам логики. Если удалось достигнуть необходимого показателя - можно продолжать движение по алгоритму или завершить его, в противном случае придется пройти еще один цикл. Также алгоритмы в норме имеют «запасной выход» на случай внештатной ситуации. Применительно к человеческой повседневности можно найти аналог в виде «Сообщить руководству о неполадке».

Алгоритмизация: подход расширенный и специализированный

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

Объект алгоритмизации

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

Ключевое условие, первое, которое проверяется применительно к объекту - присутствие его именно в таком состоянии, которое допускает исполнение предусмотренных алгоритмом функций. В случае если объект не прошел предварительную подготовку, он неисправен, не подходит (словом, любое препятствие), состояние становится неработоспособным, следовательно, действия, предписанные алгоритмом, не могут выполняться.

Алгоритмизация применительно к реальности

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

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

А что с обучением?

Важное понятие - алгоритмизация обучения. Оно предполагает составление такой последовательности действий, которая поможет научить целевой объект (машину или человека) исполнять заданные операции. В качестве начального этапа рассматривается состояние полного отсутствия знаний и представлений о целевом объекте. Алгоритм обучения должен содержать такую последовательность операций, которая позволит получить объекту представление о процессе, полезную информацию, применяемую дальше на практике. Формулирование сложных и эффективных алгоритмов обучения в последнее время стало особенной областью внимания передовых умов нашего мира в силу повышения интереса к искусственному интеллекту и обучаемости машин.

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

Планирование процессов включает в себя решение следующих задач:
определение момента времени для смены выполняемого процесса;
выбор процесса на выполнение из очереди готовых процессов;
переключение контекстов "старого" и "нового" процессов.

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

В соответствии с алгоритмами, основанными на квантовании, смена активного процесса происходит, если:

  • процесс завершился и покинул систему,
  • произошла ошибка,
  • процесс перешел в состояние ОЖИДАНИЕ,
  • исчерпан квант процессорного времени, отведенный данному процессу.

Процесс, который исчерпал свой квант, переводится в состояние ГОТОВНОСТЬ и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение в соответствии с определенным правилом выбирается новый процесс из очереди готовых. Таким образом, ни один процесс не занимает процессор надолго, поэтому квантование широко используется в системах разделения времени. Граф состояний процесса, изображенный на рисунке 2.1, соответствует алгоритму планирования, основанному на квантовании. Кванты, выделяемые процессам, могут быть одинаковыми для всех процессов или различными. Кванты, выделяемые одному процессу, могут быть фиксированной величины или изменяться в разные периоды жизни процесса. Процессы, которые не полностью использовали выделенный им квант (например, из-за ухода на выполнение операций ввода-вывода), могут получить или не получить компенсацию в виде привилегий при последующем обслуживании. По разному может быть организована очередь готовых процессов: циклически, по правилу "первый пришел - первый обслужился" (FIFO) или по правилу "последний пришел - первый обслужился" (LIFO). Другая группа алгоритмов использует понятие "приоритет" процесса. Приоритет - это число, характеризующее степень привилегированности процесса при использовании ресурсов вычислительной машины, в частности, процессорного времени: чем выше приоритет, тем выше привилегии. Приоритет может выражаться целыми или дробными, положительным или отрицательным значением. Чем выше привилегии процесса, тем меньше времени он будет проводить в очередях. Приоритет может назначаться директивно администратором системы в зависимости от важности работы или внесенной платы, либо вычисляться самой ОС по определенным правилам, он может оставаться фиксированным на протяжении всей жизни процесса либо изменяться во времени в соответствии с некоторым законом. В последнем случае приоритеты называются динамическими. Существует две разновидности приоритетных алгоритмов: алгоритмы, использующие относительные приоритеты, и алгоритмы, использующие абсолютные приоритеты. В обоих случаях выбор процесса на выполнение из очереди готовых осуществляется одинаково: выбирается процесс, имеющий наивысший приоритет. По разному решается проблема определения момента смены активного процесса. В системах с относительными приоритетами активный процесс выполняется до тех пор, пока он сам не покинет процессор, перейдя в состояние ОЖИДАНИЕ (или же произойдет ошибка, или процесс завершится). В системах с абсолютными приоритетами выполнение активного процесса прерывается еще при одном условии: если в очереди готовых процессов появился процесс, приоритет которого выше приоритета активного процесса. В этом случае прерванный процесс переходит в состояние готовности. На рисунке 2 показаны графы состояний процесса для алгоритмов с относительными (а) и абсолютными (б) приоритетами.

Рис.1. Граф состояний процесса в многозадачной среде
(а) с относительными приоритетами; (б)с абсолютными приоритетами

Во многих операционных системах алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора процесса из очереди готовых определяется приоритетами процессов.

Планирование процессов включает в себя решение следующих задач:

    определение момента времени для смены выполняемого процесса;

    выбор процесса на выполнение из очереди готовых процессов;

    переключение контекстов "старого" и "нового" процессов.

Первые две задачи решаются программными средствами, а последняя в значительной степени аппаратно (см. раздел 2.3. "Средства аппаратной поддержки управления памятью и многозадачной среды в микропроцессорах Intel 80386, 80486 и Pentium" ).

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

В соответствии с алгоритмами, основанными на квантовании, смена активного процесса происходит, если:

    процесс завершился и покинул систему,

    произошла ошибка,

    процесс перешел в состояние ОЖИДАНИЕ,

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

Процесс, который исчерпал свой квант, переводится в состояние ГОТОВНОСТЬ и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение в соответствии с определенным правилом выбирается новый процесс из очереди готовых. Таким образом, ни один процесс не занимает процессор надолго, поэтому квантование широко используется в системах разделения времени. Граф состояний процесса, изображенный на рисунке 2.1, соответствует алгоритму планирования, основанному на квантовании.

Кванты, выделяемые процессам, могут быть одинаковыми для всех процессов или различными. Кванты, выделяемые одному процессу, могут быть фиксированной величины или изменяться в разные периоды жизни процесса. Процессы, которые не полностью использовали выделенный им квант (например, из-за ухода на выполнение операций ввода-вывода), могут получить или не получить компенсацию в виде привилегий при последующем обслуживании. По разному может быть организована очередь готовых процессов: циклически, по правилу "первый пришел - первый обслужился" (FIFO) или по правилу "последний пришел - первый обслужился" (LIFO).

Другая группа алгоритмов использует понятие "приоритет" процесса. Приоритет - это число, характеризующее степень привилегированности процесса при использовании ресурсов вычислительной машины, в частности, процессорного времени: чем выше приоритет, тем выше привилегии.

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

Существует две разновидности приоритетных алгоритмов: алгоритмы, использующие относительные приоритеты, и алгоритмы, использующие абсолютные приоритеты.

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

Рис. 2.2. Графы состояний процессов в системах (а) с относительными приоритетами; (б)с абсолютными приоритетами

Во многих операционных системах алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора процесса из очереди готовых определяется приоритетами процессов.

Алгоритм описания процессов

Рисунок 11 – Алгоритм описания процессов
Литература

1. Обеспечение качества обучения государственных и муниципальных служащих Российской Федерации. Выпуск 11. Инструктивно-методические материалы. Часть 1. Практические рекомендации по выбору типовой модели системы управления качеством образования. – М.: РАГС, 2006. – с.:38-44.

2. ГОСТ Р ИСО 9000-2001 Системы менеджмента качества. Основные положения и словарь.

3. Репин В.В., Елиферов В.Г. Процессный подход к управлению. Моделирование бизнес-процессов. – 3-е изд., испр. – М.: РИА «Стандарты и качество», 2005г. – с.: 305-314, ил. – (Серия «Практический менеджмент»).

4. http://slovar.plib.ru/ Толковый словарь Ожегова.


Приложение 1

Пример заполнения реестра типовых процессов и видов деятельности ОУ

№ п/п Наименование вида деятельности или процесса Иден. №
Основные процессы
1.1 Маркетинговые исследования рынка научных, образовательных услуг и рынка труда
1.2 Проектирование и разработка образовательных программ
1.3 Довузовская подготовка и прием студентов
1.4 Реализация основных образовательных программ
1.5 Воспитательная и внеучебная работа с обучаемыми
1.6 Проектирование и реализация программ дополнительного образования
1.7 Подготовка кадров высшей квалификации (аспирантура, докторантура)
1.8 Научно-исследовательская и инновационная деятельность
Вспомогательные процессы
2.1 Бухгалтерско-финансовое обеспечение научно-образовательного процесса
2.2 Кадровое обеспечение
2.3 Закупки и взаимодействие с поставщиками материальных ресурсов
2.4 Управление образовательной средой
2.5 Издательская деятельность
2.6 Библиотечное и информационное обслуживание
2.7 Управление инфраструктурой и производственной средой
2.8 Обеспечение безопасности жизнедеятельности
2.9 Социальная поддержка студентов и сотрудников ОУ

Приложение 2

Пример заполнения таблицы 2 «Спецификация процесса»

1. Наименование процесс Научно-исследовательская деятельность (НИД)
2. Цель процесса Создание условий для реализации научно-исследовательской деятельности студентов и преподавателей
3. Владелец процесса Проректор по научно-исследовательской работе
4. Входы процесса Поставщик входа – процесс(ы), предоставляющий(ие) вход
4.1 Аспиранты, докторанты. Процесс управления докторантуры и аспирантуры
4.2 Соискатели Процесс управления докторантуры и аспирантуры; Внешний поставщик
4.3 Студенты Учебный процесс
4.4 Данные маркетинговых исследований (требования потребителей) Маркетинг и планирование набора
5. Выходы процесса Потребитель выхода – процесс(ы), использующий(ие) выход
5.1 Статьи, изобретения Учебный процесс; Отдел интеллектуальной собственности; Процесс управления докторантуры и аспирантуры; Библиотечное и информационное обслуживание; Внешний потребитель* и др.
5.2 Дипломы, гранты Учебный процесс, Процесс управления финансовым обеспечением; Внешний потребитель и др.
5.3 Защитившие кандидатские, докторские диссертации
5.4 Научные школы Учебный процесс; Научно-исследовательская деятельность; Внешний потребитель и др.
6. Управляющая документация 6.1 Программа развития подразделения
6.2 Внутренние нормативные документы
6.3 Инструкция по организации научной и научно- технической деятельности, осуществляемой за счет собственных средств ТГУ с приложениями и др.
7. Механизмы процесса 7.1 Персонал
7.2 Финансы
7.3 Орг. техника
7.4 Библиотека и др.
8. Показатели процесса, ед. изм. Норматив Частота измерения Метод расчета показателя
8.1 Процент ППС с учеными степенями и (или) учеными званиями, % Не менее 60 ежегодно (Количество ППС с уч.степенями и званиями / Общ. количество ППС)*100
8.2 Процент докторов наук и профессоров, % Не менее 10 ежегодно (Кол-во докторов наук и профессоров / Общее количество ППС)*100
8.3 Объем НИР на единицу ППС, тыс. руб. За 5 лет – не менее 18 ежегодно … и др.

Всеобщий менеджмент качества (Total Quality Management – TQM) - интегрированный метод менеджмента, целиком ориентирующий деятельность организации на полную удовлетворенность потребителей (внешних и внутренних), сотрудников и общества в целом, охватывающий все процессы организации, вовлекающий в деятельность по непрерывному улучшению качества всех ее сотрудников и направленный на достижение долговременного успеха и стабильности функционирования организации.

Потребитель (согласно ГОСТ Р ИСО 9000-2005) – организация или лицо, получающие продукцию. Примеры: клиент, заказчик, конечный пользователь, розничный торговец, покупатель, студент и др.

Продукция (согласно ГОСТ Р ИСО 9000-2005) – результат процесса, т.е. результат совокупности взаимосвязанных или взаимодействующих видов деятельности, преобразующих входы в выходы.



Результативность

Эффективность (согласно ГОСТ Р ИСО 9000-2005) - степень реализации запланированной деятельности и достижения запланированных результатов.

Внутренний потребитель – потребитель, находящийся в организации и, в ходе своей деятельности, использующий результаты (выходы) предыдущего процесса.

Внешний потребитель – потребитель, находящийся за пределами организации и использующий результат (выход) процесса.

FCFS по первым буквам его английского названия – First-Come, First-Served (первым пришел, первым обслужен). Представим себе, что процессы, находящиеся в состоянии готовность, выстроены в очередь. Когда процесс переходит в состояние готовность, он, а точнее, ссылка на его PCB помещается в конец этой очереди. Выбор нового процесса для исполнения осуществляется из начала очереди с удалением оттуда ссылки на его PCB . Очередь подобного типа имеет в программировании специальное наименование – FIFO 1Надо отметить, что аббревиатура FCFS используется для этого алгоритма планирования вместо стандартной аббревиатуры FIFO для механизмов подобного типа для того, чтобы подчеркнуть, что организация готовых процессов в очередь FIFO возможна и при других алгоритмах планирования (например, для Round Robin – см. раздел " Round Robin (RR )"). , сокращение от First In, First Out (первым вошел, первым вышел).

Такой алгоритм выбора процесса осуществляет невытесняющее планирование . Процесс, получивший в свое распоряжение процессор, занимает его до истечения текущего CPU burst . После этого для выполнения выбирается новый процесс из начала очереди.

Преимуществом алгоритма FCFS является легкость его реализации, но в то же время он имеет и много недостатков. Рассмотрим следующий пример. Пусть в состоянии готовность находятся три процесса p 0 , p 1 и p 2 , для которых известны времена их очередных CPU burst . Эти времена приведены в таблице 3.1. в некоторых условных единицах. Для простоты будем полагать, что вся деятельность процессов ограничивается использованием только одного промежутка CPU burst , что процессы не совершают операций ввода-вывода и что время переключения контекста так мало, что им можно пренебречь.

Если процессы расположены в очереди процессов, готовых к исполнению, в порядке p 0 , p 1 , p 2 , то картина их выполнения выглядит так, как показано на рисунке 3.2 . Первым для выполнения выбирается процесс p 0 , который получает процессор на все время своего CPU burst , т. е. на 13 единиц времени. После его окончания в состояние исполнение переводится процесс p 1 , он занимает процессор на 4 единицы времени. И, наконец, возможность работать получает процесс p 2 . Время ожидания для процесса p 0 составляет 0 единиц времени, для процесса p 1 – 13 единиц, для процесса p 2 – 13 + 4 = 17 единиц. Таким образом, среднее время ожидания в этом случае – (0 + 13 + 17)/3 = 10 единиц времени. Полное время выполнения для процесса p 0 составляет 13 единиц времени, для процесса p 1 – 13 + 4 = 17 единиц, для процесса p 2 – 13 + 4 + 1 = 18 единиц. Среднее полное время выполнения оказывается равным (13 + 17 + 18)/3 = 16 единицам времени.


Рис. 3.2.

Если те же самые процессы расположены в порядке p 2 , p 1 , p 0 , то картина их выполнения будет соответствовать рисунку 3.3 . Время ожидания для процесса p 0 равняется 5 единицам времени, для процесса p 1 – 1 единице, для процесса p 2 – 0 единиц. Среднее время ожидания составит (5 + 1 + 0)/3 = 2 единицы времени. Это в 5 (!) раз меньше, чем в предыдущем случае. Полное время выполнения для процесса p 0 получается равным 18 единицам времени, для процесса p 1 – 5 единицам, для процесса p 2 – 1 единице. Среднее полное время выполнения составляет (18 + 5 + 1)/3 = 8 единиц времени, что почти в 2 раза меньше, чем при первой расстановке процессов.


Рис. 3.3.

Как мы видим, среднее время ожидания и среднее полное время выполнения для этого алгоритма существенно зависят от порядка расположения процессов в очереди. Если у нас есть процесс с длительным CPU burst , то короткие процессы, перешедшие в состояние готовность после длительного процесса, будут очень долго ждать начала выполнения. Поэтому алгоритм FCFS практически неприменим для систем разделения времени – слишком большим получается среднее время отклика в интерактивных процессах .

Round Robin (RR)

Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin ( Round Robin – это вид детской карусели в США) или сокращенно RR . По сути дела, это тот же самый алгоритм, только реализованный в режиме вытесняющего планирования . Можно представить себе все множество готовых процессов организованным циклически – процессы сидят на карусели. Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени , обычно 10 – 100 миллисекунд (см. рис. 3.4.). Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение и может исполняться.


Рис. 3.4.

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

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

Рассмотрим предыдущий пример с порядком процессов p 0 , p 1 , p 2 и величиной кванта времени равной 4 . Выполнение этих процессов иллюстрируется таблицей 3.2 . Обозначение "И" используется в ней для процесса, находящегося в состоянии исполнение, обозначение "Г" – для процессов в состоянии готовность, пустые ячейки соответствуют завершившимся процессам. Состояния процессов показаны на протяжении соответствующей единицы времени, т. е. колонка с номером 1 соответствует промежутку времени от 0 до 1 .

Таблица 3.2.
Время 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
p 0 И И И И Г Г Г Г Г И И И И И И И И И
p 1 Г Г Г Г И И И И
p 2 Г Г Г Г Г Г Г Г И

Первым для исполнения выбирается процесс p 0 . Продолжительность его CPU burst больше, чем величина кванта времени , и поэтому процесс исполняется до истечения кванта , т. е. в течение 4 единиц времени. После этого он помещается в конец очереди готовых к исполнению процессов, которая принимает вид p 1 , p 2 , p 0 . Следующим начинает выполняться процесс p 1 . Время его исполнения совпадает с величиной выделенного кванта , поэтому процесс работает до своего завершения. Теперь очередь процессов в состоянии готовность состоит из двух процессов, p 2 и p 0 . Процессор выделяется процессу p 2 . Он завершается до истечения отпущенного ему процессорного времени, и очередные кванты отмеряются процессу p 0 – единственному не закончившему к этому моменту свою работу. Время ожидания для процесса p 0 (количество символов "Г" в соответствующей строке) составляет 5 единиц времени, для процесса p 1 – 4 единицы времени, для процесса p 2 – 8 единиц времени. Таким образом, среднее время ожидания для этого алгоритма получается равным (5 + 4 + 8)/3 = 5,6(6) единицы времени. Полное время выполнения для процесса p 0 (количество непустых столбцов в соответствующей строке) составляет 18 единиц времени, для процесса p 1 – 8 единиц, для процесса p 2 – 9 единиц. Среднее полное время выполнения оказывается равным (18 + 8 + 9)/3 = 11,6(6) единицы времени.

Легко увидеть, что среднее время ожидания и среднее полное время выполнения для обратного порядка процессов не отличаются от соответствующих времен для алгоритма FCFS и составляют 2 и 8 единиц времени соответственно.