Является ли процесс тем же, что и Main-Thread при выполнении? - PullRequest
1 голос
/ 30 сентября 2019

Есть ли конкретная разница между Process и Main-Thread в исполнении.

Я читал о различиях между Process и thread.

1 Ответ

0 голосов
/ 30 сентября 2019

Есть несколько способов посмотреть на это. 2 наиболее распространенными являются:

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

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

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

...