![Ako používať animovaný GIF ako tapetu na vašom MAC](/f/a816a0360b55acaf55061a701542213e.jpg?width=100&height=100)
LINUX ako vieme, je jadro a nie operačný systém, dodáva sa s niekoľkými distribúciami, ako napríklad: Debian, Fedora, Ubuntu atď. a mnoho ďalších. Operačný systém Ubuntu vyvinul Mark Shuttleworth je populárne známy a mnohými široko používaný. Keďže je bezplatná a má otvorený zdroj, jeho nová verzia sa každoročne vydáva, na čom sa podieľajú tisíce vývojárov, ktorí sa podieľajú na jej vývoji. Ako to však funguje? Ako všetky procesy, zoznam udalostí funguje a aký je význam týchto procesov?
Tento článok vás zavedie trochu hlbšie do vnútra OS Ubuntu ktoré sú veľmi zaujímavé a nováčikovi by pomohli úplne porozumieť jeho fungovaniu.
Linux má proces fungovania, každá systémová služba vrátane správy napájania, spustenia systému, spracovania zlyhania systému je proces, ktorý má konfiguračný súbor v časti „/etc/init”, Ktorá popisuje udalosť, na ktorej sa vykoná, a zodpovedajúcu udalosť, na ktorej by zastavila jej vykonanie, spolu s tým tiež udržiava svoje ďalšie konfiguračné súbory, ktoré opisujú jeho správanie pri spustení v systéme “
/etc/”, Čím sa systém stane udalosťou riadeným.Ak existujú generované udalosti, mal by tam byť niekto, kto ich zachytí a vykoná?? Je zrejmé, že regulátor je náš hlavný proces, ktorý existuje ako nadradený pre všetky procesy s ID procesu 1 t.j. inic. Je to proces, ktorý začína spustením systému a nikdy sa nezastaví. Tento proces zomrie iba vtedy, keď je systém vypnutý, pretože neexistuje žiadny proces, ktorý by bol rodičom init.
Staršie verzie Ubuntu predtým 6.10 súčasťou starého štýlu sysvinit ktorý bol použitý na spustenie skriptov v „/etc/rcx.d”Adresár pri každom spustení a vypnutí systému. Ale potom povýšenecký systém nahradil starý štýl sysvinit systému, ale stále k nemu poskytuje spätnú kompatibilitu.
Najnovšie verzie Ubuntu majú tento štartovací systém, ale od jeho vývoja z Ubuntu 6.10 prešlo niekoľkými revíziami súčasnej verzie 1.13.2 k 4. septembru 2014. Najnovší štartovací systém má 2 inic procesy, jeden pre systémové procesy a druhý, ktorý spravuje aktuálnu prihlásenú reláciu používateľa a existuje iba dovtedy, kým nie je používateľ prihlásený, nazývaný tiež x-sedenie inic.
Celý systém bol stanovený ako hierarchický, pozostávajúci zo vzťahu predkov a detí v celej sile systému až po jeho vypnutie.
Napríklad: Malý hierarchický vzťah medzi oboma procesmi init je: inicializácia systému (1) -> správca zobrazenia (priestor jadra) -> správca displeja (užívateľský priestor) -> user init (alebo x-session init).
Konfiguračné súbory pre procesy spravované inicializáciou systému sa nachádzajú v časti „/etc/init“A pre tých, ktorí sú riadení reláciou, sa nachádzajte v„/usr/share/upstart”(Podľa aktuálnych aktualizovaných verzií vyššie 1.12) a tieto konfiguračné súbory sú kľúčom k mnohým odhaleným tajomstvám o procesoch, ako je popísané v tomto článku.
Ubuntu rozpoznáva dva typy procesov:
Hierarchia, ktorá je v systéme vytvorená, je spôsobená závislosťou medzi procesmi, ktorej môžeme porozumieť prezeraním ich konfiguračných súborov. Začnime najskôr od jednoduchého hierarchického vzťahu medzi procesmi, vďaka ktorým sa systém spustí, a pochopíme dôležitosť každého z nich.
Init je prvým procesom, ktorý sa začína pri zapnutí systému a je zaradený pod práca a pobyt práca, pretože nikdy nie je zabitá a iba vtedy, keď je zabitý init, sa vypína, tj. init iba zomrie, a to aj raz za reláciu, a to aj pri vypnutí. Po zapnutí generuje init úplne prvú udalosť v systéme, tj. Udalosť pri spustení. Každý konfiguračný súbor v „/etc/init”Obsahuje dva riadky, ktoré definujú udalosť, ktorá spôsobuje spustenie a zastavenie procesu. Tieto riadky sú zvýraznené na obrázku nižšie:
Toto je konfiguračný súbor procesu failsafe-x a tieto začínajú a zastavujú za podmienok opisujúcich udalosť, pri ktorej sa proces začne. Pri generovaní spúšťacej udalosti inicializačným procesom sú tieto procesy, ktoré majú spustenie ako štart za podmienky súbežne vykonávané a to len definuje hierarchiu a všetky procesy, ktoré sa vykonávajú pri štarte, sú podriadené inic.
Procesy, ktoré sa začínajú pri štarte, sú uvedené v zozname nižšie a sú to všetky úlohy typu „die-and-die“:
1. meno hosťa - Toto je proces, ktorý systému iba oznámi jeho názov hostiteľa definovaný v súbore /etc /hostname.
2. kmod - Načíta moduly jadra, tj. Všetky ovládače zo súboru /etc /modules.
3. mountall - Tento proces generuje veľa udalostí a je hlavne zodpovedný za spustenie všetkých súborových systémov pri štarte vrátane miestnych súborových systémov a vzdialených súborových systémov.
The /proc súbor je tiež pripojený týmto samotným procesom a po všetkých montážnych prácach je poslednou udalosťou, ktorú generuje, udalosť súborových systémov, vďaka ktorej hierarchia pokračuje ďalej.
4. plymouth - Tento proces sa vykonáva pri spustení programu mountall a je zodpovedný za zobrazenie čiernej obrazovky, ktorá sa zobrazuje pri štarte systému, pričom zobrazuje niečo ako nižšie:
5. pripravené na plymouth - Označuje, že plymouth je hore.
Nasledujú hlavné procesy, ďalšie, ktoré sa vykonávajú aj pri štarte, obsahujú ako udev-fallback-graphics, atď. Keď sa vrátime k hierarchii zavádzania, v skratke sú nasledujúce udalosti a procesy v poradí:
1. inic spolu s generovaním štartovacej udalosti.
2. mountall montáž súborových systémov, plymouth (spolu so spustením mountall) zobrazujúci úvodnú obrazovku a moduly jadra načítajúce kmod.
3. lokálny súborový systém udalosť generovaná mountall, ktorá spôsobuje spustenie dbusu. (Dbus je systémová zbernica správ, ktorá vytvára soket, cez ktorý môžu navzájom komunikovať ostatné procesy odosielanie správ do tejto zásuvky a príjemca počúva správy v tejto zásuvke a filtruje tie, pre ktoré je určená to).
4. lokálny súborový systém spolu so spustenou udalosťou dbus a static-network-up spôsobenou procesnou sieťou, ktorá tiež beží na udalosti local-filesystem, spôsobí spustenie správcu siete.
5. virtuálny súborový systém udalosť generovaná mountall spôsobí spustenie udev. (udev je správca zariadení pre Linux, ktorý spravuje pripojenie zariadení za chodu a je zodpovedný za vytváranie súborov v adresári /dev a ich správu.) udev vytvára súbory pre adresáre ram, rom atď. v adresároch /dev mountall dokončil montáž virtuálnych súborových systémov a vygeneroval udalosť virtuálny súborový systém označujúcu pripojenie /dev adresár.
6. udev spôsobí spustenie súboru upstart-udev-bridge, čo znamená, že miestna sieť je spustená. Potom, čo mountall dokončí pripojenie posledného súborového systému a vygeneruje udalosť súborového systému.
7. systém súborov udalosť spolu s udalosťou static-network-up spôsobí spustenie úlohy rc-sysinit. Tu prichádza spätná kompatibilita medzi starším sysvinitom a začínajúcim ...
9. rc-sysinit spustí príkaz telinit, ktorý oznámi úrovni behu systému.
10. Po získaní úrovne behu init vykoná skripty, ktoré začínajú „S“Alebo„K“(Nástup do zamestnania s„S„Na začiatku svojho mena a zabíjanie tých, ktorí majú“K“Na začiatku ich mena) v adresári /etc/rcX.d (kde„X‘Je aktuálna úroveň behu).
Tento malý súbor udalostí spôsobuje, že sa systém spustí vždy, keď ho zapnete. A toto spúšťanie procesov pomocou udalostí je jediná vec, ktorá je zodpovedná za vytváranie hierarchie.
Teraz je príčinou udalosti ďalší doplnok k vyššie uvedenému. Ktorý proces spôsobuje, ktorá udalosť je tiež špecifikovaná v tom istom konfiguračnom súbore procesu, ako je uvedené nižšie v týchto riadkoch:
Hore je časť konfiguračného súboru procesu mountall. Toto ukazuje udalosti, ktoré vysiela. Názov udalosti je nasledujúci za slovom „udalosť’. Udalosť môže byť buď tá, ktorá je definovaná v konfiguračnom súbore, ako je uvedené vyššie, alebo to môže byť názov procesu spolu s predponou „štart“, „spustenie“, „zastavenie“ alebo „zastavenie“.
Tu teda definujeme dva pojmy:
Nasleduje teda hierarchia a teda závislosť medzi procesmi:
Generátor udalostí (rodič) -> zachytávač udalostí (dieťa)
Doteraz ste museli pochopiť, ako funguje hierarchia rodič-dieťa závislosť medzi procesmi je stanovená pomocou spustenie udalosti mechanizmus prostredníctvom jednoduchého mechanizmu spustenia.
Teraz táto hierarchia nikdy nie je vzťahom jeden k jednému, ktorý má iba jedného rodiča na jedno dieťa. V tejto hierarchii môžeme mať jedného alebo viacerých rodičov pre jedno dieťa alebo jeden proces môže byť rodičom viac ako jedného dieťaťa. Ako sa to dosahuje?? Odpoveď spočíva v samotných konfiguračných súboroch.
Tieto riadky sú prevzaté z procesu - vytvárania sietí a tu sa začiatok podmienky zdá byť príliš zložitý a pozostáva z mnohých udalostí, konkrétne - lokálne súborové systémy, udevtrigger, kontajner, runlevel, vytváranie sietí.
Lokálny súborový systém vydáva mountall, udevtrigger je názov úlohy, udalosť kontajnera sa vysiela pomocou funkcie detekcie kontajnera, udalosť runlevel je spustená systémom rc-sysinit a sieť je opäť úlohou.
V hierarchii je teda procesná sieť podriadená systému mountall, udevtrigger a container-detect, pretože nemôže pokračovať vo svojom fungovaní (fungovanie proces sú všetky riadky, ktoré sú definované v sekciách skriptu alebo spustenia v konfiguračnom súbore procesu), kým vyššie uvedené procesy nevygenerujú svoje diania.
Rovnako tak môžeme mať jeden proces ako rodič mnohých, ak udalosť generovanú jedným procesom ukladajú do pamäte cache mnohí.
Ako bolo definované vyššie, môžeme mať buď krátkodobý (alebo pracovať a zomrieť zamestnania) alebo dlho žili (alebo zostať v práci) zamestnania ale ako ich rozlíšiť ??
Práce, ktoré majú obe „začať“A„zastaviť sa“Podmienky uvedené v ich konfiguračných súboroch a majú slovo„úloha“V ich konfiguračnom súbore sú pracovať a zomrieť úlohy, ktoré sa spustia na vygenerovanej udalosti, spustia ich skript alebo sekciu exec (počas vykonávania zablokujú udalosti, ktoré ich spôsobili) a potom umrú a uvoľnia tie udalosti, ktoré zablokovali.
Tie práce, ktoré nemajú „zastaviť sa“Podmienky v ich konfiguračnom súbore sú dlhodobé alebo zostať v práci prácu a nikdy nezomrú. Teraz je možné zamestnania typu pobyt a práca ďalej klasifikovať ako:
Každý proces v LINUX je závislý na niektorých a závisia na tom niektoré procesy a tento vzťah je závislý na mnohých a je špecifikovaný v systéme upstart spolu s ďalšími podrobnosťami o procese.