Cartea „Linux Internals. Componente interne Linux Componente interne Linux

Pagina curentă: 1 (cartea are 30 de pagini în total) [pasaj de lectură disponibil: 17 pagini]

Brian Ward

Interne Linux

Traducător S. Cernikov

Editor tehnic N. Grinchik

Editor literar O. Andrievici

Artiști A. Bartsevici, V. Shimkevici

Corectori T. Kurianovici, E. Pavlovici

Aspect A. Bartsevici

Brian Ward

Interne Linux. – Sankt Petersburg: Peter, 2015.

ISBN 978-5-496-01952-1

© SRL Editura „Piter”, 2015

Toate drepturile rezervate. Nicio parte a acestei cărți nu poate fi reprodusă sub nicio formă fără permisiunea scrisă a deținătorilor drepturilor de autor.

Prefaţă

Am scris această carte cu convingerea că, pentru a avea succes și eficient, trebuie să înțelegeți cum funcționează și funcționează software-ul dumneavoastră.

Sistemul de operare Linux este excelent pentru învățare, deoarece cea mai mare parte a configurației sistemului este stocată în fișiere simple, care sunt destul de ușor de citit. Trebuie doar să vă dați seama de ce este responsabilă fiecare parte și apoi să puneți totul împreună. Acesta este ceea ce este dedicată această carte.

Interesul pentru proiectarea sistemului de operare Linux poate fi cauzat de diverse motive. Profesioniștii în tehnologia informației și dezvoltatorii de software Linux vor găsi în această carte practic tot ce trebuie să știe pentru a profita la maximum de sistemul de operare. Cercetătorii și studenții, care adesea trebuie să adapteze sistemele pentru a se potrivi lor, vor găsi aici explicații practice despre motivul pentru care lucrurile funcționează așa cum o fac. Există, de asemenea, „animatori” - utilizatori cărora le place să petreacă timp pe computer pentru distracție, profit sau ambele.

Vrei să știi de ce unele lucruri funcționează și altele nu? Te întrebi ce se va întâmpla dacă schimbi ceva? Atunci ești unul dintre „animatori”.

Conditiile necesare

Nu trebuie să fii programator pentru a citi această carte. Veți avea nevoie doar de cunoștințe de bază de utilizator de computer: trebuie să navigați prin interfața grafică (când instalați și configurați interfața sistemului), precum și să înțelegeți fișierele și directoarele (foldere). De asemenea, ar trebui să fiți pregătit să căutați în sistem și online documentație suplimentară. După cum am menționat mai sus, cel mai important lucru este dorința și dorința dvs. de a vă explora computerul.

Când vine vorba de subiecte tehnice, transmiterea tuturor cunoștințelor necesare nu este o sarcină ușoară. Pe de o parte, cititorul se blochează în detalii inutile și are dificultăți în înțelegerea esenței, deoarece mintea umană pur și simplu nu poate procesa un număr mare de concepte noi în același timp. Pe de altă parte, lipsa detaliilor duce la faptul că cititorul primește doar o idee vagă a subiectului și nu este pregătit să asimileze materiale suplimentare.

În această carte am simplificat prezentarea și am structurat materialul. În majoritatea capitolelor, sunt prezentate mai întâi informațiile importante care sunt necesare pentru lucrări ulterioare. Pe măsură ce citiți capitolul, veți întâlni material suplimentar în el. Trebuie să înțelegeți imediat aceste detalii? În cele mai multe cazuri cred că nu. Dacă ochii tăi încep să strălucească asupra cantității de detalii legate de materialul pe care tocmai l-ai învățat, nu ezita să treci la următorul capitol sau să ia o pauză. Alte lucruri importante te așteaptă.

Abordare practică

Pentru a lucra veți avea nevoie de un computer cu sistemul de operare Linux. Poate preferați o instalare virtuală — am folosit VirtualBox pentru a testa majoritatea materialului din această carte. Trebuie să aveți acces de superutilizator (rădăcină), deși ar trebui să utilizați un cont de utilizator standard de cele mai multe ori. Veți lucra în principal la linia de comandă, fereastra terminalului sau sesiunea de la distanță. Dacă nu ați lucrat des în acest mediu, este în regulă, veți afla mai multe despre el în Capitolul 2.

De obicei, comenzile vor arăta astfel:

Introduceți textul care este evidențiat cu caractere aldine; Textul de răspuns pe care îl va produce aparatul este afișat cu font normal. Simbolul $ este un prompt pentru un utilizator cu un cont obișnuit. Dacă vedeți simbolul # la prompt, ar trebui să utilizați contul de superutilizator (mai multe despre asta în Capitolul 2).

Cum este organizată această carte?

Cartea începe cu o prezentare generală a sistemului Linux și apoi oferă o serie de exerciții practice cu instrumentele de care veți avea nevoie pentru a începe cu sistemul. În continuare, veți explora fiecare parte a sistemului în detaliu, de la managementul hardware până la configurarea rețelei, urmând ordinea normală în care sistemul pornește. În cele din urmă, veți dobândi o înțelegere a unora dintre detaliile unui sistem de lucru, veți învăța câteva abilități importante și vă veți familiariza cu instrumentele pe care le folosesc programatorii.

Majoritatea capitolelor timpurii (cu excepția capitolului 2) se concentrează în mare măsură pe nucleul Linux, dar pe măsură ce progresați prin carte, veți lucra și în spațiul dvs. de utilizator. Dacă nu înțelegeți despre ce vorbesc acum, nu vă faceți griji, explicațiile vor fi date în capitolul 1.

