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

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

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

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

Кто такой владелец процесса | Naked BPM (Eng sub)

Если она там присутствует, он отправляет эту страницу; если ее там нет, осуществляется запрос к диску для ее извлечения. Но с точки зрения центрального процессора запрос информации с диска занимает целую вечность. За время ожидания результатов запроса информации с диска может поступить множество других запросов.

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

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

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

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

Урок 33. Процессы и потоки в операционной системе

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

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

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

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

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

Читайте также:
Программа пистон для диагностики авто

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

Источник: mti58.ru

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

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

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

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

СОЗДАНИЕ ПРОЦЕССОВ

В универсальных ОС способ создания и прерывания процессов происходит по мере их необходимости. Есть 4 основных события, приводящие к созданию процессов:

1) Инициализация системы.

2) Выполнение изданного работающим процессом системного вызова на создание нового процесса. 3) Запрос пользователя на создание процесса.

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

Читайте также:
Программа сипр 2 вариант обучение на дому с умеренной отсталостью

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

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

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

ЗАВЕРШЕНИЕ ПРОЦЕССА

Рано или поздно процесс завершает свое существование. Чаще всего это происходит благодаря одному из следующих событий:

1) Обычный выход (преднамеренно).

2) Выход по ошибке (преднамеренно).

3) Выход по неисправимой ошибке (не преднамеренно).

4) Уничтожение другим процессом (не преднамеренно).

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

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

В этом случае процессу посылается сигнал (процесс прерывается при появлении ошибки).

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

ИЕРАРХИЯ ПРОЦЕССОВ

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

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

При запуске он считывает файл, в котором имеется информация о количестве терминалов. Терминал (консоль) – это устройство ввода и вывода. Затем процесс развивается таким образом, чтобы каждому терминалу соответствовал один процесс.

Если пароль правильный – процесс входа в систему запускает оболочку для обработки команд пользователя, которые в свою очередь могут запускать процессы. Т.О. все процессы в системе принадлежат одному дереву, начинающемуся с процесса init. В Windows не существует понятия иерархии процессов, все они равноправны.

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

СОСТОЯНИЯ ПРОЦЕССОВ

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

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

Действие – это работающий процесс, в этот конкретный момент использующий процессор. Готовый к работе – процесс временно приостановлен, чтобы позволить выполниться другому процессу. Блокировка или заблокирование процесса – процесс не может быть запущен прежде, чем произойдет некоторое внешнее событие.

Читайте также:
Как пользоваться программой gmer

1 переход – процесс блокируется, ожидая входных данных.

2 переход – планировщик выбирает другой процесс.

3 переход – планировщик выбирает этот процесс.

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

Переход 1 происходит тогда, когда процессор обнаруживает, что продолжение работы невозможно. В некоторых ОС процесс должен выполнить системный запрос, напр., block или pause, чтобы оказаться в заблокированном состоянии. В других системах (Unix) процесс автоматически блокируется, если он не в состоянии считать из специального файла или канала данные.

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

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

ПЕРЕКЛЮЧЕНИЕ ПРОЦЕССОВ

Для реализации процессов ОС ведет информационную структуру, которая называется таблицей процессов. В ней столько строк — сколько процессов, и столько столбцов – сколько имеется параметров, описывающих данный процесс. Эти параметры можно разделить на три группы:

1 группа параметров относится к управлению процессами.

2 группа описывает используемую процессом память.

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

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

На начальной стадии этого процесса работают аппаратные средства процессора:

1) Аппаратно запоминается счетчик команд.

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

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

Источник: poisk-ru.ru

В чем разница между потоком и процессом?

Обложка: В чем разница между потоком и процессом?

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

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

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

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

Источник: tproger.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru