logo

Процес Vs. Тема | Разлика между процес и нишка

„Разлика между процес и нишка“ е един от често задаваните въпроси на техническите интервюта. И двата процеса и нишките са свързани помежду си и много сходни, поради което създават объркване при разбирането на разликите между тях. Процесът и нишката са независима последователност на изпълнение, но и двете са диференцирани по начин, по който процесите се изпълняват в различни пространства на паметта, докато нишките на един и същи процес се изпълняват в споделена памет.

В тази тема ще разберем краткото представяне на процеси и нишки и какви са другите разлики между тях.

масив за сортиране на java
Процес Vs. Нишка

Какво е процес?

Процесът е екземпляр на програма, която се изпълнява. Когато стартираме програма, тя не се изпълнява директно. Отнема известно време, за да следвате всички стъпки, необходими за изпълнение на програмата, и следването на тези стъпки за изпълнение е известно като процес.

Един процес може да създава други процеси за изпълнение на множество задачи наведнъж; създадените процеси са известни като клонинг или дъщерен процес , а основният процес е известен като родителски процес . Всеки процес съдържа собствено пространство в паметта и не го споделя с другите процеси. Той е известен като активен обект. Типичен процес остава във формата по-долу в паметта.

Процес Vs. Нишка

Процес в ОС може да остане във всяко от следните състояния:

    НОВО: Създава се нов процес.ГОТОВ: Процесът е готов и чака да бъде разпределен към процесор.БЯГАНЕ: Програмата се изпълнява.ОЧАКВАНЕ: Изчакване да се случи или да се случи някакво събитие.ПРЕКРАТЕН: Изпълнението приключи.

Как работят процесите?

Когато започнем да изпълняваме програмата, процесорът започва да я обработва. Необходими са следните стъпки:

  • Първо, програмата се зарежда в паметта на компютъра в двоичен код след транслация.
  • Една програма изисква памет и други ресурси на операционната система, за да се изпълнява. Ресурсите като регистри, програмен брояч и стек, и тези ресурси се предоставят от операционната система.
  • Регистърът може да има инструкция, адрес за съхранение или други данни, които се изискват от процеса.
  • Програмният брояч поддържа проследяването на програмната последователност.
  • Стекът съдържа информация за активните подпрограми на компютърна програма.
  • Една програма може да има различни екземпляри от себе си и всеки екземпляр на изпълняваната програма е известен като отделен процес.

Характеристики на процеса

  • Всеки път, когато създаваме процес, трябва да направим отделно системно извикване за всеки процес към ОС. The вилица () функцията създава процеса.
  • Всеки процес съществува в рамките на свой собствен адрес или пространство в паметта.
  • Всеки процес е независим и се третира като изолиран процес от ОС.
  • Процесите се нуждаят от IPC (Inter-process Communication), за да комуникират помежду си.
  • Не е необходима правилна синхронизация между процесите.

Какво е Thread?

Нишката е подмножество на процес и е известна също като олекотен процес. Един процес може да има повече от една нишка и тези нишки се управляват независимо от планировчика. Всички нишки в рамките на един процес са взаимно свързани. Темите имат обща информация, като напр сегмент от данни, кодов сегмент, файлове и т.н., който се споделя с техните равностойни нишки. Но съдържа собствени регистри, стек и брояч.

Процес Vs. Нишка

Как работи нишката?

Както обсъдихме, нишката е подпроцес или изпълнителна единица в рамките на процес. Един процес може да съдържа една нишка до множество нишки. Една нишка работи по следния начин:

  • Когато процес стартира, ОС му присвоява паметта и ресурсите. Всяка нишка в даден процес споделя паметта и ресурсите само на този процес.
  • Нишките се използват главно за подобряване на обработката на приложение. В действителност само една нишка се изпълнява в даден момент, но поради бързото превключване на контекста между нишките създава илюзията, че нишките работят паралелно.
  • Ако една нишка се изпълнява в процес, тя е известна като еднонишков И ако множество нишки се изпълняват едновременно, тогава това е известно като многопоточност.

Видове нишки

Има два вида нишки, които са:

1. Нишка на потребителско ниво

Както подсказва името, нишките на потребителско ниво се управляват само от потребители и ядрото няма информация за него.

Те са по-бързи, лесни за създаване и управление.

медийно предаване

Ядрото приема всички тези нишки като един процес и ги обработва само като един процес.

Нишките на ниво потребител се изпълняват от библиотеки на ниво потребител, а не от системни извиквания.

2. Нишка на ниво ядро

Нишките на ниво ядро ​​се обработват от операционната система и се управляват от нейното ядро. Тези нишки са по-бавни от нишките на потребителско ниво, тъй като контекстната информация се управлява от ядрото. За да създадем и реализираме нишка на ниво ядро, трябва да направим системно извикване.

Характеристики на Thread

  • Нишките споделят данни, памет, ресурси, файлове и т.н. със своите равностойни нишки в рамките на процес.
  • Едно системно повикване може да създаде повече от една нишка.
  • Всяка нишка има свой собствен стек и регистър.
  • Нишките могат директно да комуникират помежду си, тъй като споделят едно и също адресно пространство.
  • Нишките трябва да бъдат синхронизирани, за да се избегнат неочаквани сценарии.

Основни разлики между процес и нишка

  • Един процес е независим и не се съдържа в друг процес, докато всички нишки логически се съдържат в един процес.
  • Процесите са силно претеглени, докато нишките са леко претеглени.
  • Един процес може да съществува индивидуално, тъй като съдържа собствена памет и други ресурси, докато една нишка не може да съществува индивидуално.
  • Не е необходима правилна синхронизация между процесите. За разлика от тях нишките трябва да бъдат синхронизирани, за да се избегнат неочаквани сценарии.
  • Процесите могат да комуникират помежду си само чрез комуникация между процесите; за разлика от тях нишките могат директно да комуникират помежду си, тъй като споделят едно и също адресно пространство.

Таблица на разликите между процес и нишка

Процес Нишка
Процесът е екземпляр на програма, която се изпълнява или обработва. Нишката е сегмент от процес или лек процес, който се управлява независимо от планировчика.
Процесите са независими един от друг и следователно не споделят памет или други ресурси. Нишките са взаимозависими и споделят памет.
Всеки процес се третира като нов процес от операционната система. Операционната система приема всички нишки на потребителско ниво като един процес.
Ако един процес бъде блокиран от операционната система, тогава другият процес може да продължи изпълнението. Ако някоя нишка на потребителско ниво бъде блокирана, всички нейни равностойни нишки също се блокират, тъй като ОС ги приема всички като един процес.
Превключването на контекст между два процеса отнема много време, тъй като те са тежки в сравнение с нишката. Превключването на контекст между нишките е бързо, защото са много леки.
Сегментът от данни и кодовият сегмент на всеки процес са независими един от друг. Нишките споделят сегмент от данни и кодов сегмент със своите равностойни нишки; следователно са същите и за други нишки.
Операционната система отнема повече време, за да прекрати процес. Нишките могат да бъдат прекратени за много кратко време.
Създаването на нов процес отнема повече време, тъй като всеки нов процес отнема всички ресурси. Една нишка се нуждае от по-малко време за създаване.