Materialul este prezentat ori de câte ori este posibil fără referire la nicio distribuție a sistemului. Ar fi plictisitor să descriu toate variantele sistemului, așa că am încercat să vorbesc despre cele două familii principale de distribuții: Debian (inclusiv Ubuntu) și RHEL/Fedora/CentOS. Accentul se pune pe versiunile server și stație de lucru. Sunt reprezentate și sisteme încorporate precum Android și OpenWRT, dar învățarea diferențelor dintre aceste platforme este lăsată în seama dumneavoastră.

Ce este nou la a doua ediție

Prima ediție a acestei cărți s-a ocupat în principal de partea de utilizator a lucrului pe un sistem Linux. Accentul principal a fost pe designul pieselor sale și cum să le facă să funcționeze. La acea vreme, multe elemente ale sistemului erau greu de instalat și configurat corect.

Datorită muncii asidue a dezvoltatorilor de software și a creatorilor de distribuție Linux, acest lucru s-a schimbat. Am revizuit materialul primei ediții pentru actualizări, acordând o atenție deosebită procesului de pornire al sistemului și modului în care acesta gestionează hardware-ul și eliminând materialul învechit (cum ar fi explicațiile detaliate ale procesului de imprimare) pentru a extinde discuția despre rolul nucleului Linux. în fiecare distribuţie. Probabil că interacționați cu nucleul mai des decât vă dați seama și am notat în mod special momentele în care se întâmplă acest lucru.

De asemenea, am reordonat prezentarea cărții pentru a se potrivi intereselor și nevoilor cititorilor de astăzi. Singurul lucru care nu s-a schimbat este lungimea cărții.

Am vrut să vă ofer informațiile de care aveți nevoie pentru a începe rapid. Vor lua ceva efort pentru a stăpâni, dar nu intenționez să vă fac un „halterofil” pentru a putea depăși această carte. Odată ce înțelegeți punctele importante subliniate aici, vă va fi ușor să găsiți detaliile și să le înțelegeți.

Am eliminat câteva detalii istorice care se aflau în prima ediție, în principal pentru a vă concentra atenția. Dacă sunteți interesat de sistemul Linux și relația acestuia cu istoria sistemului Unix, consultați cartea lui Peter H. Salus Daemonul, Gnu și Pinguinul(Reed Media Services, 2008) - Vorbește despre modul în care a evoluat software-ul pe care îl folosim.

O notă de terminologie

În prezent, există dezbateri cu privire la denumirile unor elemente ale sistemelor de operare. Chiar și numele sistemului Linux este implicat - ar trebui să fie numit Linux sau GNU/Linux (pentru a reflecta utilizarea unor elemente ale proiectului GNU)? În carte, am încercat să folosesc cele mai comune și mai puțin greoaie nume posibil.

Mulțumiri

Mulțumesc tuturor celor care m-au ajutat să lucrez la prima ediție. Aceștia sunt James Duncan, Douglas N. Arnold, Bill Fenner, Ken Hornstein, Scott Dickson, Dan Ehrlich, Felix Lee Felix Lee, Scott Schwartz, Gregory P. Smith, Dan Sully, Karol Jurado și Gina Steele. Pentru această ediție, îi mulțumesc în mod special lui Jordi Gutiérrez Hermoso pentru recenzia sa tehnică excelentă; sugestiile și clarificările sale sunt de neprețuit. Mulțumesc, de asemenea, lui Dominique Poulain și Donald Karon pentru răspunsul lor rapid în primele etape ale lucrării și lui Hsinju Hsieh, care a lucrat cu răbdare cu mine pentru a revizui această carte.

De asemenea, aș dori să mulțumesc editorului meu de dezvoltare, Bill Pollock, și editorului de producție, Laurel Chun. Serena Yang, Alison Law și toți cei de la No Starch Press au făcut, ca întotdeauna, o treabă minunată producând această nouă ediție a cărții.

De la editor

Vă rugăm să trimiteți comentariile, sugestiile și întrebările dvs. prin e-mail [email protected](editura Peter, ediție computer).

Ne-ar plăcea să auzim părerea ta!

Pe site-ul editurii http://www.piter.com veți găsi informații detaliate despre cărțile noastre.

1. Imaginea de ansamblu

La prima vedere, un sistem de operare modern, precum Linux, este destul de complex și constă dintr-un număr mare de părți care funcționează și interacționează simultan între ele. Astfel, un server web poate comunica cu un server de baze de date, care la rândul său utilizează o bibliotecă partajată care este folosită de multe alte programe. Cum funcționează totul?

Puteți înțelege cel mai eficient structura sistemului de operare folosind abstracții este un mod frumos de a spune că ignori majoritatea detaliilor. De exemplu, atunci când conduceți o mașină, de obicei nu trebuie să vă gândiți la detalii precum șuruburile de fixare care țin motorul în interiorul mașinii sau oamenii care asfaltează drumul și îl întrețin în stare bună. Dacă mergi într-o mașină ca pasager, tot ce trebuie să știi este pentru ce este proiectată mașina (te duce undeva) și câteva reguli de bază pentru utilizare (cum să manevrezi ușa și centura de siguranță).

Dacă conduci o mașină, trebuie să știi mai multe. Va trebui să vă familiarizați cu comenzile (cum ar fi volanul și pedala de accelerație) și ce să faceți în cazul unei defecțiuni.

Să presupunem că mașina se mișcă sacadat. Puteți descompune abstracția „o mașină care conduce pe drum” în trei părți: mașina, drumul și stilul dvs. de condus. Acest lucru va ajuta la determinarea cauzei. Dacă drumul este accidentat, nu trebuie să dai vina pe mașină sau pe tine. În schimb, puteți încerca să vă dați seama de ce s-a deteriorat drumul sau, dacă drumul este nou, de ce constructorii lui au făcut o treabă atât de groaznică.

