„Разлика между процес и нишка“ е един от често задаваните въпроси на техническите интервюта. И двата процеса и нишките са свързани помежду си и много сходни, поради което създават объркване при разбирането на разликите между тях. Процесът и нишката са независима последователност на изпълнение, но и двете са диференцирани по начин, по който процесите се изпълняват в различни пространства на паметта, докато нишките на един и същи процес се изпълняват в споделена памет.
В тази тема ще разберем краткото представяне на процеси и нишки и какви са другите разлики между тях.
масив за сортиране на java
Какво е процес?
Процесът е екземпляр на програма, която се изпълнява. Когато стартираме програма, тя не се изпълнява директно. Отнема известно време, за да следвате всички стъпки, необходими за изпълнение на програмата, и следването на тези стъпки за изпълнение е известно като процес.
Един процес може да създава други процеси за изпълнение на множество задачи наведнъж; създадените процеси са известни като клонинг или дъщерен процес , а основният процес е известен като родителски процес . Всеки процес съдържа собствено пространство в паметта и не го споделя с другите процеси. Той е известен като активен обект. Типичен процес остава във формата по-долу в паметта.
Процес в ОС може да остане във всяко от следните състояния:
Как работят процесите?
Когато започнем да изпълняваме програмата, процесорът започва да я обработва. Необходими са следните стъпки:
- Първо, програмата се зарежда в паметта на компютъра в двоичен код след транслация.
- Една програма изисква памет и други ресурси на операционната система, за да се изпълнява. Ресурсите като регистри, програмен брояч и стек, и тези ресурси се предоставят от операционната система.
- Регистърът може да има инструкция, адрес за съхранение или други данни, които се изискват от процеса.
- Програмният брояч поддържа проследяването на програмната последователност.
- Стекът съдържа информация за активните подпрограми на компютърна програма.
- Една програма може да има различни екземпляри от себе си и всеки екземпляр на изпълняваната програма е известен като отделен процес.
Характеристики на процеса
- Всеки път, когато създаваме процес, трябва да направим отделно системно извикване за всеки процес към ОС. The вилица () функцията създава процеса.
- Всеки процес съществува в рамките на свой собствен адрес или пространство в паметта.
- Всеки процес е независим и се третира като изолиран процес от ОС.
- Процесите се нуждаят от IPC (Inter-process Communication), за да комуникират помежду си.
- Не е необходима правилна синхронизация между процесите.
Какво е Thread?
Нишката е подмножество на процес и е известна също като олекотен процес. Един процес може да има повече от една нишка и тези нишки се управляват независимо от планировчика. Всички нишки в рамките на един процес са взаимно свързани. Темите имат обща информация, като напр сегмент от данни, кодов сегмент, файлове и т.н., който се споделя с техните равностойни нишки. Но съдържа собствени регистри, стек и брояч.
Как работи нишката?
Както обсъдихме, нишката е подпроцес или изпълнителна единица в рамките на процес. Един процес може да съдържа една нишка до множество нишки. Една нишка работи по следния начин:
- Когато процес стартира, ОС му присвоява паметта и ресурсите. Всяка нишка в даден процес споделя паметта и ресурсите само на този процес.
- Нишките се използват главно за подобряване на обработката на приложение. В действителност само една нишка се изпълнява в даден момент, но поради бързото превключване на контекста между нишките създава илюзията, че нишките работят паралелно.
- Ако една нишка се изпълнява в процес, тя е известна като еднонишков И ако множество нишки се изпълняват едновременно, тогава това е известно като многопоточност.
Видове нишки
Има два вида нишки, които са:
1. Нишка на потребителско ниво
Както подсказва името, нишките на потребителско ниво се управляват само от потребители и ядрото няма информация за него.
Те са по-бързи, лесни за създаване и управление.
медийно предаване
Ядрото приема всички тези нишки като един процес и ги обработва само като един процес.
Нишките на ниво потребител се изпълняват от библиотеки на ниво потребител, а не от системни извиквания.
2. Нишка на ниво ядро
Нишките на ниво ядро се обработват от операционната система и се управляват от нейното ядро. Тези нишки са по-бавни от нишките на потребителско ниво, тъй като контекстната информация се управлява от ядрото. За да създадем и реализираме нишка на ниво ядро, трябва да направим системно извикване.
Характеристики на Thread
- Нишките споделят данни, памет, ресурси, файлове и т.н. със своите равностойни нишки в рамките на процес.
- Едно системно повикване може да създаде повече от една нишка.
- Всяка нишка има свой собствен стек и регистър.
- Нишките могат директно да комуникират помежду си, тъй като споделят едно и също адресно пространство.
- Нишките трябва да бъдат синхронизирани, за да се избегнат неочаквани сценарии.
Основни разлики между процес и нишка
- Един процес е независим и не се съдържа в друг процес, докато всички нишки логически се съдържат в един процес.
- Процесите са силно претеглени, докато нишките са леко претеглени.
- Един процес може да съществува индивидуално, тъй като съдържа собствена памет и други ресурси, докато една нишка не може да съществува индивидуално.
- Не е необходима правилна синхронизация между процесите. За разлика от тях нишките трябва да бъдат синхронизирани, за да се избегнат неочаквани сценарии.
- Процесите могат да комуникират помежду си само чрез комуникация между процесите; за разлика от тях нишките могат директно да комуникират помежду си, тъй като споделят едно и също адресно пространство.
Таблица на разликите между процес и нишка
Процес | Нишка |
---|---|
Процесът е екземпляр на програма, която се изпълнява или обработва. | Нишката е сегмент от процес или лек процес, който се управлява независимо от планировчика. |
Процесите са независими един от друг и следователно не споделят памет или други ресурси. | Нишките са взаимозависими и споделят памет. |
Всеки процес се третира като нов процес от операционната система. | Операционната система приема всички нишки на потребителско ниво като един процес. |
Ако един процес бъде блокиран от операционната система, тогава другият процес може да продължи изпълнението. | Ако някоя нишка на потребителско ниво бъде блокирана, всички нейни равностойни нишки също се блокират, тъй като ОС ги приема всички като един процес. |
Превключването на контекст между два процеса отнема много време, тъй като те са тежки в сравнение с нишката. | Превключването на контекст между нишките е бързо, защото са много леки. |
Сегментът от данни и кодовият сегмент на всеки процес са независими един от друг. | Нишките споделят сегмент от данни и кодов сегмент със своите равностойни нишки; следователно са същите и за други нишки. |
Операционната система отнема повече време, за да прекрати процес. | Нишките могат да бъдат прекратени за много кратко време. |
Създаването на нов процес отнема повече време, тъй като всеки нов процес отнема всички ресурси. | Една нишка се нуждае от по-малко време за създаване. |