"Ubuntu Linux" sistēmas padziļināts ieskats - vai mēs to redzam?


Mēs zinām, ka LINUX ir kodols, nevis operētājsistēma, tiek piegādāti ar vairākiem izplatījumiem, piemēram: Debian, Fedora, Ubuntu utt. un daudz ko citu. Marka Šuttvorta izstrādātā Ubuntu OS ir populāri pazīstama un plaši izmantota daudzos. Turklāt, būdama bezmaksas un atvērta pirmkoda, tā katru gadu tiek izlaista jaunā versija, kuru iegulda tūkstošiem izstrādātāju, kas veicina tās attīstību. Bet kā tas darbojas? Kādi visi procesi, notikumu saraksts liek tam darboties un kāda ir šo procesu nozīme?

Šis raksts jūs nedaudz iedziļinās Ubuntu OS iekšienē, kas ir ļoti interesanti un palīdzētu iesācējam pilnībā izprast tā darbību.

Sistēmas nolikšana

Linux ir savs darbības process, katrs sistēmas pakalpojums, ieskaitot enerģijas pārvaldību, sāknēšanu, sistēmas avāriju apstrādi, ir process, kura konfigurācijas fails ir “/etc/init ”, kas apraksta notikumu, kurā tas izpildīs un atbilstošu notikumu, kurā tā pārtrauks izpildi, kā arī uztur citus konfigurācijas failus, kas apraksta tā izpildes laika uzvedību sistēmas direktorijā “/etc/”, tādējādi padarot sistēmu notikuma virzīts viens.

Ja tiek ģenerēti notikumi, tad kādam vajadzētu būt klāt, lai tos noķertu un izpildītu ?? Protams, kontrolieris ir mūsu galvenais process, kas pastāv kā vecākais visiem procesiem ar procesa ID 1 t.i., init . Šis ir process, kas sākas ar sistēmas palaišanu un nekad neapstājas. Šis process iet bojā tikai pēc tam, kad sistēma ir izslēgta, jo nav procesa, kurš būtu init vecāks.

Iepriekšējās Ubuntu versijās pirms versijas 6.10 bija iekļauts vecais stils sysvinit , kas tika izmantots skriptu darbināšanai mapē /etc/rcx.d ”direktoriju katrā sistēmas palaišanas un izslēgšanas reizē. Bet pēc tam iesācēja sistēma aizstāja veco stila sysvinit sistēmu, taču joprojām nodrošina tās savietojamību ar atpakaļejošu datumu.

Jaunākajās Ubuntu versijās ir šī jaunizveidotā sistēma, taču kopš tās attīstības kopš Ubuntu 6.10 tā ir vairākkārt pārskatīta, un pašreizējā versija 2014. gada 4. septembrī bija 1.13.2 . ir 2 init procesi, viens sistēmas procesiem un cits, kas pārvalda pašreizējo reģistrēto lietotāja sesiju un pastāv tikai līdz lietotāja pieteikšanās brīdim, saukts arī par x-session init .

Visa sistēma ir noteikta kā hierarhiska, kas sastāv no priekšteča un bērna attiecībām visā sistēmas līdz varas izslēgšanai.

Piemēram : neliela hierarhiska saistība starp abiem iniciēšanas procesiem ir: sistēmas init (1) -> displeja pārvaldnieks (kodola telpa) -> displeja pārvaldnieks (lietotāja telpa) -> lietotāja init (vai x- sesijas init).

Konfigurācijas faili procesiem, kurus pārvalda sistēmas init, atrodas mapē “/etc/init ”, un tiem, kurus pārvalda sesijas init, mapē “/usr/share/upstart ” (kā atbilstoši pašreizējām jaunajām versijām virs 1.12 ), un šie konfigurācijas faili ir atslēga daudziem atklātiem procesu noslēpumiem, kā aprakstīts šajā rakstā.

Ieiešana dziļāk hierarhijā

Ubuntu atpazīst divu veidu procesus:

  1. Īslaicīgas darba vietas (vai darbs ar nāvi).
  2. Ilgi dzīvoti darbi (vai darba vietas, kur palikt un strādāt).

Sistēmā izveidotā hierarhija ir atkarīga no atkarības attiecībām starp procesiem, kuras mēs varam saprast, apskatot to konfigurācijas failus. Sāksim vispirms ar vienkāršu hierarhisku attiecību starp procesiem, kas liek sistēmai sāknēties un izprast katra no tām nozīmi.

Init ir pirmais process, kas sākas ar sistēmas ieslēgšanu, un tiek klasificēts kā darbs un palieciet darbs, jo tas nekad netiek nogalināts un ir ieslēgts tikai laiks, kad tiek nogalināta init strāvas padeve, ti, init mirst tikai vienu reizi sesijā, un tas ir uz izslēgšanu. Ieslēdzot, init ģenerē pirmo notikumu sistēmā, t.i., startēšanas notikumu. Katram konfigurācijas failam sadaļā “/etc/init ” ir divas rindas, kas nosaka notikumu, kura dēļ process sākas un apstājas. Šīs līnijas ir iezīmētas zemāk esošajā attēlā:

Šis ir procesa failsafe-x konfigurācijas fails, un tie sākas un apstājas apstākļos, kas apraksta notikumu, kurā process sāksies. Ģenerējot starta notikumu pēc init procesa, paralēli tiek izpildīti tie procesi, kuru startēšana sākas ar nosacījumu, ka tas nosaka tikai hierarhiju, un visi procesi, kas tiek izpildīti startēšanas laikā, ir init bērni.

Procesi, kas sākas startēšanas laikā, ir uzskaitīti kā sadaļā, un tie visi ir darba un nāves darbi:

1 . resursdatora nosaukums - tas ir process, kas sistēmai vienkārši norāda tās resursdatora nosaukumu, kas definēts failā/etc/hostname.

2 . kmod - ielādē kodola moduļus, t.i., visus draiverus no faila/etc/modules.

3 . mountall - šis process ģenerē daudz notikumu, un tas galvenokārt ir atbildīgs par visu faila sistēmu, tostarp vietējo un attālo failu sistēmu, iekraušanu sāknēšanas laikā.

Arī fails /proc ir pievienots tieši šim procesam, un pēc visu montāžas darbu pēdējais tā radītais notikums ir failu sistēmu notikums, kas vēl vairāk liek hierarhijai turpināt.

4 . plymouth - Šis process tiek veikts, sākot startēšanu, un ir atbildīgs par šī melnā ekrāna parādīšanu, kas redzams sistēmas startēšanas laikā, parādot kaut ko līdzīgu zemāk:

5 . gatavs ar mutēm - norāda, ka plymouth ir uz augšu.

Šie ir galvenie procesi, citi, kas tiek izpildīti arī startēšanas laikā, ietver, piemēram, udev-fallback-graphics utt. Atgriežoties pie sāknēšanas hierarhijas, īsumā notikumi un procesi seko secīgi:

1 . init kopā ar starta notikuma ģenerēšanu.

2 . mountall montāžas failu sistēmas, plymouth (kopā ar mountall sākšanu), parādot uzplaiksnījuma ekrānu, un kmod ielādēšanas kodola moduļi.

3 . local-filesystem notikums, ko ģenerējis mountall, izraisot dbus darbību. (Dbus ir visas sistēmas ziņojumu kopne, kas izveido kontaktligzdu, ļaujot citiem procesiem sazināties savā starpā, nosūtot ziņojumus uz šo kontaktligzdu, un uztvērējs klausās šajā kontaktligzdā esošos ziņojumus un filtrē tam domātos ziņojumus).

4 . Vietējā failu sistēma kopā ar sākto dbus un statiskā tīkla izveidošanas notikumu, ko izraisa procesa tīkls, kas darbojas arī lokālās failu sistēmas notikumā, liek darboties tīkla pārvaldniekam.

5 . virtuālās failu sistēmas notikums, ko ģenerējis mountall, liek udev darboties. (udev ir Linux ierīču pārvaldnieks, kas pārvalda ierīču karsto pievienošanu un ir atbildīgs par failu izveidošanu direktorijā/dev un arī to pārvaldību.) udev izveido failus ram, rom uc direktorijā/dev, kurus mountall ir pabeidzis uzstādīt virtuāli -filesystems un ir izveidojis notikuma virtuālo failu sistēmu, kas apzīmē/dev direktorija uzstādīšanu.

6 . udev izraisa upstart-udev-bridge darbību, kas norāda, ka vietējais tīkls ir izveidots. Pēc tam, kad mountall ir pabeidzis pēdējās failu sistēmas montāžu un ir izveidojis failu sistēmas notikumu.

7 . failu sistēmas notikums kopā ar notikumu static-network-up izraisa rc-sysinit darba palaišanu. Šeit ir atgriezeniskā saderība starp vecāku sysvinit un upstart ...

9 . rc-sysinit palaiž komandu telinit, kas stāsta sistēmas darbības līmeni.

10 . Pēc darbības līmeņa iegūšanas init izpilda skriptus, kas sākas ar “S” vai “K” (sākot darbus, kuru nosaukuma sākumā ir “S”, un nogalinot tos, kuru vārda sākumā ir “K”)/etc/rcX.d (kur 'X' ir pašreizējais darbības līmenis).