Dezvoltatorii de software folosesc abstractizarea ca instrument atunci când creează sisteme de operare și aplicații. Există mulți termeni pentru zonele abstracte ale software-ului de calculator, inclusiv subsistem, modulȘi punga de plastic. Cu toate acestea, în acest capitol vom folosi termenul componentă deoarece este simplu. Când creează o componentă software, dezvoltatorilor de obicei nu le pasă prea mult de structura internă a celorlalte componente, dar trebuie să se gândească la ce componente pot folosi și cum le pot folosi.

Acest capitol oferă o prezentare generală a componentelor care alcătuiesc un sistem Linux. Deși fiecare dintre ele are o cantitate incredibilă de detalii tehnice legate de structura internă, nu le vom acorda atenție și ne vom concentra asupra a ceea ce fac aceste componente în raport cu sistemul în ansamblu.

1.1. Niveluri și straturi de abstractizare în sistemul de operare Linux

Folosirea abstracțiilor pentru a descompune sistemele computerizate în componente le face mai ușor de înțeles, dar nu este benefică dacă nu există o structură. Vom aranja componentele în straturi, sau niveluri. Strat, sau nivel, este o modalitate de clasificare (sau grupare) a componentelor în funcție de locația lor între utilizator și hardware. Browserele, jocurile etc. sunt situate pe stratul superior; pe stratul de jos vedem memoria computerului: zerouri și unu. Sistemul de operare ocupă cel mai mare număr de straturi între acestea două.

Există trei niveluri principale în sistemul de operare Linux. În fig. Figura 1.1 prezintă nivelurile, precum și unele dintre componentele din cadrul fiecăruia dintre ele. La baza sunt situate hardware. Acestea includ memoria și una sau mai multe unități centrale de procesare (CPU) care efectuează calcule și solicită să citească și să scrie în memorie. Dispozitivele precum hard disk-urile și interfețele de rețea sunt, de asemenea, considerate hardware.

Nivelul de deasupra este situat miez, care este nucleul sistemului de operare. Nucleul este un program aflat în memoria computerului și oferă instrucțiuni procesorului central. Nucleul gestionează hardware-ul și acționează în primul rând ca o interfață între hardware și orice program care rulează.

Procesele – care rulează programe gestionate de nucleu – formează în mod colectiv nivelul superior al sistemului, numit spatiu utilizator.

Notă

Un termen mai precis decât „proces” este „proces utilizator”, indiferent dacă utilizatorul interacționează direct cu acel proces. De exemplu, toate serverele web rulează ca procese utilizator.

Există o diferență importantă între modul în care sunt pornite procesele nucleului și cele ale utilizatorului: nucleul este pornit în modul kernel, și procesele utilizatorului - în modul utilizator. Codul care rulează în modul kernel are acces nelimitat la procesor și RAM. Acesta este un avantaj puternic, dar poate fi periculos, deoarece permite proceselor nucleului să perturbe cu ușurință întregul sistem. Zona care este accesibilă numai nucleului este numită spațiu central.

În modul utilizator, prin comparație, este disponibilă doar o cantitate limitată (de obicei mică) de memorie și sunt permise numai instrucțiunile sigure ale procesorului. Spațiu utilizator sunt zone de RAM care pot fi accesate de către procesele utilizatorului. Dacă un proces eșuează, consecințele vor fi limitate și nucleul va putea curăța eroarea. Aceasta înseamnă că, dacă, de exemplu, browserul se blochează, calculele științifice pe care le-ați rulat în fundal de câteva zile nu vor fi perturbate.

Orez. 1.1. Structura generală a sistemului de operare Linux

Teoretic, un proces de utilizator necontrolat nu este capabil să provoace daune semnificative sistemului. Depinde cu adevărat de ceea ce considerați un „dau substanțial” și de privilegiile speciale ale procesului, deoarece unele procese au voie să facă mai mult decât altele. De exemplu, un utilizator poate procesa complet datele de pe un hard disk? Dacă configurați corect permisiunile, se poate și va fi extrem de periculos pentru dvs. Există măsuri de protecție pentru a preveni acest lucru și, pur și simplu, majoritatea proceselor nu vor avea voie să provoace ravagii în acest mod.

1.2. Hardware: RAM

Dintre tot hardware-ul computerului RAM este poate cel mai important. În forma sa cea mai brută, RAM este doar un depozit uriaș de șiruri de unu și zerouri. Fiecare zero sau unu este numit pic. Aici se află nucleul care rulează și procesele - sunt doar colecții mari de biți. Toate datele de intrare și de ieșire de la dispozitivele periferice trec prin RAM și sub formă de seturi de biți. Procesorul funcționează pur și simplu pe memorie: citește instrucțiuni și date din ea, apoi scrie datele înapoi în memorie.

Veți întâlni adesea termenul "stat", care se va referi la memorie, procese, nucleu și alte părți ale unui sistem informatic. Strict vorbind, o stare este orice aranjament ordonat de biți. De exemplu, dacă există patru biți în memorie, atunci secvențele 0110, 0001 și 1011 reprezintă trei stări diferite.

Când considerați că un proces poate consta cu ușurință din milioane de biți de memorie, este adesea mai ușor să folosiți termeni abstracti atunci când vorbiți despre stări. În loc să descrii o stare folosind biți, vorbești despre ceea ce s-a întâmplat sau se întâmplă în acest moment. De exemplu, ați putea spune „acest proces așteaptă intrare” sau „procesul efectuează al doilea pas al rutinei sale de pornire”.

NOTĂ

Deoarece stările sunt descrise de obicei folosind concepte abstracte mai degrabă decât biți reali, termenul „imagine” este folosit pentru a se referi la orice aranjament fizic al biților.

1.3. Miez

