Термины «процесс» и «поток» обычно используются, когда речь идет о многопоточности. В этом посте мы подробно рассмотрим эти концепции и многое другое.

Процесс — это экземпляр выполнения программы, или, другими словами, просто выполняющаяся или активная программа.

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

Thread – это легкий процесс.

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

Многопоточность и алгоритм разделения времени

Представьте себе, что у вас есть одноядерный компьютер и приложение, которое требует больше k – потоков (k › 1). В этом случае одному процессору приходится иметь дело с k процессами. Как он обрабатывает все потоки? Алгоритмы Time slicing» делают свое дело.

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

Параллельное выполнение или параллельные вычисления

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

Заключение

В этой серии статей в разделе Многопоточность мы обсудили, что такое потоки и процессы<. /em>, параллельное выполнениеи алгоритм разделения времени, а также параллельные вычисления. В следующем посте мы обсудим жизненный цикл потока, потоки демона, t hread join(), синхронизация и т. д. Самое интересное впереди, следите за обновлениями и подписывайтесь, чтобы первыми читать новые сообщения.

Если вы пропустили предыдущий пост из серии «Многопоточность», рекомендуем прочитать и его.