Я видел много ответов, но большинство из них недостаточно ясны для новичка в ОС.
В любой современной операционной системе один процесс имеет виртуальный ЦП, виртуальную память, виртуальный ввод / вывод.
Виртуальный ЦП: если у вас несколько ядер, процессу может быть назначено одно или несколько ядер для обработки планировщиком.
Виртуальный ввод / вывод: ввод / вывод может быть разделен между различными процессами. Как для примера клавиатуры, которая может использоваться несколькими процессами. Поэтому, когда вы печатаете в блокноте, вы видите, что текст меняется, когда регистратор клавиш, работающий в качестве демона, сохраняет все нажатия клавиш. Таким образом, процесс использует ресурс ввода-вывода.
Виртуальная память: http://en.wikipedia.org/wiki/Virtual_memory Вы можете перейти по ссылке.
Таким образом, когда планировщик выводит процесс из состояния выполнения, его состояние, содержащее значения, хранящиеся в регистрах, его стек и кучу и многое другое, сохраняется в структуре данных.
Так что теперь, когда мы сравниваем процесс с потоком, потоки, запущенные процессом, совместно используют виртуальный ввод-вывод и виртуальную память, назначенные процессу, который его запустил, но не виртуальный процессор.
Таким образом, процесс может быть запущен несколькими потоками, которые совместно используют одну и ту же виртуальную память и виртуальный буфер ввода-вывода, но имеют разные виртуальные процессоры.
Таким образом, вы понимаете необходимость блокировки ресурса процесса, будь то статически (стек) или динамически (куча), так как пространство виртуальной памяти распределяется между потоками процесса.
Кроме того, каждый поток, имеющий собственный виртуальный ЦП, может работать параллельно в разных ядрах и значительно сократить время завершения процесса (сокращение будет заметным только в том случае, если вы управляете памятью разумно и имеется несколько ядер).