Aproape tot ceea ce face kernel-ul implică RAM. Una dintre sarcinile nucleului este de a distribui memoria în mai multe subsecțiuni, după care nucleul trebuie să mențină în mod constant informații despre starea acestor subsecțiuni în ordine. Fiecare proces folosește o zonă de memorie alocată acestuia, iar nucleul trebuie să se asigure că procesele se lipesc de zonele lor.

Nucleul este responsabil pentru gestionarea sarcinilor în patru zone principale ale sistemului.

Procesele. Nucleul este responsabil pentru procesele care au acces la procesorul central.

Memorie. Nucleul trebuie să țină evidența stării întregii memorie: ce porțiune este în prezent alocată anumitor procese, ce poate fi alocată pentru partajarea între procese și ce porțiune este liberă.

Drivere de dispozitiv. Nucleul acționează ca o interfață între hardware (cum ar fi un hard disk) și procese. De obicei, managementul hardware este efectuat de kernel.

Apeluri de sistemȘia sustine. Procesele folosesc de obicei apeluri de sistem pentru a comunica cu nucleul.

Ne vom uita acum pe scurt la fiecare dintre aceste domenii.

NOTĂ

Pentru mai multe informații despre modul în care funcționează kernelul, consultați Concepte de sistem de operare, ediția a 9-a, de Abraham Silberschatz, Peter B. Galvin și Greg Gann (Wiley, 2012) și Sisteme de operare moderne, ediția a patra de Andrew S. Tanenbaum și Herbert. Bos (Sala Prentice, 2014).

1.3.1. Administrarea procesului

Administrarea procesului descrie pornirea, oprirea, reluarea și terminarea proceselor. Conceptele din spatele pornirii și opririi proceselor sunt destul de simple. Este puțin mai dificil să descrii modul în care un proces folosește procesorul în timpul funcționării normale.

În orice sistem de operare modern, mai multe procese funcționează „simultan”. De exemplu, puteți lansa un browser pe computer și puteți deschide o foaie de calcul în același timp. Cu toate acestea, în realitate, lucrurile nu sunt așa cum par: procesele care sunt responsabile pentru aceste aplicații de obicei nu pornesc Vprecizie la un moment dat.

Luați în considerare un sistem cu un procesor central. Mai multe procese îl pot folosi, dar în orice moment, un singur proces îl poate folosi efectiv. În practică, fiecare proces folosește CPU pentru o mică fracțiune de secundă și apoi se întrerupe; după aceea, un alt proces folosește procesorul pentru o mică fracțiune de secundă; apoi vine rândul celui de-al treilea proces etc. Acțiunea în care un proces transferă controlul procesorului către alt proces se numește schimbarea contextului.

Fiecare perioadă de timp cuantumul de timp– oferă procesului suficient timp pentru a efectua un calcul semnificativ (și, desigur, procesul își finalizează adesea sarcina curentă într-un cuantum). Deoarece cuantele de timp sunt atât de mici, o persoană nu le percepe și i se pare că mai multe procese rulează simultan în sistem (această posibilitate este cunoscută ca "multifunctional").

Nucleul este responsabil pentru schimbarea contextului. Pentru a înțelege cum funcționează, imaginați-vă o situație în care un proces rulează în modul utilizator, dar intervalul său de timp se epuizează. Asta se intampla.

1. Procesorul (hardware real) întrerupe procesul curent folosind un temporizator intern, trece în modul kernel și îi revine controlul.

2. Nucleul înregistrează starea curentă a procesorului și a memoriei, care vor fi necesare pentru a relua procesul tocmai întrerupt.

3. Nucleul efectuează orice sarcini care au apărut în intervalul de timp anterior (de exemplu, colectarea datelor sau operațiuni I/O).

4. Nucleul este acum gata să înceapă un alt proces. Acesta analizează lista de procese care sunt gata de rulare și selectează unul dintre ele.

5. Nucleul pregătește memoria pentru noul proces și apoi pregătește procesorul.

6. Nucleul îi spune procesorului cât va dura intervalul de timp pentru noul proces.

7. Nucleul pune procesorul în modul utilizator și transferă controlul către procesor.

Schimbarea contextului răspunde la o întrebare importantă: Când rulează nucleul? Răspunsul este: nucleul funcționează între intervale de timp alocate pentru procese atunci când are loc o schimbare de context.

Pe un sistem cu procesoare multiple, lucrurile sunt puțin mai complicate, deoarece nucleul nu trebuie să înceteze să controleze procesorul curent pentru a permite unui proces să ruleze pe un alt procesor. Și totuși, pentru a profita la maximum de toate procesoarele disponibile, nucleul încă face acest lucru (și poate folosi anumite trucuri pentru a câștiga timp suplimentar de procesor).

1.3.2. Gestionarea memoriei

Deoarece nucleul trebuie să gestioneze memoria în timpul comutărilor de context, este echipat cu această funcție complexă. Funcționarea nucleului este complexă deoarece trebuie luate în considerare următoarele condiții:

Nucleul trebuie să aibă propria zonă de memorie care nu poate fi accesată de către procesele utilizatorului;

Fiecare proces utilizator are nevoie de propria sa zonă de memorie;

Orice proces utilizator nu trebuie să aibă acces la memoria alocată unui alt proces;

Procesele utilizatorului pot partaja memorie;

O parte din memorie pentru procesele utilizatorului poate fi doar pentru citire;

Sistemul poate folosi mai multă memorie decât este disponibilă utilizând spațiul pe disc ca dispozitiv auxiliar.

Nucleul are un ajutor. Procesoarele moderne conțin modul de gestionare a memoriei(MMU), care activează un circuit de acces la memorie numit "memorie virtuala". Când se utilizează memoria virtuală, un proces nu accesează memoria direct din locația sa fizică din hardware. În schimb, nucleul configurează fiecare proces ca și cum ar avea control asupra întregii mașini. Când un proces accesează memorie, MMU interceptează cererea și folosește o hartă de adrese de memorie pentru a traduce locația de memorie învățată din proces într-o locație de memorie fizică de pe computer. Cu toate acestea, nucleul trebuie să inițializeze, să mențină continuu și să modifice această hartă de adrese. De exemplu, în timpul unei schimbări de context, nucleul trebuie să schimbe harta după procesul de plecare și să o pregătească pentru cel care urmează.

