Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Процесс:

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

Тема:

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

Задача:

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

Ответ 2

Короткий ответ:

Поток - это концепция планирования, это то, что фактически выполняет "ЦП" (вы не запускаете процесс). Процесс требует, по крайней мере, одного потока, который выполняет процессор/ОС.

Процесс - это организационная концепция данных. Ресурсы (например, память для состояния удержания, допустимое адресное пространство и т.д.) Выделяются для процесса.

Ответ 3

Чтобы объяснить на более простых терминах

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

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

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

Ответ 4

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

program в исполнении известен как process. Программа может иметь любое количество процессов. Каждый процесс имеет свое адресное пространство.

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

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

Для более полного понимания обратитесь по ссылке: http://www.careerride.com/os-thread-process-and-task.aspx

Ответ 5

из wiki clear information

1:1 (Threading на уровне ядра)

Темы, созданные пользователем, соответствуют 1-1 сопоставлению с планируемыми объектами в ядре. [3] Это простейшая возможная реализация потоковой передачи. Win32 использовал этот подход с самого начала. В Linux обычная библиотека C реализует этот подход (через NPTL или более старые LinuxThreads). Такой же подход используется Solaris, NetBSD и FreeBSD.

N: 1 (Потоки пользовательского уровня)

Модель N: 1 подразумевает, что все потоки уровня приложения сопоставляются с одним запланированным объектом уровня ядра [3], ядро ​​не знает нитей приложения. При таком подходе контекстное переключение может быть выполнено очень быстро и, кроме того, оно может быть реализовано даже на простых ядрах, которые не поддерживают потоковую обработку. Однако один из главных недостатков заключается в том, что он не может выиграть от аппаратного ускорения на многопоточных процессорах или многопроцессорных компьютерах: одновременно запланировано не более одного потока. [3] Например: если один из потоков должен выполнить запрос ввода-вывода, весь процесс блокируется, и преимущество нитей не может быть использовано. В GNU Portable Threads используется потоковая обработка на уровне пользователя, а также потоки состояний.

M: N (гибридная резьба)

M: N отображает некоторое количество потоков приложений на некоторое N число ячеек ядра, [3] или "виртуальных процессоров". Это компромисс между потоками уровня ядра ( "1:1" ) и уровня пользователя ( "N: 1" ). В общем, потоковые системы "M: N" сложнее реализовать, чем ни ядра, ни пользовательские потоки, поскольку требуются изменения как кода ядра, так и кода пользователя. В реализации M: N библиотека потоковой обработки отвечает за планирование пользовательских потоков в доступных планируемых сущностях; это делает переключение потоков потоков очень быстрым, поскольку оно позволяет избежать системных вызовов. Однако это увеличивает сложность и вероятность инверсии приоритета, а также субоптимальное планирование без обширной (и дорогостоящей) координации между планировщиком пользовательской среды и планировщиком ядра.

Ответ 6

Википедия подводит итог:

Потоки по сравнению с процессами

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

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

Системы, такие как Windows NT и OS/2, как говорят, имеют "дешевые" потоки и "дорогие" процессы; в других операционных системах разница не очень велика, кроме стоимости коммутатора адресного пространства, что подразумевает сброс TLB.

Задача и процесс используются синонимом.