Šis nelielais notikumu kopums liek sistēmai startēt katru reizi, kad to ieslēdzat. Un šis procesu izraisošais notikums ir vienīgais, kas ir atbildīgs par hierarhijas izveidi.

Tagad notikuma cēlonis ir vēl viens papildinājums iepriekš. Kurš process izraisa to, kurš notikums ir norādīts arī tajā pašā procesa konfigurācijas failā, kā parādīts zemāk šajās rindās:

Iepriekš ir procesa mountall konfigurācijas faila sadaļa. Tas parāda notikumus, kurus tas izstaro. Pasākuma nosaukums ir vārds, kas aizstāj vārdu notikums . Notikums var būt vai nu konfigurācijas failā definētais, kā norādīts iepriekš, vai arī procesa nosaukums kopā ar prefiksu ‘start’, ‘start’, ‘stop’ vai ‘stop’.

Tātad, šeit mēs definējam divus terminus:

  1. Notikumu ģenerators : tāds, kura konfigurācijas failā ir rinda ‘izstaro xxx’, kur xxx ir tā īpašumā vai ģenerētā notikuma nosaukums.
  2. Notikumu uztvērējs : tāds, kura sākuma vai apstāšanās nosacījums ir xxx vai kurš sākas vai apstājas notikumā, ģenerēja vienu no notikumu ģeneratoriem.

Tādējādi seko hierarhija, tāpēc atkarība starp procesiem:

Event generator (parent) -> Event catcher (child)

Līdz šim jums ir jāsaprot, kā vecāku un bērnu atkarības hierarhiju starp procesiem nosaka notikumu iedarbināšanas mehānisms, izmantojot vienkāršu sāknēšanas mehānismu.

Tagad šī hierarhija nekad nav savstarpēja attiecība, kurā vienam bērnam ir tikai viens vecāks. Šajā hierarhijā mums var būt viens vai vairāki vecāki vienam bērnam vai viens process ir vairāk nekā viena bērna vecāks. Kā tas tiek paveikts? Nu atbilde slēpjas pašā konfigurācijas failos.

Šīs līnijas ir ņemtas no tīkla tīkla veidošanas, un šeit sākums ar nosacījumu šķiet pārāk sarežģīts, sastāvot no daudziem notikumiem, proti, vietējās failu sistēmas , udevtrigger , konteiners , darbības līmenis , tīklošana .

Vietējās failu sistēmas emitē mountall, udevtrigger ir darba nosaukums, konteinera notikumu izstaro konteineru noteikšanas, darbības līmeņa notikums, ko emitē rc-sysinit, un tīklošana atkal ir darbs.

Tādējādi hierarhijā procesa tīkls ir mountall, udevtrigger un container -det pakļautais, jo tas nevar turpināt savu darbību (procesa darbība ir visas rindas, kas definētas skripta vai izpildes sadaļās procesa konfigurācijas failā). līdz iepriekšminētie procesi ģenerēs to notikumus.
Tāpat mums var būt viens process kā vecāks daudziem, ja viena procesa ģenerēto notikumu daudzi saglabā kešatmiņā.

Kā jau iepriekš definēts, mums var būt vai nu īsi (vai strādājiet un nomiršu darbavietas), vai ilgstoši (vai palieciet un strādājiet ) darbavietas, bet kā atšķirt viņus ??

Darbi, kuru konfigurācijas failos ir norādīti nosacījumi sākas un apstājas , un kuru vārdos ir uzdevums konfigurācijas fails ir darbs un mirst darbs, kas sākas ar ģenerēto notikumu, izpilda savu skriptu vai izpildes sadaļu (izpildot bloķē notikumus, kas tos izraisīja) un pēc tam mirst, atbrīvojot tos bloķētos notikumus .

Tie darbi, kuru konfigurācijas failā nav nosacījuma apstāties , ir ilgstoši vai palieciet un strādājiet , un viņi nekad nemirst. Tagad darba un uzturēšanās darbus var klasificēt tālāk kā:

  1. Tiem, kuriem nav atjaunota stāvokļa un kurus root lietotājs var nogalināt
  2. Tie, kuru konfigurācijas failā ir atjaunots stāvoklis, un pēc nokaušanas viņi tiek restartēti, ja vien viņu darbs nav pabeigts.

Secinājums

Tādējādi katrs LINUX process ir atkarīgs no dažiem, un no tā ir atkarīgi daži procesi, un šī saikne ir daudz no daudzām, un tā tiek norādīta ar iesācēja sistēmu kopā ar citām procesa detaļām.


Visas tiesības aizsargātas. © Linux-Console.net • 2019-2024