Notă

Implementarea unei hărți de adrese de memorie se numește tabel de pagini.

Veți învăța cum să monitorizați performanța memoriei în Capitolul 8.

1.3.3. Drivere de dispozitiv și management

Sarcina nucleului în ceea ce privește dispozitivele este destul de simplă. De obicei, dispozitivele sunt accesibile numai în modul kernel, deoarece accesul incorect (de exemplu, atunci când un proces de utilizator încearcă să oprească alimentarea) poate cauza blocarea computerului. O altă problemă este că dispozitivele diferite au rareori aceeași interfață software, chiar dacă îndeplinesc aceeași sarcină: de exemplu, două plăci de rețea diferite. Din acest motiv, driverele de dispozitiv sunt în mod tradițional parte din kernel și se străduiesc să ofere o interfață unificată proceselor utilizatorului pentru a ușura munca dezvoltatorilor de software.

1.3.4. Apeluri de sistem și asistență

Există și alte tipuri de funcții ale nucleului disponibile pentru procesele utilizatorului. De exemplu, apeluri de sistem efectuează sarcini speciale pe care un proces utilizator nu le poate îndeplini bine sau deloc pe cont propriu. Astfel, toate acțiunile legate de deschiderea, citirea și scrierea fișierelor implică apeluri de sistem.

Două apeluri de sistem, fork() și exec(), sunt importante pentru înțelegerea modului în care sunt pornite procesele:

Furculiţă(). Când un proces apelează fork(), nucleul creează o copie aproape identică a procesului;

Exec(). Când un proces apelează exec( program), nucleul rulează programul program, care înlocuiește procesul actual.

Cu excepția procesului init (Capitolul 6), Toate procesele utilizatorului pe un sistem Linux pornesc ca rezultat al unui apel fork() și, în majoritatea cazurilor, se face un apel exec() pentru a porni un nou program, mai degrabă decât o copie a unui proces existent. Un exemplu simplu este orice program pe care îl rulați din linia de comandă, cum ar fi comanda ls care afișează conținutul unui director. Când introduceți comanda ls într-o fereastră de terminal, shell-ul care rulează în interiorul ferestrei terminal apelează fork() pentru a crea o copie a shell-ului, iar apoi acea copie nouă a shell-ului apelează exec(ls) pentru a rula comanda ls. În fig. Figura 1.2 prezintă secvența proceselor și a apelurilor de sistem pentru a rula programe precum ls.

Orez. 1.2. Pornirea unui nou proces

NOTĂ

Apelurile de sistem sunt de obicei notate folosind paranteze. În exemplul prezentat în fig. 1.2, un proces care solicită nucleului să creeze un alt proces trebuie să emită apelul de sistem fork(). Această desemnare provine din modul în care sunt scrise apelurile în limbajul de programare C. Nu trebuie să cunoașteți C pentru a înțelege această carte. Nu uitați că un apel de sistem este o interacțiune între un proces și nucleu. Mai mult, această carte simplifică unele grupuri de apeluri de sistem. De exemplu, apelul exec() denotă o întreagă familie de apeluri de sistem care efectuează o sarcină similară, dar diferă în implementarea software-ului.

Nucleul acceptă, de asemenea, procese utilizator ale căror funcții diferă de apelurile de sistem tradiționale. Cele mai cunoscute dintre ele sunt pseudodispozitive. Din punctul de vedere al proceselor utilizatorului, pseudo-dispozitivele arată ca dispozitive obișnuite, dar sunt implementate în întregime în software. De fapt, nu ar trebui să fie în mod oficial în nucleu, dar sunt încă prezenți în acesta din motive practice. De exemplu, un dispozitiv care generează numere aleatoare (/dev/random) ar fi dificil de implementat cu gradul de securitate necesar folosind un proces utilizator.

Notă

Din punct de vedere tehnic, un proces de utilizator care accesează un pseudo-dispozitiv este încă forțat să efectueze un apel de sistem pentru a deschide acel dispozitiv. Astfel, procesele nu pot evita complet apelurile de sistem.

1.4. Spațiu utilizator

Zona de RAM pe care nucleul o alocă pentru procesele utilizatorului este numită spatiu utilizator. Deoarece un proces este doar o stare (sau o imagine) în memorie, spațiul utilizatorului accesează și memoria întregii colecții de procese care rulează. De asemenea, puteți întâlni termenul "pamânt utilizator", care este folosit în locul spațiului utilizator.

Cea mai mare parte a acțiunii reale a unui sistem Linux are loc în spațiul utilizatorului. Deși toate procesele sunt aceleași din punctul de vedere al nucleului, ele îndeplinesc sarcini diferite pentru utilizatori. Componentele sistemului care reprezintă procesele utilizatorului sunt organizate într-o structură elementară - un strat (sau un strat) de servicii. În fig. Figura 1.3 prezintă un set aproximativ de componente interconectate și care interacționează cu sistemul Linux. Serviciile simple sunt situate la nivelul de jos (cel mai apropiat de nucleu), programele utilitare sunt la mijloc, iar aplicațiile cu care lucrează utilizatorul sunt situate în partea de sus. Figura 1.3 este o diagramă extrem de simplificată, deoarece sunt prezentate doar șase componente, dar puteți observa că componentele de sus sunt cele mai apropiate de utilizator (interfața de utilizator și browser); componentele de nivel mediu au un server de e-mail care utilizează un browser; Există mai multe componente mici prezente în partea de jos.

