Программа для компьютера это вид процесса

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

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

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

Process Hacker подробное описание и примеры работы с программой

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

загрузки (loading) и исполнения (execution). Эти шаги детально описываются в учебниках по программированию и операцион­ным системам и здесь рассматриваться не будут.

Параллельное программирование, мультипрограммирование и многозадачность

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

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

Иногда в технической литературе термин «параллельное программирование» используется как синоним мультипрограммирования. Однако эти понятия не­сколько различаются по смыслу. Параллельное программирование — это абст­рактный процесс разработки программ, которые потенциально могут исполнять­ся параллельно, вне зависимости от программно-аппаратной среды.

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

Процесс диагностики любого компьютера или ноутбука. Две самые нужные программы

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

Источник: studfile.net

Понятие процесса. Подсистема операционной системы управления процессами. Состояния процесса. Контекст и дескриптор процесса

Процесс – это выполнение программы, которая выполняет действия, указанные в этой программе. Его можно определить как исполнительный модуль, в котором выполняется программа. ОС помогает вам создавать, планировать и завершать процессы, используемые процессором. Процесс, созданный основным процессом, называется дочерним процессом.

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

Из этого руководства по операционной системе вы узнаете:

Состояния процесса (потока).

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

1) выполнение – активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

2) ожидание – пассивное состояние процесса, процесс заблокирован и ждет осуществления некоторого события (например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса);

Читайте также:
Не работает программа скриншотер

3) готовность – пассивное состояние процесса, при котором процесс блокируется в связи с внешними по отношению к нему обстоятельствами: т.е. процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.

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

Потоки

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

  • два стека: для режима ядра и для пользовательского режима;
  • локальную памятью потока (TLS, Thread-Local Storage);
  • уникальный идентификатор потока (TID, Thread ID).

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

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

  • svchost.exe — главный процесс для служб Windows.
  • dllhost.exe — отвечает за обработку приложений, использующих динамически подключаемые библиотеки. Также отвечает за COM и .NET. И ещё управляет процессами IIS.
  • lsass.exe — отвечает за авторизацию локальных пользователей, попросту говоря без него вход в систему для локальных пользователей будет невозможен.

Состояние процесса

Теперь, когда у нас есть некоторое понимание, что такое процесс и как он создается, перечислим состояния процесса, в которых он может находиться. В самой простой форме процесс может находиться в одном из этих состояний:
● Running. В запущенном состоянии процесс выполняется на процессоре. Это значит, что происходит выполнение инструкций.
● Ready. В состоянии готовности процесс готов запуститься, но по каким-то причинам ОС не исполняет его в заданный момент времени.
● Blocked. В заблокированном состоянии процесс выполняет какие-то операции, которые не дают ему быть готовым к исполнению до тех пор, пока не произойдет какое-либо событие. Один из обычных примеров — когда процесс инициализирует операцию IO, он становится заблокированным и таким образом какой-то другой процесс может использовать процессор.

Представить себе эти состояния можно в виде графа. Как мы можем видеть на картинке, состояние процесса может меняться между RUNNING и READY на усмотрение ОС. Когда состояние процесса меняется с READY, на RUNNING это означает, что процесс был запланирован. В обратную сторону — снят с планировки. В момент, когда процесс становится BLOCKED, например, инициализирую операцию IO, ОС будет держать его в этом состоянии до наступления некоторого события, например завершение IO. в этот момент переход в состояние READY и возможно моментально в состояние RUNNING, если так решит ОС.
Давайте взглянем на пример того, как два процесса проходят через эти состояния. Для начала представим, что оба процесса запущены, и каждый использует только CPU. В этом случае, их состояния будут выглядеть следующим образом.

image

В следующем примере первый процесс через некоторое время работы запрашивает IO и переходит в состояние BLOCKED, предоставляя другому процессу возможность запуска (РИС 1.4). ОС видит, что процесс 0 не использует CPU и запускает процесс 1. Во время выполнения процесса 1 — IO завершается и статус процесса 0 меняется на READY. Наконец процесс 1 завершился, а по его окончание процесс 0 запускается, исполняется и заканчивает свою работу.

image

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

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

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

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

Читайте также:
Программа для Андроид чтобы сделать скрин

