Вы, наверное,ожидаете что услышите стандартный рассказ о процессах и потока.Нет. Но нам надо разобраться с тем что это такое?
- Процесс — экземпляр выполняемого приложения. При запуске приложения происходит выделение памяти под процесс, в часть которой и загружается код программы.
- Поток — объект внутри процесса, отвечающий за выполнение кода и получающий для этого процессорное время.
Так мы разобрались,и узнали что такое процесс и поток, но нам этого не достаточного для понимая, и нужно надо задуматься,а также разобраться в элементах. И так какие элементы процесса ?
Элементы процесса:
- Адресное пространство
- Потоки
- Открытые файлы
- Дочерние процессы
Так теперь мы знаем элементы процесса, но что-то не то, если потоки -это процесс выполнения на процессоре набора инструкций, точнее говоря программного кода., открытые файлы — это общедоступная спецификация хранения цифровых данных., дочерние процессы — это процесс, который создается другим процессом и называется родительским процессом и не понятно что такое адресное пространство? Адресное пространство — это не только пространство в оперативной памяти (начало адресов и конец), но также может иногда использоваться и виртуальная память. Адресное пространство — это абстрактная вещь, через которую программа может получать доступ к памяти например так: memory[0], не зная к какой памяти вообще обращается, а доступ к оперативной или виртуальной памяти обеспечивают другие вещи.
Чем отличается МИКРОКОНТРОЛЛЕР и МИКРОПРОЦЕССОР
После разбора элементов процесса,остается открытый вопрос, какие элементы потока?
Элементы потока:
Наверное стоит немного пояснить. Счётчик команд — регистр процессора, который хранит адрес ячейки памяти, в которой содержится команда, которую необходимо выполнить следующей. Регистр — устройство для записи, хранения и считывания n-разрядных двоичных данных и выполнения других операций над ними. Стек — это абстрактный тип данных, представляющий собой список элементов.
Теперь мы точно может углубиться в изучение Процесса и потока, мы разберем парочку примеров.
Два студента запускают на одной ВС (вычислительная система) программу извлечения квадратного корня. Один хочет вычислить квадратный корень из 4, а второй – из 1.
С точки зрения студентов: запущена одна и та же программа
С точки зрения ВС: запущено два различных вычислительных процесса, так как разные исходные данные приводят к разному набору вычислений.
Два студента пытаются выполнить идентичные задания, но запущенные в ВС с некоторым сдвигом во времени — извлечь квадратный корень из 1.
В то время как 1-ое задание приступило к печати полученного значения и ждет окончания операции ввода-вывода, а 2-ое только начинает исполняться.
Исходя из данных примеров мы можем прийти к выводу, что процесс характеризует некоторую обособленную совокупность набора исполняющихся команд, которые в свою очередь выделенная для исполнения память или адресное пространство, стеки, используемые файлы и устройства ввода-вывода и так далее.
Урок 33. Процессы и потоки в операционной системе
Так надо немного нужно пояснить что такое обособленность Это процесс который нужен для того, чтобы защитить один процесс от другого, поскольку они, совместно используя все ресурсы вычислительной системы, конкурируют друг с другом за доступ к ним.
Предпосылки появления потоков
При необходимости взаимодействия, процессы обращаются к ОС ( Операционная система ), которая, выполняя функции посредника, предоставляет им средства межпроцессной связи – конвейеры, разделяемую память и других, стоит отметить что такой способ взаимодействия параллельно действующих процессов является достаточно затратным(требуются дополнительные затраты времени на переключение контекста). К тому же на создание каждого процесса ОС тратиться системные ресурсы.
Почему нужна поддержка множества потоков внутри одного процесса?
Поддержка множества потоков внутри одного процесса нужна потому, что для работы программы обычно требуется выполнение множества задач. Такую возможность могут предоставлять потоки внутри процесса, таким образом они используют адресное пространство процесса, которому принадлежат.
Стоит отметить что, можно было бы создать ещё один процесс под эту задачу, но:
- У процесса будет отдельное адресное пространство и данные.
- По вопросам производительности: создание и уничтожение процесса дороже, чем создание потока.
Отличие процесса от потока
Процесс описывает выполняющуюся программу, а сама программа же, её процедуры выполняются в потоках. Главное надо понимать, что программа — это не один поток.
Программа — это набор взаимодействующих между собой потоков, и может быть, даже процессов.
Конечно, может быть 1 поток, если это какая-то совсем простая программа. Более того, в самых простейших операционных системах процесс имеет только единственный поток выполнения, поэтому в таких случаях размываются границы между потоками и процессами.
Состояния процесса
Процесс, выбранный для исполнения, может все еще ждать события, из-за которого он был приостановлен, и реально быть не готовым к выполнению. Для того чтобы избежать такой ситуации, разобьем состояние процесс не исполняется на два новых состояния: 1) Готовность 2) Ожидание
Состояния потоков
В операционной системе выполняет планирование потоков, принимая во внимание их состояние. В мультипрограммной системе поток может находиться в одном из трех основных состояний:
- Выполняемый — поток, который выполняется в текущий момент на процессоре
- Готовый — поток ждет получения кванта времени и готов выполнять назначенные ему инструкции. Планировщик выбирает следующий поток для выполнения только из готовых потоков.
- Заблокированный — работа потока заблокирована в ожидании блокирующей операции
Операции над процессами
Нужно разобраться в операциях над процессами, всего их три:
- Создание процесса – завершение процесса (одноразовые);
- Запуск процесса — приостановка процесса (перевод из состояния исполнение в состояние готовность);
- Блокирование процесса – разблокирование процесса (перевод из состояния ожидание в состояние готовность).
Но есть еще непарная операция: изменение приоритета процесса
ОБЩИЕ ПОНЯТИЯ О ПРОЦЕССАХ ПОНЯТИЯ ПРОЦЕСС И
ПОНЯТИЯ ПРОЦЕСС И НИТЬ Что такое программа? Что означает фраза «запустить программу на выполнение» ? #include компиляция запуск int main (void) < printf (“Hellon”); return (0); программа >Исполняемый файл процесс Процесс – это исполняющаяся программа в совокупности с её данными и контекстом (содержимым регистров процессора, системных таблиц и т. п. ).
Как операционная система запоминает, какие процессы созданы в системе? ДЕСКРИПТОР – это специальная структура в памяти ЭВМ, описывающая выполняющийся процесс. Содержит следующие значения: – – – – PID – номер процесса в системе; PPID – номер родительского процесса; тип или класс процесса, его приоритет; состояние процесса; информация о ресурсах, занятых процессом; информация о пользователе, запустившим процесс; и т. д. С помощью дескрипторов ОС может переключаться между несколькими процессами.
Можно ли представить процесс как поток выполняющихся команд? Процесс1 Поток команд 1 Процесс2 Поток команд 2 Поток выполняющихся команд называется НИТЬЮ или ТРЕДОЙ (thread) fiber Может ли один процесс иметь несколько одновременно выполняющихся нитей? Процесс3 Поток команд 3. 1 Поток команд 3. 2 В чем же тогда отличие нити от процесса? 1) Процессы выполняются независимо и не знают о существовании друга. 2) Процессы ограничиваются выделенными им ресурсами и не имеют доступ к ресурсам друга. 3) Планирование процессов осуществляется ОС, нити может планировать пользователь
УСЛОВИЯ СОЗДАНИЯ ПРОЦЕССОВ Когда в системе может появиться процесс? • при запуске системы; • после системного вызова; • по требованию пользователя; • внутри пакетного задания.
УСЛОВИЯ ЗАВЕРШЕНИЯ ПРОЦЕССА • в следствие системного вызова «завершение процесса» ; – при завершении программы; – из-за возникновения ошибки, делающей невозможным продолжение выполнения программы; • из-за неисправимой ошибки; • по сигналу от другого процесса.
ДЕРЕВО ПРОЦЕССОВ Вопрос. Может ли процесс возникнуть в системе самопроизвольно? Ответ. Нет. Процесс может быть порождён только другим процессом.
Исключением является корневой процесс, порождаемый при загрузке системы. ДЕРЕВО ПРОЦЕССОВ – это диаграмма (граф), отражающий «родственную связь» между процессами вида «Родительский – дочерний» . PID PPID 1 0 2 0 3 1 4 1 5 2
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПРОЦЕССАХ Используя программу taskmgr в Windows XP Используя программу gnome-system-monitor в Linux
Демонстрация Process Explorer от Sysinternals.
СОСТОЯНИЕ ПРОЦЕССА завершение выполнение зомби 1 3 2 блокировка 4 готовность 1 – планировщик выбирает этот процесс 2 – планировщик выбирает другой процесс 3 – процесс блокируется, ожидая входные данные 4 – данные становятся доступными. запуск
Как получить информацию о процессе? (лабораторная № 4) В GNU/Linux: getpid(), getppid(), getsid(), getuid() и т. п. #include #include int main (void) < pid_t mypid; mypid = getpid(); printf (“Current PID = %dn”, mypid); printf(«Parent PID = %dn», getppid()); >В Win 32: Get. Current. Process. ID();
Поиск родительского процесса в Win 32… HANDLE h. Process. Snap; PROCESSENTRY 32 pe 32; h. Process. Snap = Create. Toolhelp 32 Snapshot( TH 32 CS_SNAPPROCESS, 0 ); if( h. Process. Snap == INVALID_HANDLE_VALUE ) abort(); pe 32. dw. Size = sizeof( PROCESSENTRY 32 ); if( !Process 32 First( h. Process. Snap, do < if (pe 32. th 32 Process. process. ID) // НАШЛИ . (pe 32. th 32 Parent. Process.
ID); ) >while( Process 32 Next( h. Process. Snap, Close. Handle( h. Process. Snap );
Как получить информацию о запуске процесса Win 32? int WINAPI Win. Main( HINSTANCE h. Instance, HINSTANCE h. Prev. Instance, LPSTR lp. Cmd. Line, int n. Cmd.
Show ); Командная строка Все остальное – реестр.
Как создать процесс? (лабораторная № 5) В GNU/Linux – вызов fork() #include #include В системе существует один printf (“Запускаю дочерний процессn”); процесс pid = fork(); if (pid == -1) abort(); int main (int argc, char ** argv) < int pid; if (pid == 0) < printf (“Работает дочерний процессn”); >else < printf (“Работает родительский процессn”); >printf (“Работают оба процессаn”); return (0); > Выполняется двумя процессами параллельно
Как начать выполнять другую программу? (лабораторная № 5) Необходимо загрузить новую программу и передать ей управление. В GNU/Linuix – семейство вызовов exec. #include #include int main(void) < printf («Запуск программы lsn»); execl («/bin/ls», «-l», (char *)0); perror («Ошибка вызова execl»); Выполняется, return (1); если exec «не >сработал»
Семейство функций exec? (лабораторная № 5)
Запуск нового процесса в Win 32 API STARTUPINFO si; PROCESS_INFORMATION pi; TCHAR * cmd = “C: Programm FilesMy. Appsort. exe” Create. Process( NULL, // No module name (use command line) cmd, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent’s environment block NULL, // Use parent’s starting directory pi ); // Pointer to PROCESS_INFORMATION structure
Контрольные вопросы • что такое процесс? • в чем отличие процесса от программы? • что означает фраза «запустить программу на выполнение» ? • что такое нить? fiber? • при каких условиях может появиться новый процесс? • как система «запоминает» информацию о процессах? • можно ли остановить выполнение процесса? • можно ли узнать «родство» процессов? • какую информацию содержит дескриптор процесса? • может ли один процесс изменить информацию в адресном пространстве другого процесса? • в каких состояниях может находиться процесс?
Источник: present5.com
В чем разница между программой, исполняемым файлом и процессом?
Простыми словами — Программа: Программа представляет собой набор инструкций в удобочитаемом формате. (HelloWorld.c) Исполняемый: Исполняемый файл представляет собой скомпилированную форму Программы (файл HelloWorld.exe). Процесс: Процесс — это исполняемый файл, запускаемый ОС. Тот, который вы видите в диспетчере задач или списке задач (процесс HelloWord.exe, когда мы дважды щелкаем его).
ответ дан 21 окт ’12, 17:10
Программа или Компьютерная программа по сути предоставляет последовательность инструкций (или алгоритмов, если хотите) операционной системе или компьютеру. Эти компьютерные программы поставляются в исполняемой форме, которую операционная система распознает и может использовать для непосредственного выполнения инструкций.
По сути, исполнимый это файл в формате, который компьютер может выполнять напрямую, в отличие от исходных файлов, которые не могут быть выполнены напрямую и должны быть сначала скомпилированы. Исполняемый файл является результатом компиляции. Я упомянул, что операционная система распознает исполняемый файл через расширение.
Распространенное расширение, используемое для исполняемых файлов Windows, — .exe. После того, как исполняемый файл был выполнен процесс подготовки начинается. Процесс — это просто экземпляр компьютерной программы. Вы можете думать о процессе как о выполнении инструкций, содержащихся в компьютерной программе.
Когда вы просматриваете диспетчер задач на компьютере с Windows, вы можете увидеть все текущие процессы. Обрабатывает собственные ресурсы, такие как виртуальная память, описания операционной системы (дескрипторы, источники данных, приемники и т. д.), атрибуты безопасности и различные другие элементы, необходимые для эффективной обработки.
ответ дан 21 окт ’12, 18:10
Процесс — это, по сути, исполняемая программа. С каждым процессом связано его адресное пространство, список ячеек памяти от 0 до некоторого максимума, которые процесс может читать и записывать. Адресное пространство содержит выполнимый программа, данные программы и ее стек. Также с каждым процессом связан набор ресурсов, обычно включающий регистры (в том числе программный счетчик и указатель стека), список открытых файлов, ожидающих сообщений, списки связанных процессов и всю другую информацию, необходимую для запуска программы. . По сути, процесс — это контейнер, содержащий всю информацию, необходимую для запуска процесса. программа, представляющая собой набор инструкций, определяемых пользователем/разработчиком.
ответ дан 11 окт ’14, 00:10
Программа представляет собой набор инструкций и пассивную сущность. Программа является частью процесса, в то время как процесс находится в состоянии выполнения программы, и это единица работы в системе.
ответ дан 05 мар ’15, в 16:03
Программа: Это пассивный объект, как и содержимое файла, хранящегося на жестком диске. Другими словами, это как другой текстовый файл на вашем диске. В основном это будет в удобочитаемом формате (например, файл .java). Исполняемый: Это снова пассивная сущность. Это просто еще один файл на диске, полученный путем компиляции Программы.
Таким образом, это машиночитаемая версия файла программы (например, файл .class). Обратите внимание, что он все еще находится на диске и в настоящее время не выполняется. Процесс: Это активная часть программы/исполняемого файла. Программа/исполняемый файл, загружаемый в память (ОЗУ) и выполняющийся, называется процессом. Процесс состоит из набора инструкций.
ЦП выполняет эти инструкции одну за другой (например, JVM загружает ваш файл .class и дает инструкции ЦП).
Также у вас может быть два процесса, выполняющих одну и ту же программу/исполняемый файл.
ответ дан 08 окт ’18, 01:10
Программа — это набор исходных файлов на каком-либо языке высокого уровня, который вы пишете для выполнения какой-либо функции, например, файлы C++, реализующие списки сортировки. Исполняемый файл — это файл, который компилятор создает из этих исходных файлов, содержащих машинные инструкции, которые могут выполняться на ЦП. Процесс — это активное выполнение исполняемого файла на ЦП и в памяти. Он включает в себя информацию об управлении памятью, текущий ПК, SP, HP, регистры и т. д.
ответ дан 21 окт ’12, 17:10
Процесс – это часть программы. Процесс — это часть, в которой существует логика этой конкретной программы. Программа задается как набор процессов. В некоторых случаях мы можем разделить задачу на несколько частей. В это время мы пишем отдельную логику для каждой части, известной как процесс.
Создан 17 фев.
Рассмотрите это так. Программа — это план. Как чертеж здания. Это не здание, а абстракция того, как здание могло бы выглядеть. Процесс – это фактическое строительство Здания, которое строится по чертежу. При строительстве здания одновременно происходит множество вещей.
Вы готовите бетон, строите несколько комнат одновременно, прокладываете электрические кабели и т. д. Это будут нити.
ответ дан 05 мая ’16, 18:05
Нет разницы. Помните, ложки нет.
ответ дан 21 окт ’12, 17:10
- Программа — это статическая сущность, а процесс — динамическая сущность.
- Программа — это не что иное, как содержащаяся в файле. Где процесс — это исполняемая программа.
3. Программа не использует набор резисторов ЦП, но процесс использует набор резисторов ЦП для сохранения промежуточного и окончательного результата.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками unix operating-system or задайте свой вопрос.
ADV
Связанные вопросы
Последние вопросы
Связанные теги
stackovergo.com 2020–2023, под лицензией куб.см по-са 3.0 с указанием авторства. | Персональные данные | Cookies политики
Источник: stackovergo.com