Nivelul inferior constă de obicei din componente mici care îndeplinesc sarcini simple. Nivelul mediu conține componente mai mari, cum ar fi serviciul de e-mail, serverul de imprimare și baza de date. Componentele de nivel superior îndeplinesc sarcini complexe care sunt adesea controlate direct de utilizator. Dacă o componentă dorește să utilizeze alta, atunci a doua componentă este fie la același nivel de serviciu, fie mai scăzut.

Figura 1.3 arată doar aproximativ aspectul spațiului utilizatorului. În realitate, nu există reguli în spațiul utilizatorului. De exemplu, majoritatea aplicațiilor și serviciilor înregistrează mesajele de diagnosticare apelate reviste. Majoritatea programelor folosesc serviciul syslog standard pentru a înregistra mesajele, dar unele aleg să facă singuri înregistrarea.

Orez. 1.3. Tipuri de procese și interacțiuni

În plus, unele componente ale spațiului utilizatorului pot fi dificil de clasificat. Componentele serverului, cum ar fi un server web sau un server de baze de date, pot fi considerate aplicații de nivel foarte înalt deoarece efectuează sarcini destul de complexe. Astfel de aplicații pot fi plasate în partea de sus a figurii. 1.3. În același timp, aplicațiile utilizator pot depinde de aplicațiile server pentru a îndeplini sarcini pe care nu le pot gestiona singure. În acest caz, componentele serverului ar trebui să fie plasate la nivelul mediu.

1.5. Utilizatori

Nucleul Linux acceptă conceptul tradițional de utilizator de sistem Unix. Utilizator este o entitate care poate rula procese și deține fișiere. Asociat cu utilizatorul Nume de utilizator. De exemplu, sistemul poate avea un utilizator numit billyjoe. Cu toate acestea, nucleul nu funcționează cu nume de utilizator, ci identifică utilizatorul folosind un nume numeric simplu ID-ul de utilizator(Capitolul 7 vorbește despre modul în care ID-urile sunt asociate cu numele de utilizator).

Recrutăm un grup de lansare pentru trackerul nostru .
Plata este negociabila.
Aplicațiile sunt acceptate prin poștă [email protected], posibil prin feedback
Vă rugăm să ne spuneți pe scurt despre dvs., cât timp puteți dedica site-ului nostru și câștigurile așteptate.

Bandicam vă permite să înregistrați o anumită zonă pe ecranul computerului sau într-un program care utilizează tehnologiile grafice DirectX/OpenGL. Bandicam vă ajută să înregistrați videoclipuri foarte comprimate....


Descriere: Wondershare Filmora este un editor video convenabil care conține toate instrumentele necesare pentru editarea video. Puteți crea filme de înaltă calitate cu titluri, ...


EmEditor Professional- o versiune profesională a unui editor de text puternic pentru programatori, dezvoltatori web și utilizatori obișnuiți, cu evidențiere de sintaxă și suport Unicode. Editorul a...

Driver Reviver este o aplicație care vă va scana sistemul pentru drivere învechite și vă va oferi actualizarea acestora. Scanarea se efectuează pe una dintre cele mai mari baze de date de drivere, care garantează...


Skype- un program gratuit pentru comunicare text, voce și video cu prietenii din întreaga lume. Rețeaua Skype folosește tehnologia P2P pentru a se conecta cu alți utilizatori și este de înaltă calitate....


Bandizip este un program rapid și de încredere care acceptă lucrul cu formatele WinZip, 7-Zip și WinRAR și alte arhive similare. Folosește un algoritm foarte rapid pentru compresie și decompresie....

Operă este un nou browser Chromium de la Opera Software. Opera și-a abandonat browserul clasic și acum dezvoltă un nou browser bazat pe proiectul Google Chromium....

Descriere: Un program pentru lucrul cu documente PDF care oferă o colecție de instrumente și utilitare pentru modificarea și optimizarea fișierelor PDF și a conținutului acestora. Mulțumită...


Snappy Driver Installer (SDI) este un program portabil pentru instalarea și actualizarea driverelor care nu necesită o conexiune la Internet. Este o reelaborare a programului SDIO original de la Glenn Delahoy....

Mirillis Action! - programul vă permite să înregistrați imagini de pe ecran în timp real în fișiere video de diferite formate. Puteți înregistra video player web, joc, puteți introduce comentarii audio live...

Interne Linux Brian Ward

(Fără evaluări încă)

Titlu: Linux Internals

Despre cartea Linux Internals de Brian Ward

Sistemul de operare Linux este o alternativă demnă la Windows, dintre care unele versiuni nu sunt foarte convenabile și sunt prea „grele” pentru resursele computerului. Brian Ward a scris o carte uimitoare de autoajutorare, potrivită pentru oricine dorește să se familiarizeze cu acest sistem și cu capabilitățile sale bogate aproape de la zero. Citirea cărții „Linux Internals” este recomandată celor care doresc să se aprofundeze în toate mecanismele nucleului Linux, să înțeleagă structura și filosofia sa internă. Această lucrare nu este potrivită pentru un studiu superficial al principiilor de funcționare și transferul schemelor de șablon de la un sistem de operare la altul.

Această carte va fi de interes pentru o gamă largă de cititori - atât informaticieni, cât și începători. Nu trebuie să fii un profesionist în programare pentru a citi această lucrare, ci doar abilități de bază de calculator. Dacă înțelegeți ce este o interfață grafică a unui sistem de operare și știți cum să lucrați cu foldere și directoare, cartea vă va fi de înțeles.

