![WannaCry: Dispozitivele Apple sunt sigure?](/f/3dcae1354ca6ee96a1d86dda89be2496.png?width=100&height=100)
LINUX după cum știm este un nucleu și nu un sistem de operare, se livrează cu mai multe distribuții precum: Debian, Fedora, Ubuntu etc. si multe altele. Sistem de operare Ubuntu dezvoltat de Mark Shuttleworth este cunoscut popular și utilizat pe scară largă de mulți. De asemenea, fiind gratuit și Open Source, noua sa versiune este lansată anual, contribuită de mii de dezvoltatori care contribuie la dezvoltarea sa. Dar, cum funcționează? Ceea ce toate procesele, lista evenimentelor îl fac să funcționeze și care este semnificația acestor procese?
Acest articol vă va aduce un pic mai adânc în interiorul Sistem de operare Ubuntu care sunt foarte interesante și ar ajuta un novice să înțeleagă complet funcționarea sa.
Linux are un proces pentru funcționarea sa, fiecare serviciu de sistem, inclusiv managementul alimentării, pornire, gestionarea blocării sistemului este un proces care are un fișier de configurare în „/etc/init”Care descrie evenimentul pe care va executa și evenimentul corespunzător pe care și-ar opri executarea, împreună cu aceasta, își menține și celelalte fișiere de configurare care descriu comportamentul său în timpul rulării în sistem “
/etc/”Director, făcând astfel sistemul un eveniment bazat pe evenimente.Dacă există evenimente generate atunci cineva ar trebui să fie acolo pentru a le prinde și a le executa?? Ei bine, evident, controlerul este procesul nostru principal care există ca părinte al tuturor proceselor cu ID proces 1 adică init. Acesta este procesul care începe cu pornirea sistemului și nu se oprește niciodată. Acest proces moare doar după ce sistemul este oprit, deoarece nu există un proces care să fie părintele inițial.
Versiunile anterioare ale Ubuntu inainte de 6.10 a inclus stil vechi sysvinit care a fost folosit pentru a rula scripturi în „/etc/rcx.d”Director la fiecare pornire și oprire a sistemului. Dar, după aceea parvenit sistemul a înlocuit stilul vechi sysvinit, dar oferă în continuare compatibilitate inversă.
Ultimele versiuni Ubuntu au acest sistem upstart, dar de la evoluția sa de la Ubuntu 6.10 a trecut mai multe versiuni versiunea actuală fiind 1.13.2 la 4 septembrie 2014. Cel mai recent sistem upstart are 2 iniț procese, una pentru procesele de sistem și alta care gestionează sesiunea utilizatorului conectat curent și există doar până când utilizatorul este conectat, numit și x-sesiune init.
Întregul sistem a fost prevăzut ca unul ierarhic, constând în relația strămoș-copil de-a lungul puterii până la oprirea sistemului.
De exemplu: O mică relație ierarhică între ambele procese init este: system init (1) -> manager de afișare (spațiu kernel) -> display manager (spațiu utilizator) -> user init (sau inițierea x-session).
Fișierele de configurare pentru procesele gestionate de inițierea sistemului rezidă în „/etc/init”Și pentru cei gestionați prin inițierea sesiunii se află în„/usr/share/upstart”(Conform versiunilor curente upstart de mai sus 1.12) și aceste fișiere de configurare sunt cheia multor secrete dezgropate despre procese, așa cum este descris în acest articol.
Ubuntu recunoaște două tipuri de procese:
Ierarhia care se realizează pe sistem se datorează relației de dependență între procese pe care o putem înțelege vizualizând fișierele lor de configurare. Să începem mai întâi de la o simplă relație ierarhică între procesele care fac ca sistemul să pornească și să înțeleagă semnificația fiecăruia dintre ele.
Init este primul proces care începe pornirea sistemului și este clasificat la munca și șederea jobul, deoarece nu este ucis niciodată și numai când inițierea este ucisă este la oprire, adică init moare și asta o dată pe sesiune și care este la oprire. La pornire, init generează primul eveniment din sistem, adică eveniment de pornire. Fiecare fișier de configurare din „/etc/init”Are două linii care definesc evenimentul care face ca procesul să înceapă și să se oprească. Aceste linii sunt evidențiate în figura de mai jos:
Acesta este un fișier de configurare al unui proces failsafe-x iar acestea încep și se opresc în condiții care descriu evenimentul pe care va începe procesul. La generarea evenimentului de pornire prin procesul de inițiere sunt acele procese care au pornire ca pornire la condiție executat în paralel și acest lucru definește doar ierarhia, iar toate procesele care se execută la pornire sunt copii ai init.
Procesele care încep la pornire sunt enumerate ca mai jos și toate acestea sunt lucrări de lucru și mor:
1. numele gazdei - Acesta este un proces care indică doar sistemului numele de gazdă definit în fișierul / etc / hostname.
2. kmod - Încarcă modulele kernel, adică toate driverele din fișierul / etc / modules.
3. montă - Acest proces generează o mulțime de evenimente și este în principal responsabil pentru montarea tuturor sistemelor de fișiere la pornire, inclusiv a sistemelor de fișiere locale și a sistemelor de fișiere la distanță.
/proc fișierul este, de asemenea, montat de acest proces și, după toate lucrările de montare, ultimul eveniment generat de acesta este un eveniment de sisteme de fișiere care face ca ierarhia să continue în continuare.
4. plymouth - Acest proces se execută la pornirea montajului și este responsabil pentru afișarea acelui ecran negru care este văzut la pornirea sistemului, arătând ceva de genul:
5. gata de gură - Indică faptul că plymouth este sus.
Următoarele sunt procesul principal, altele care se execută și la pornire includ, cum ar fi grafică udev-fallback, etc. Revenind la ierarhia de boot, pe scurt, evenimentele și procesele care urmează sunt ca în ordine:
1. init împreună cu generarea evenimentului de pornire.
2. montă montarea sistemelor de fișiere, plymouth (împreună cu montarea de pornire) care afișează ecranul de pornire și modulele de kernel de încărcare kmod.
3. local-system de fișiere eveniment generat de montaj cauzând rularea dbus. (Dbus este magistrala de mesaje la nivel de sistem care creează o priză care permite altor procese să comunice între ele prin intermediul trimiterea de mesaje către acest soclu și receptorul ascultă mesajele de pe acest soclu și le filtrează pe cele destinate aceasta).
4. local-system de fișiere împreună cu dbusul pornit și evenimentul static-up-network-up cauzat de rețeaua de proces care rulează și pe evenimentul de sistem de fișiere local determină rularea managerului de rețea.
5. virtual-system de fișiere evenimentul generat de mountall face ca udev să ruleze. (udev este managerul de dispozitive pentru Linux care gestionează conectarea la cald a dispozitivelor și este responsabil pentru crearea fișierelor în directorul / dev și gestionarea acestora.) udev creează fișiere pentru ram, rom etc în cele din directorul / dev montajul a terminat de montat sistemele de fișiere virtuale și a generat evenimentul de sistem de fișiere virtual care înseamnă montarea / dev director.
6. udev determină rularea upstart-udev-bridge care înseamnă că rețeaua locală este activată. Apoi, după ce mountall a terminat montarea ultimului sistem de fișiere și a generat evenimentul sistemului de fișiere.
7. Sistemul de fișiere evenimentul împreună cu evenimentul static-network-up determină rularea jobului rc-sysinit. Aici, vine compatibilitatea inversă între sysvinit mai vechi și upstart ...
9. rc-sysinit rulează comanda telinit care indică nivelul de rulare al sistemului.
10. După obținerea nivelului de execuție, init execută scripturile care încep cu „S'Sau'K”(Începând cu locuri de muncă care au„S„La începutul numelui lor și uciderea celor care au„K„La începutul numelui lor) în directorul /etc/rcX.d (unde„X'Este nivelul de rulare actual).
Acest set mic de evenimente determină pornirea sistemului de fiecare dată când îl porniți. Și acest eveniment care declanșează procesele este singurul lucru responsabil pentru crearea ierarhiei.
Acum, un alt supliment la cele de mai sus este cauza evenimentului. Care proces cauzează care eveniment este, de asemenea, specificat în același fișier de configurare al procesului, așa cum se arată mai jos în aceste linii:
Mai sus este o secțiune a fișierului de configurare al procesului mountall. Aceasta arată evenimentele pe care le emite. Numele evenimentului este unul care succede cuvântului „eveniment’. Evenimentul poate fi cel definit în fișierul de configurare ca mai sus sau poate fi numele procesului împreună cu prefixul „pornire”, „pornit”, „oprire” sau „oprit”.
Deci, aici definim doi termeni:
Astfel, urmează ierarhia și deci dependența dintre procese:
Generator de evenimente (părinte) -> Event catcher (copil)
Până acum, trebuie să fi înțeles cum ierarhia părinte-copil dependența dintre procese este stabilită de declanșarea evenimentului mecanism printr-un mecanism simplu de pornire.
Acum, această ierarhie nu este niciodată o relație unu-la-unu având un singur părinte pentru un singur copil. În această ierarhie este posibil să avem unul sau mai mulți părinți pentru un copil sau unul dintre procese să fie părinte al mai multor copii. Cum se realizează acest lucru?? Ei bine, răspunsul stă în fișierele de configurare în sine.
Aceste linii sunt preluate din proces - rețea și aici startul în condiții pare prea complex, compus din multe evenimente și anume - sisteme de fișiere locale, udevtrigger, container, nivel de alergare, rețele.
Local-filesystems este emis de mountall, udevtrigger este numele jobului, evenimentul container este emis de container-detect, evenimentul runlevel emis de rc-sysinit, iar rețeaua este din nou un job.
Astfel, într-o ierarhie, procesul de rețea este copilul montajului, udevtriggerului și detectării containerelor, deoarece nu își poate continua funcționarea (funcționarea proces sunt toate liniile care sunt definite în secțiunile script sau exec din fișierul de configurare al procesului) până când procesele de mai sus le generează evenimente.
La fel, putem avea un proces care este părinte al multor persoane dacă evenimentul generat de un proces este memorat în cache de mai mulți.
După cum s-a definit anterior, putem avea o durată scurtă (sau lucrați și muriți locuri de muncă) sau de lungă durată (sau rămâneți și lucrați) locuri de muncă, dar cum să distingem între ele ??
Locurile de muncă care au atât „începe' și 'oprește-te'Condițiile specificate în fișierele lor de configurare și au un cuvânt'sarcină'Din fișierul lor de configurare sunt lucrați și muriți joburile care încep la evenimentul generat, își execută scriptul sau secțiunea exec (în timp ce execută, acestea blochează evenimentele care le-au cauzat) și mor ulterior eliberând acele evenimente pe care le-au blocat.
Acele locuri de muncă care nu au „oprește-teCondiția din fișierul lor de configurare sunt de lungă durată sau rămâneți și lucrați locuri de muncă și nu mor niciodată. Acum, locurile de muncă de ședere și de muncă pot fi clasificate în continuare ca:
Astfel, fiecare proces din LINUX este dependent de unii și are unele procese dependente de acesta și această relație este mai multă de mulți și este specificată cu sistemul upstart împreună cu alte detalii ale procesului.