Модель процесса

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

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

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

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


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

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

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

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

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

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

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

2.1.2.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Модель процесса:

  1. Ю.М. Плотински. Модели социальных процессо, 2001
  2. Ю.М. Плотинский. Модели социальных процессов, 2001
  3. РАЗДЕЛ 3. Формальные модели социальных процессов
  4. Раздел 3. Формальные модели социальных процессов
  5. § 7.2. Принципиальные модели процесса коммуникации и их применение
  6. 2. СОЦИОЛОГИЧЕСКАЯ МОДЕЛЬ ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА В ВУЗЕ
  7. Программа курса "Модели социальных процессов"
  8. МОДЕЛЬ РАЗУМА ИМЕЕТ СЛЕДУЮЩИЕ ИЗМЕРЕНИЯ РАЦИОНАЛЬНЫЕ И ИНТУИТИВНЫЕ ПРОЦЕССЫ
  9. Модель личности журналиста: профессиональные, социально-гражданские, нравственные, психологические и социально-демографические характеристики. Модификация общей модели для разных специализаций (репортер, аналитик, расследователь, публицист, ведущий-модератор и т.п.).
  10. Очерк 2: Берт «Процесс — вот мое достояние. Именно процесс создает успех»
  11. Задания, мешающие когнитивному процессу (ЗМКП), и задания, помогающие когнитивному процессу (ЗПКП)
  12. МОДЕЛЬ ИНФОРМАЦИОННАЯ
  13. 2. Полезная модель.
  14. Тема 6. Модели жизненного цикла
  15. Модель SOAR