Lucrarea pe computer „Linux Internals” este foarte detaliată și este împărțită în 17 capitole. În primele patru secțiuni, autorul vorbește despre conceptele generale ale acestui sistem și despre principiul funcționării acestuia: structura nucleului și a shell-ului, comenzile de bază și structura directoarelor și funcționalitatea sistemelor de fișiere și disc. Urmează mai multe informații despre începerea utilizării acestui sistem: cum să încărcați nucleul Linux și să porniți spațiul utilizator. Capitolele următoare aprofundează în fluxurile de lucru Linux și în utilizarea resurselor. În plus, Brian Ward a abordat problemele de programare a scripturilor shell și de lucru cu limbajul C. Din materialul general, autorul aprofundează treptat în detalii care sunt de interes pentru dezvoltatorii de software.

Cartea nu este doar o prezentare generală a sistemului Linux, ci conține și sarcini practice care vor permite cititorului să-și creeze propriul spațiu de utilizator și să dobândească abilități în lucrul în acest shell.

Brian Ward a prezentat materialul într-un limbaj accesibil cu multe exemple și explicații. Cartea este bine structurată și poate fi folosită ca o carte de referință. Autorul confirmă că shell-ul Linux este convenabil și funcțional și dezvăluie posibilitățile cum îl puteți ajusta la nevoile dvs. Pentru cei care sunt interesați de structura anumitor programe, această carte va fi o descoperire excelentă, deoarece dezvăluie mecanismele proceselor computerizate și demonstrează relațiile cauză-efect dintre ele.

Pe site-ul nostru despre cărți, puteți descărca site-ul gratuit fără înregistrare sau puteți citi online cartea „Linux Internals” de Brian Ward în formate epub, fb2, txt, rtf, pdf pentru iPad, iPhone, Android și Kindle. Cartea vă va oferi o mulțime de momente plăcute și o adevărată plăcere de la lectură. Puteți cumpăra versiunea completă de la partenerul nostru. De asemenea, aici veți găsi cele mai noi știri din lumea literară, aflați biografia autorilor tăi preferați. Pentru scriitorii începători, există o secțiune separată cu sfaturi și trucuri utile, articole interesante, datorită cărora tu însuți poți să-ți încerci meșteșugurile literare.

Descarcă gratuit cartea „Linux Internals” de Brian Ward

În format fb2: Descarca
În format rtf: Descarca
În format epub: Descarca
În format TXT:

Am publicat o carte a lui Brian Ward, care a devenit deja un bestseller în Occident. Descrie toate complexitățile lucrului cu sistemul de operare Linux, administrarea sistemului și mecanismele profunde care oferă funcționalitate Linux de nivel scăzut. Pe paginile acestei publicații veți dobândi cunoștințe de bază despre lucrul cu nucleul Linux și principiile funcționării corecte a rețelelor de calculatoare. Cartea abordează, de asemenea, problemele legate de programarea scripturilor shell și manipularea limbajului C, acoperă subiecte de securitate a informațiilor, virtualizare și alte lucruri de neînlocuit.

Cine ar trebui să citească cartea

Interesul pentru proiectarea sistemului de operare Linux poate fi cauzat de diverse motive. Profesioniștii în tehnologia informației și dezvoltatorii de software Linux vor găsi în această carte practic tot ce trebuie să știe pentru a profita la maximum de sistemul de operare. Cercetătorii și studenții, care adesea trebuie să adapteze sistemele pentru a se potrivi lor, vor găsi aici explicații practice despre motivul pentru care lucrurile funcționează așa cum o fac. Există, de asemenea, „animatori” - utilizatori cărora le place să petreacă timp pe computer pentru distracție, profit sau ambele. Vrei să știi de ce unele lucruri funcționează și altele nu? Te întrebi ce se va întâmpla dacă schimbi ceva? Atunci ești unul dintre „animatori”.

Conditiile necesare

Nu trebuie să fii programator pentru a citi această carte. Veți avea nevoie doar de cunoștințe de bază de utilizator de computer: trebuie să navigați prin interfața grafică (când instalați și configurați interfața sistemului), precum și să înțelegeți fișierele și directoarele (foldere). De asemenea, ar trebui să fiți pregătit să căutați în sistem și online documentație suplimentară. După cum am menționat mai sus, cel mai important lucru este dorința și dorința dvs. de a vă explora computerul.

Cum să citești o carte

Când vine vorba de subiecte tehnice, transmiterea tuturor cunoștințelor necesare nu este o sarcină ușoară. Pe de o parte, cititorul se blochează în detalii inutile și are dificultăți în înțelegerea esenței, deoarece mintea umană pur și simplu nu poate procesa un număr mare de concepte noi în același timp. Pe de altă parte, lipsa detaliilor duce la faptul că cititorul primește doar o idee vagă a subiectului și nu este pregătit să asimileze materiale suplimentare.

În această carte, autorul a simplificat prezentarea și a structurat materialul. În majoritatea capitolelor, sunt prezentate mai întâi informațiile importante care sunt necesare pentru lucrări ulterioare. Pe măsură ce citiți capitolul, veți întâlni material suplimentar în el. Trebuie să înțelegeți imediat aceste detalii? În cele mai multe cazuri, autorul crede că nu. Dacă ochii tăi încep să strălucească asupra cantității de detalii legate de materialul pe care tocmai l-ai învățat, nu ezita să treci la următorul capitol sau să ia o pauză. Alte lucruri importante te așteaptă.

Cum este organizată această carte?

Cartea începe cu o prezentare generală a sistemului Linux și apoi oferă o serie de exerciții practice cu instrumentele de care veți avea nevoie pentru a începe cu sistemul. În continuare, veți explora fiecare parte a sistemului în detaliu, de la managementul hardware până la configurarea rețelei, urmând ordinea normală în care sistemul pornește. În cele din urmă, veți dobândi o înțelegere a unora dintre detaliile unui sistem de lucru, veți învăța câteva abilități importante și vă veți familiariza cu instrumentele pe care le folosesc programatorii.

