Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Vytvorenie procesu:
Primárny spôsob, ako sa nový proces vytvorí, je prostredníctvom systému „Fork ()`. `Fork ()` Vytvára takmer identickú kópiu procesu volania ( * rodičovský * proces). Rodič a novovytvorené * Child * Process pokračujú v vykonávaní od bodu `Fork ()` Call. Kľúčovým rozdielom je návratová hodnota `Fork ()`:
* v rodičovskom procese: `Fork ()` Vráti ID procesu (PID) detského procesu. Tento PID je jedinečný identifikátor pre dieťa.
* v detskom procese: `FORK ()` Vráti 0.
Po `Fork ()` sa rodičovské a detské procesy zvyčajne riadia rôznymi cestami vykonávania. Dilý proces často používa `exec ()` rodina systémových hovorov (`execl`,` execv`, `execvp` atď.), A na nahradenie jeho aktuálneho obrazu novým programom. `exec ()` Prepíše pamäťový priestor dieťaťa pomocou kódu a údaje nového programu. Ak dieťa nepoužíva `exec ()`, pokračuje v vykonávaní rovnakého kódu ako rodič, čím vytvára skutočný klon.
Medzi ďalšie spôsoby, ako sa vytvárajú procesy, zahŕňajú:
* `vfork ()` (menej bežné a potenciálne problematické): Podobné ako „Fork ()`, ale s jemnými rozdielmi v zdieľaní pamäte. Všeobecne sa zabránilo v dôsledku potenciálnych mŕtvych záväzkov.
* `Clone ()` (pokročilejšie): Ponúka jemnejšiu kontrolu nad zdrojmi zdieľanými medzi procesmi rodičov a detí. Používa sa v knižniciach a pokročilých závitových modeloch.
* inicializácia systému: Proces Init (PID 1) je predkom všetkých ostatných procesov v systéme. Je zodpovedný za začatie ďalších procesov počas bootovania.
* `pthread_create ()`: Táto funkcia sa používa na vytváranie vlákien v rámci procesu. Zatiaľ čo vlákna zdieľajú rovnaký pamäťový priestor ako svoj rodičovský proces, stále sa považujú za samostatné vykonávacie jednotky spravované jadrom.
Vymazanie procesu (ukončenie):
Za niekoľkých okolností sa končí proces (je odstránený):
* Normálne ukončenie: Proces dokončí svoje vykonanie a volá systémové volanie „EXIT ()“. To signalizuje operačný systém, ktorý skončil. Stav výstupu sa môže použiť na sprostredkovanie úspechu alebo zlyhania.
* Abnormálne ukončenie: Proces zlyhá v dôsledku poruchy segmentácie, nezákonnej výučby alebo inej chyby. Jadro ukončí tento proces.
* Ukončenie signálu: Ďalší proces (alebo samotné jadro) môže do procesu vyslať signál (napr. Sigterm, `Sigkill`), čo núti jeho ukončenie. `Sigterm` umožňuje proces vyčistenia pred výstupom, zatiaľ čo` Sigkill` okamžite ukončí proces bez akéhokoľvek vyčistenia.
* Ukončenie rodičovského procesu: Ak sa materský proces ukončí, môžu byť ukončené aj jeho detské procesy, v závislosti od nastavení operačného systému (často zdedené od skupiny procesov rodičov). Proces „init“ zvyčajne prijíma osirelé deti.
Úloha jadra:
Jadro zohráva rozhodujúcu úlohu pri riadení procesov počas celého životného cyklu. Zaoberá sa tvorbou procesov, plánovaním, prideľovaním pamäte, správe zdrojov, spracovaním signálu a ukončením procesu. Jadro udržiava dátové štruktúry (napríklad tabuľka procesov) na sledovanie informácií o každom procese prevádzky.
Stručne povedané, vytvorenie a vymazanie procesov v UNIX sú starostlivo organizované jadrom a zahŕňajú súbor systémových hovorov, ktoré umožňujú programátorom riadiť životný cyklus procesu. Základné komponenty sú `Fork ()` a `exec ()` Rodina (pre vytvorenie) a `exit ()` a signály (na vymazanie).