Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. II. 10. МОДЕЛЬ РАЗВИТИЯ НА УКИ
  2. III. Особенности учебного процесса.
  3. III. Участники образовательного процесса
  4. IV. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ УЧЕБНОГО ПРОЦЕССА.
  5. Абсорбция. Физические основы процесса абсорбции. Влияние температуры и давления на процесс абсорбции.
  6. АВТОМАТИЗАЦИЯ И СИГНАЛИЗАЦИЯ ПРОЦЕССА
  7. Адміністративна модель

Процессы и потоки

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

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

 

Процессы

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

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

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

 

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

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

 


Дата добавления: 2015-11-28; просмотров: 117 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.007 сек.)