Majoritatea capitolelor timpurii (cu excepția capitolului 2) se concentrează în mare măsură pe nucleul Linux, dar pe măsură ce progresați prin carte, veți lucra și în spațiul dvs. de utilizator. Dacă nu înțelegeți despre ce vorbește autorul acum, nu vă faceți griji, explicațiile vor fi date în Capitolul 1. Materialul este prezentat, ori de câte ori este posibil, fără referire la vreo distribuție de sistem. Ar fi plictisitor să descriem toate variantele sistemului, așa că Ward a încercat să vorbească despre cele două familii principale de distribuții: Debian (inclusiv Ubuntu) și RHEL/Fedora/CentOS. Accentul se pune pe versiunile server și stație de lucru. Sunt reprezentate și sisteme încorporate precum Android și OpenWRT, dar învățarea diferențelor dintre aceste platforme este lăsată în seama dumneavoastră.

Ce este nou la a doua ediție

Prima ediție a acestei cărți s-a ocupat în principal de partea de utilizator a lucrului pe un sistem Linux. Accentul principal a fost pe designul pieselor sale și cum să le facă să funcționeze. La acea vreme, multe elemente ale sistemului erau greu de instalat și configurat corect.

Datorită muncii asidue a dezvoltatorilor de software și a creatorilor de distribuție Linux, acest lucru s-a schimbat. Ward a revizuit materialul primei ediții pentru actualizări, acordând o atenție deosebită procesului de pornire al sistemului și modului în care acesta gestionează hardware-ul și eliminând materialul învechit (cum ar fi o explicație detaliată a procesului de imprimare) pentru a extinde discuția despre rolul nucleului Linux în fiecare distributie. Probabil că interacționați cu nucleul mult mai des decât vă dați seama, iar autorul a notat în mod special momentele în care se întâmplă acest lucru.

De asemenea, Ward a rearanjat prezentarea cărții pentru a se potrivi intereselor și nevoilor cititorilor moderni. Singurul lucru care nu s-a schimbat este lungimea cărții.

Autorul a dorit să vă ofere informațiile de care aveți nevoie pentru a începe rapid. Vor fi nevoie de ceva efort pentru a stăpâni, dar Ward nu intenționează să te facă un „halterofil” pentru a putea depăși această carte. Odată ce înțelegeți punctele importante subliniate aici, vă va fi ușor să găsiți detaliile și să le înțelegeți.

Autorul a eliminat câteva detalii istorice care se aflau în prima ediție, în principal pentru a vă concentra atenția. Dacă sunteți interesat de sistemul Linux și relația acestuia cu istoria sistemului Unix, vedeți cartea lui Peter H. Salus The Daemon, the Gnu, and the Penguin (Reed Media Services, 2008) - spune cum a folosit software-ul american.

Mai multe detalii despre carte găsiți la

Cartea lui Brian Ward, care a devenit deja un bestseller în Occident. Descrie toate complexitățile lucrului cu sistemul de operare Linux, administrarea sistemului și mecanismele profunde care oferă funcționalitate Linux de nivel scăzut. Pe paginile manualului, veți dobândi cunoștințe de bază despre lucrul cu nucleul Linux și principiile funcționării corecte a rețelelor de calculatoare, nu numai bazate pe soluții Open-source. Cartea abordează, de asemenea, problemele de programare a scripturilor și manipularea limbajului C, acoperă subiecte de securitate a informațiilor, virtualizare și alte lucruri de neînlocuit.
Cine ar trebui să citească cartea:
Interesul pentru proiectarea sistemului de operare Linux poate fi cauzat de diverse motive. Profesioniștii în tehnologia informației și dezvoltatorii de software Linux vor găsi în această carte practic tot ce trebuie să știe pentru a profita la maximum de sistemul de operare. Cercetătorii și studenții, care adesea trebuie să adapteze sistemele pentru a se potrivi lor, vor găsi aici explicații practice despre motivul pentru care lucrurile funcționează așa cum o fac. Există, de asemenea, „animatori” - utilizatori cărora le place să petreacă timp pe computer pentru distracție, profit sau ambele. Vrei să știi de ce unele lucruri funcționează și altele nu? Te întrebi ce se va întâmpla dacă schimbi ceva? Atunci ești unul dintre „animatori”.
Conditiile necesare:
Nu trebuie să fii programator pentru a citi această carte. Sunt necesare doar abilități de bază de utilizator de PC: trebuie să navigați prin interfața grafică (când instalați și configurați interfața sistemului), precum și să înțelegeți fișierele și directoarele (foldere). De asemenea, ar trebui să fiți pregătit să căutați pe Internet documente suplimentare. Principalul lucru este dorința și dorința dvs. de a vă explora computerul.

Titlu: Linux Internals
Autor: Brian Ward
Editura: Peter
Anul: 2016
Format: PDF, FB2, EPUB
Limba rusă
Pagini: 384
Dimensiune: 12,9 MB

Linux Internals / Brian Ward / 2016. Descărcați gratuit fără înregistrare

24-07-2016T17:16:55+00:00 adminAdministrare Ghiduri de literatură Linux, Administrare, Securitate, Brian Ward, Cărți, Literatură, Manuale, Administrare sistem, scripturi, Referințe de comandă

Cartea lui Brian Ward, care a devenit deja un bestseller în Occident. Descrie toate complexitățile lucrului cu sistemul de operare Linux, administrarea sistemului și mecanismele profunde care oferă funcționalitate Linux de nivel scăzut. Pe paginile manualului, veți dobândi cunoștințe de bază despre lucrul cu nucleul Linux și principiile funcționării corecte a rețelelor de calculatoare, nu numai bazate pe soluții Open-source. ÎN...

[email protected] Tutorial Administrator LINUX