Невероятно крутое видео о "Process vs Thread"
Dmitry Tarasovhttps://www.youtube.com/watch?v=4rLW7zg21gI
Summary
Программа - это исполняемый файл, который храниться на диске и содержит в себе код или набор инструкций.
Когда код программы загружается в память и выполняется процессором, он становится процессом.
Активный процесс также включает ресурсы, необходимые программе для работы.
Операционная система выделяет такие ресурсы как: регистр процессора, счетчик команд, указатель стека, страницы памяти, выделенные процессу для его кучи и стека.
Каждый процесс имеет собственное адресное пространство памяти, что позволяет не искажать адресное пространство другого процесса, то есть ли один процесс неисправен, другие продолжат свою работу.
Поток - это единица выполнения внутри процесса. Внутри процесса есть по крайне мере один поток, он называется main thread.
Ранее упоминалось, что регистры, счетчики и др ресурсы - часть процесса, но правильнее будет сказать, что это принадлежит потоку.
Потоки внутри процесса шэрят между собой общее адресное пространство памяти, что позволяет им взаимодействовать друг с другом.
Стоит отметить, что если один поток неисправен, то рушится весь процесс.
Как операционная система запускает поток или процесс ?
Это работает благодаря переключению контекста. Выполняет эту роль scheduler.
Во время переключения контекста один процесс выключается из процессора, и другой процесс может начать работу.
Операционная система хранит состояние текущего запущенного процесса, поэтому процесс может быть восстановлен и продолжить свою работу.
Переключение контекста это очень дорогая операция, потому как нужно восстановить все состояние процесса на момент остановки. Переключение контекста между потоками также возможно и это более быстрая операция, чем переключение между процессами.
Переключение контекста очень доргая операция, поэтому существуют механизмы которые пытаются минимизировать эту стоимость. Такие механизмы как fibers and coroutines.
Worth Mentioning - заслуживает внимания
corrupt - искажать
malfunctions - неисправности
misbehaves - плохо себя ведет
due to the bug - из-за ошибки
malicious attack - злонамеренная атака
uncommon - нередко
accurate - точный
belong - принадлежать
interrupt - прерывание
fewer - меньше
complexity - сложность