„Rozdiel medzi procesom a vláknom“ je jednou z často kladených otázok pri technických pohovoroch. Procesy aj vlákna spolu súvisia a sú si veľmi podobné, a preto vytvárajú zmätok pri pochopení rozdielov medzi nimi. Proces a vlákno sú nezávislou sekvenciou vykonávania, ale obe sú odlíšené tak, že procesy sa vykonávajú v rôznych pamäťových priestoroch, zatiaľ čo vlákna toho istého procesu sa vykonávajú v zdieľanom pamäťovom priestore.
V tejto téme pochopíme krátke predstavenie procesov a vlákien a aké sú ďalšie rozdiely medzi nimi.
Čo je proces?
Proces je inštancia programu, ktorý sa práve vykonáva. Keď spustíme program, nespustí sa priamo. Dodržanie všetkých krokov potrebných na spustenie programu trvá nejaký čas a dodržanie týchto krokov spustenia je známe ako proces.
Proces môže vytvárať ďalšie procesy na vykonávanie viacerých úloh naraz; vytvorené procesy sú známe ako klon alebo detský proces a hlavný proces je známy ako rodičovský proces . Každý proces obsahuje svoj vlastný pamäťový priestor a nezdieľa ho s ostatnými procesmi. Je známy ako aktívna entita. Typický proces zostáva v nižšie uvedenej forme v pamäti.
Proces v OS môže zostať v ktoromkoľvek z nasledujúcich stavov:
Ako fungujú procesy?
Keď začneme program vykonávať, procesor ho začne spracovávať. Vyžaduje nasledujúce kroky:
- Najprv sa program po preklade nahrá do pamäte počítača v binárnom kóde.
- Program vyžaduje na spustenie pamäť a ďalšie prostriedky operačného systému. Prostriedky, ako sú registre, počítadlo programov a zásobník, a tieto prostriedky poskytuje OS.
- Register môže mať inštrukciu, adresu úložiska alebo iné údaje, ktoré proces vyžaduje.
- Počítadlo programov udržiava stopu sledu programov.
- Zásobník obsahuje informácie o aktívnych podprogramoch počítačového programu.
- Program môže mať rôzne inštancie a každá inštancia spusteného programu je známa ako individuálny proces.
Vlastnosti procesu
- Zakaždým, keď vytvoríme proces, musíme vykonať samostatné systémové volanie pre každý proces do OS. The vidlička () funkcia vytvára proces.
- Každý proces existuje v rámci svojej vlastnej adresy alebo pamäťového priestoru.
- Každý proces je nezávislý a operačný systém s ním zaobchádza ako s izolovaným procesom.
- Procesy potrebujú IPC (Inter-process Communication), aby mohli navzájom komunikovať.
- Nevyžaduje sa správna synchronizácia medzi procesmi.
Čo je vlákno?
Vlákno je podmnožinou procesu a je známe aj ako ľahký proces. Proces môže mať viac ako jedno vlákno a tieto vlákna sú riadené nezávisle plánovačom. Všetky vlákna v rámci jedného procesu sú navzájom prepojené. Vlákna majú niektoré spoločné informácie, ako napr dátový segment, kódový segment, súbory atď., ktoré zdieľajú s ich partnerskými vláknami. Obsahuje však vlastné registre, zásobník a počítadlo.
Ako funguje vlákno?
Ako sme už diskutovali, vlákno je podproces alebo vykonávacia jednotka v rámci procesu. Proces môže obsahovať jedno vlákno až viacero vlákien. Vlákno funguje nasledovne:
kedy bol vynájdený prvý počítač
- Keď sa proces spustí, OS mu priradí pamäť a zdroje. Každé vlákno v rámci procesu zdieľa iba pamäť a prostriedky tohto procesu.
- Vlákna sa používajú hlavne na zlepšenie spracovania aplikácie. V skutočnosti sa súčasne vykonáva iba jedno vlákno, ale vďaka rýchlemu prepínaniu kontextu medzi vláknami vzniká ilúzia, že vlákna bežia paralelne.
- Ak sa v procese vykonáva jedno vlákno, nazýva sa to jednovláknový A ak sa súčasne spúšťa viacero vlákien, potom je to známe ako multithreading.
Typy vlákien
Existujú dva typy vlákien, ktoré sú:
1. Vlákno na úrovni používateľa
Ako už názov napovedá, vlákna na úrovni používateľa spravujú iba používatelia a jadro nemá jeho informácie.
Sú rýchlejšie, ľahko sa vytvárajú a spravujú.
Jadro berie všetky tieto vlákna ako jeden proces a spracováva ich iba ako jeden proces.
Vlákna na úrovni používateľa sú implementované knižnicami na úrovni používateľa, nie systémovými volaniami.
2. Vlákno na úrovni jadra
Vlákna na úrovni jadra sú obsluhované operačným systémom a riadené jeho jadrom. Tieto vlákna sú pomalšie ako vlákna na úrovni používateľa, pretože kontextové informácie spravuje jadro. Aby sme vytvorili a implementovali vlákno na úrovni jadra, musíme vykonať systémové volanie.
Vlastnosti vlákna
- Vlákna zdieľajú údaje, pamäť, zdroje, súbory atď. so svojimi partnerskými vláknami v rámci procesu.
- Jedno systémové volanie je schopné vytvoriť viac ako jedno vlákno.
- Každé vlákno má svoj vlastný zásobník a register.
- Vlákna môžu spolu priamo komunikovať, pretože zdieľajú rovnaký adresný priestor.
- Vlákna je potrebné synchronizovať, aby sa predišlo neočakávaným scenárom.
Kľúčové rozdiely medzi procesom a vláknom
- Proces je nezávislý a nie je obsiahnutý v inom procese, zatiaľ čo všetky vlákna sú logicky obsiahnuté v procese.
- Procesy sú silne zaťažené, zatiaľ čo vlákna sú odľahčené.
- Proces môže existovať individuálne, pretože obsahuje vlastnú pamäť a iné zdroje, zatiaľ čo vlákno nemôže mať svoju individuálnu existenciu.
- Nevyžaduje sa správna synchronizácia medzi procesmi. Naproti tomu vlákna musia byť synchronizované, aby sa predišlo neočakávaným scenárom.
- Procesy môžu medzi sebou komunikovať iba pomocou medziprocesovej komunikácie; naproti tomu vlákna môžu medzi sebou komunikovať priamo, keďže zdieľajú rovnaký adresný priestor.
Tabuľka rozdielov medzi procesom a vláknom
Proces | Niť |
---|---|
Proces je inštancia programu, ktorý sa vykonáva alebo spracováva. | Vlákno je segment procesu alebo zjednodušený proces, ktorý plánovač riadi nezávisle. |
Procesy sú na sebe nezávislé, a preto nezdieľajú pamäť ani iné zdroje. | Vlákna sú vzájomne závislé a zdieľajú pamäť. |
Každý proces je operačným systémom považovaný za nový proces. | Operačný systém berie všetky vlákna na úrovni používateľa ako jeden proces. |
Ak je jeden proces zablokovaný operačným systémom, potom môže druhý proces pokračovať vo vykonávaní. | Ak sa zablokuje ľubovoľné vlákno na úrovni používateľa, zablokujú sa aj všetky jeho rovnocenné vlákna, pretože OS ich berie ako jeden proces. |
Kontextové prepínanie medzi dvoma procesmi trvá veľa času, pretože sú v porovnaní s vláknom náročné. | Prepínanie kontextu medzi vláknami je rýchle, pretože sú veľmi ľahké. |
Segment údajov a segment kódu každého procesu sú na sebe nezávislé. | Vlákna zdieľajú dátový segment a kódový segment so svojimi partnerskými vláknami; preto sú rovnaké aj pre ostatné vlákna. |
Operačnému systému trvá ukončenie procesu dlhšie. | Vlákna môžu byť ukončené vo veľmi krátkom čase. |
Vytváranie nového procesu trvá dlhšie, pretože každý nový proces zaberá všetky zdroje. | Vlákno potrebuje menej času na vytvorenie. |