Я учусь для своих итоговых экзаменов в моем CS, главном в подчиненных распределенных системах и операционных системах.
Я нахожусь в потребности в хорошем определении для задачи условий, процесса и потоков. До сих пор я уверен, что процесс является представлением выполнения (или приостановленный, но инициируемый) программа с ее собственной памятью, счетчиком команд, регистрами, стеком, и т.д. (блок управления процессом). Процессы могут выполнить потоки, которые совместно используют память, так, чтобы коммуникация через общую память была возможна в отличие от процессов, которые должны связаться через IPC.
Но что является различием между задачами и процессом. Я часто читал, что они interchangable и что термин задача больше не используется. Это действительно верно?
Процессы и потоки - это механика, задача - более концептуальна. Вы можете поставить задачу в очередь для асинхронного выполнения, например, в windows с .NET, она будет выполняться на потоке из пула потоков. В OpenMP задача будет частью цикла for, выполняемого на одном ядре.
Небольшие примечания: в windows также существуют задания, пулы потоков и волокна для механики. Кроме того, процесс - это ничто без хотя бы одного запущенного потока.
Термин «задача» в основном используется в контексте планирования *, когда он может относиться либо к потоку , либо к * процессу ** *, которые можно запланировать для работы на процессоре.
С точки зрения планировщика, между потоком и процессом может быть практически полное отсутствие разницы - оба представляют задачу , которая должна быть запланирована.
В последнее время термин «задача» получает более широкое распространение, особенно среди разработчиков .NET, благодаря, например, параллельная библиотека задач . В нем задачи - это единицы работы, которые можно запланировать для выполнения в потоках из пула рабочих потоков .
* например, в программировании ядра, особенно. в Linux
** теоретически вы можете создать свои планируемые объекты
Это зависит от вашего контекста.
В Ada задача - это конструкция языка программирования, обеспечивающая параллелизм.
Не указано, какую конструкцию операционной системы следует использовать для ее реализации, но она позволяет разделять память между задачами, поэтому поток будет более естественной реализацией.
Я думаю, это зависит от основной операционной системы, в которой используется термин.
Вы также можете думать о задаче как о запущенном фрагменте кода. Тогда часть потока или часть процесса может быть задачей.