Для повышения быстродействия процессов есть возможность задействовать внутренний параллелизм в самих процессах.

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

Можно выделить следующие отличия потоков от процессов:

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

Главное, что обеспечивает многопоточность, — это возможность параллельно выполнять несколько видов операций в одной прикладной программе. За счет чего реализуется эффективное использование ресурсов ЦП, а суммарное время выполнения задач становится меньше.

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

Что такое процесс?

Процесс состоит из:

  • исполняемой программы (код и данные);
  • закрытого адресного пространства(address space), т.е. набора адресов виртуальной памяти, который процесс может использовать;
  • системных ресурсов, выделяемых ОС процессу во время выполнения программы (семафоров, файлов и т.д.);
  • по крайней мере, одного потока управления(thread of execution). Поток – это сущность внутри процесса, которую ядро NT направляет на исполнение. Без него программа процесса не может выполняться.

Адресное пространство

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

При всяком обращении процесса по виртуальному адресу система виртуальной памяти транслирует этот адрес в физический адрес. Она также предотвращает непосредственный доступ процесса к виртуальной памяти, занятой другими процессами или ОС. Для исполнения кода ОС или доступа к памяти ОС поток должен выполняться в режиме ядра (kernel mode). Большинство процессов – это процессы пользовательского режима (user mode).

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

Системные ресурсы

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

Маркер доступа (Access Token) присоединяет к процессу ОС. Это объект исполнительной системы, который содержит информацию о правах зарегистрированного в системе пользователя, которого представляет данный процесс. Если процессу требуется получить информацию о своем маркере доступа или изменить некоторые атрибуты маркера, он должен открыть описатель своего объекта-маркера. Подсистема защиты определяет, есть ли у объекта такое право.

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

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

Объект-процесс

Каждый процесс в Windows NT представлен блоком процесса, создаваемым исполнительной системой (EPROCESS). В блоке EPROCESS содержатся атрибуты процесса и указатели на некоторые структуры данных. Так, у каждого процесса есть один или более потоков, представляемых блоками потоков исполнительной системы (ETHREAD).

Блок EPROCESS и связанные с ним структуры данных хранятся в системном пространстве. Исключение составляет только блок переменных окружения процесса (process environment block, PEB), он находится в адресном пространстве процесса (см. Рис. 3 Блоки переменных окружения процесса (PEB) и потока (TEB)).

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

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

Диспетчер процессов определяет атрибуты, хранящиеся в теле объектов-процессов, а также предоставляет системные сервисы для чтения и изменения этих атрибутов. Атрибуты и сервисы для объектов-процессов показаны на Рис. 4 Блоки процесса исполнительной системы (EPROCESS) и ядра (KPROCESS). Объект процесс исполнительной системы включает объект процесс ядра (содержит указатель на объект процесс ядра). Ядро управляет объектом процесс ядра, а исполнительная система управляет объектом исполнительной системы.

Что такое «процессы Windows» и зачем они нужны

Что такое процесс

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

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

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

Увидеть весь список запущенных в данный момент на компьютере процессов можно через Диспетчер задач. Для этого нужно вызвать контекстное меню на панели задач и из меню выбрать пункт «Запустить диспетчер задач».

Диспетчер задач

Далее необходимо перейти на вкладку «Процессы».

Процесы Windows

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

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

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

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

Список запущенных процессов, который вы увидите открыв Диспетчер задач, будет характерен только для вашего компьютера, ведь как вы понимаете, количество и набор процессов зависит от установленных и запущенных на вашем компьютере программ, а также от редакции операционной системы. И тут речь идет не только о версии Windows (например, XP, Vista, 7 или 8), а и о редакции — так у Windows 7 Домашняя набор запущенных процессов будет отличаться от Windows 7 Максимальная и дело тут в том, что эти операционные системы предназначены для разных задач, а значит и список запускаемых со стартом Windows системных служб будет у них отличаться.

Более подробно о некоторых службах и процессах я расскажу в следующих заметках.

Интересные заметки и видеоуроки по этой теме:

  1. Как изменить программу по умолчанию
  2. Эффективный поиск файлов и папок в Windows XP
  3. Как изменить имя пользователя Windows
  4. Как вывести компьютер из спящего режима или гибернации?
  5. Что за папка Program Files (x86)?

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

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