Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Vedere de ansamblu a unui sistem Linux

Vedere de ansamblu a unui sistem Linux

Table of Contents

Diversele componente ale unui SO

Componentele importante ale Kernel-ului

Servicii importante intr-un sistem UNIX

" God looked over everything he had made, and saw that it was very good. " (Genesis 1:31)

Acest capitol ofera o vedere de ansamblu a sistemului Linux. In primul rand sunt descrise serviciile majore oferite de SO. Apoi, programele care implementeaza aceste servicii sunt descrise cu o mare lipsa de detalii. Scopul acestui capitol este de a intelege sistemul ca un intreg, iar fiecare parte este descrisa in detaliu il alta parte.

Diversele componente ale unui SO

Un SO UNIX consta dintr-un kernel si cateva programe de sistem (system programs). Kernel-ul este inima SO. [1] El tine urma fisierelor pe disk, porneste programe si le ruleaza in paralel, atribuie memorie si alte resurse diferitelor procese, primeste pachete de pe si le trimite pe retea. Kernel-ul face putine de unul singur, dar furnizeaza suportul necesar pentru toate serviciile. Previne pe oricine sa acceseze hardul direct, obligand pe toti sa utilizeze interfata pe care o furnizeaza. Astfel, kernel-ul ii protejeaza pe utilizatori unul fata de celalalt. Interfata oferita de nucleu este accesata prin system calls; vezi a doua sectiune pentru informatii in plus.



Programele sistem folosesc interfata oferita de nucleu pentru a implementa diverse servicii care sunt cerute unui SO. Programele sistem, asemenea celorlalte programe, ruleaza `deasupra kernel-ului', in ceea ce se numeste user mode. Diferenta dintre programele de sistem si aplicatii este una de intentie: aplicatiile trebuie sa indeplineasca treburi folositoare (sau sunt jocuri), in timp ce programele sistem sunt necesare pentru functionarea sistemului. Un procesor de texte este o aplicatie; Comanda telnet este un prorgam de sistem. Diferenta dintre ele nu e tocmai clara, dar e importanta doar pentru o categorisire exhaustiva.

Un SO paote sa contina compilatoare si librariile corespunzatoare lor (GCC si libraria C in special pe Linux), desi nu toate limbajele de programare trebuie sa fie parte a SO. Documentatia si eventual jocurile, pot fi parti ale SO. Initial, SO fusese definit drept continutul casetelor sau discurilor de instalare; la Linux nu e atat de clar, deoarece este imprastiat pe multe servere FTP in lume.

Notes

[1]

De fapt, este de multe ori considerat gresit ca acest kernel este SO-ul propriu-zis, dar nu este asa. Un SO furnizeaza mult mai multe servicii decat un kernel simplu.

Componentele importante ale Kernel-ului

Kernel-ul Linux consta din cateva parti imoportante: managementul proceselor, al memoriei, driverele pentru dispozitive hardware, driverele pentru sistemele de fisiere, managementul retelei, si altete. Figure 2-1 arata cateva:

Figure 2-1. Cateva componente importante ale Linux kernel

Probabil ca cele mai importante componente ale kernel-ului, fara de care n-ar merge nimic, sunt gestiunea (managementul) memoriei si a proceselor. Gestiunea memoriei are grija de alocarea zonelor de memorie si a spatiului de swap pentru procese, parti ale nucleului si buffer cache. Gestiunea proceselor creaza procesele, implementeaza multitaskingul prin alternarea proceselor active, acordandu-le timp de procesor.

La nivelul inferior nucleul contine drivere pentru toate dispozitivele hardware suportate. Cum exista un foarte mare numar de dispozitive hardware, numarul driverelor e foarte mare. Exista multe dispozitive similare, care difera prin modul in care sunt controlate soft. Similaritatile fac posibile clase generale de drivere care suporta operatii similare; fiecare membru al clasei are aceeasi interfata catre restul nucleului, dar difera prin ceea ce trebuie sa faca efectiv. De exemplu, toate driverele de disk arata la fel pentru restul nucleului, pentru ca toate permit operatii precum `initializeaza drive-ul', 'citeste sectorul N', 'scrie sectorul N'.

Unele servicii soft furnizate de kernelul insusi au proprietati asemanatoare, deci pot fi abstractizate in clase. De exemplu, diferitele protocoale de retea au fost abstractizate intr-o interfata de programare, si anume The BSD Socket Library. Un alt exemplu este al sistemului de fisiere virtual (virtual filesystem) (VFS) care abstractizeaza operatiile asupra sistemului de fisiere, fara a tine cont de implementare. Fiecare tip de sistem de fisiere (filesistem) implementeaza fiecare operatie. Cand cineva incearca sa utilizeze un sistem de fisiere, cererea merge pe VFS, care trimite cererea catre driverul sistemului de fisiere potrivit.

Servicii importante intr-un sistem UNIX

Acest subcapitol descrie cateva din cele mai importante servicii UNIX, fara a intra in detalii. Ele sunt descrise in detaliu mai in alte capitole.



init

Singurul serviciu vital intr-un sistem UNIX este cel reprezentat de comanda init. init este pornita ca primul proces pe orice sistem UNIX, fiind ultimul lucru pe care il face un kernel cand booteaza. Cand init porneste, continua bootarea indeplinind diverse sarcini legate de startup: verificarea si montarea sistemelor de fisiere, pornirea daemonilor, etc.

Lista exacta de lucruri pe care le face init depinde de tipul de start dorit; sunt cateva dintre care se poate alege. init cunoaste de obicei conceptul de single user mode, in care nimeni nu se poate loga, iar root-ul are un shell la consola; modul clasic este multiuser mode. Anumite distributii generalizeaza conceptul in asa numitele runlevels; Modul single-user (monoutilizator) si cel multiuser (multiutilizator) sunt doar doua tipuri de runlevels (nivele de lucru), si pot fi si alte nivele, de exemplu unul care permite rularea X la consola.

In timpul utilizarii obisnuite, init se asigura ca getty merge (pentru ca userii sa se poata loga) si preia procesele orfane (ale caror parinti au fost distrusi); pentru ca in UNIX toate procesele trebuie sa fie intr-un singur arbore, asa incat orfanii trebuie adoptati.

Cand sistemul este inchis (shutdown), comanda init este cea care se ocupa cu distrugerea tuturor proceselor, de-montand (unmounting) toate sistemele de fisiere so oprind procesorul, alaturi de toate sarcinile pe care este configurat sa le faca.

Loginul de la terminale

Loginul de la terminale (pe linii seriale) sau de la consola (cand nu e rulat X) este facut de programul getty. init porneste o instanta a getty diferita pentru fiecare terminal la care este permis loginul. getty citeste numele utilizatorului si porneste programul login, care citeste parola. Daca numele de utilizator si parola sunt corecte, login starteaza shell-ul. Cand shell-ul se termina, de exemplu cand utilizatorul iese din sistem (log out), sau cand login se termina pentru ca numele utilizatorului sau parola nu s-au potrivit, comanda init porneste o noua instanta a getty. Kernel-ul nu stie ce inseamna login, deci tot ce tine de acest subiect este facut de un program sistem.

Syslog

Kernel-ul si multe programe sistem produc erori, warning-uri si alte mesaje. Este de multe ori important ca aceste mesaje sa poata fi vazute (mult) mai tarziu, asa incat ar fi de dorit sa fie scrise intr-un fisisier. Programul care face asta este syslog. Poate fi configurat sa sorteze mesajele catre diferite fisiere, in functie de cine le-a generat si de importanta. De exemplu, mesajele de la kernel sunt in general trimise catre un fisier separat, pentru ca sunt de multe ori importante, si citirea lor regulata poate duce la detectarea problemelor.

Executia periodica a comenzilor: cron si at

Atat userii cat si administratorii de sistem au nevoie de multe ori sa ruleze comenzi periodic. De exemplu, un administrator de sistem (sysadmin) poate rula o comanda pentru stergerea fisierelor si directoarelor temporare (/tmp si /var/tmp), deoarece nu toate programele functioneaza cum trebuie.

Serviciul cron este facut pentru aceasta. Fiecare user are un fisier crontab, unde el scrie comenzile pe care el vrea sa fie executate, si apoi momentele cand ele trebuie executate. Daemonul cron va porni fiecare program la momentul potrivit.

Serviciul at este similar cu cron, dar merge doar o data: comanda este executata la momentul indicat, dar nu e repetata.



Interfata grafica

UNIX si Linux nu au incorporata o interfata grafica in nucleu; in schimb, ele permit implementarea acesteia de catre programe de pe nivelul utilizator. Aceasta se refera atat la medii in mod text, cat si in mod grafic.

Aceasta abordare face sistemul mult mai flexibil, dar are dezavantajul ca permite folosirea unei interfete diferite pentru fiecare prorgam, facand sistemul mai greu de invatat.

Mediul grafic folosit in principal cu Linux este X Window System (pe scurt: X). X nu contine insa o interfata cu utilizatorul, ci doar un sitem de ferestre, adica unelte cu care o interfata grafica poate fi implementata. Cele mai populare trei tipuri de interfete cu utilizatorul de pe X sunt: Athena, Motif si Open Look. [1]

Networking (reteaua)

Punerea in retea este actul prin care se conecteaza doua sau mai multe computere, asa incat sa poata comunica intre ele. Metodele practice de conectare si comunicare sunt destul de complicate, dar rezultatul final este foarte folositor.

SO-urile UNIX au multe facilitati de retea. Cele mai simple servicii (sistemele de fisiere, tiparire, backup, etc) pot fi facute pe retea. Aceasta face poate face administrarea sistemelor mai usoara, din moment ce permite administrarea centralizata, beneficiind in continuare de avantajele data de microcomputing si prelucrare distribuita, ca de exemplu, preturi mai mici si toleranta la erori mai buna.

Oricum, acest manual doar arunca o privire fugara problemelor legate de retea; vezi Linux Network Administrator's Guide pentru mai multe informatii, inclusiv o descriere de simpla a cum opereaza retele.

Login-uri din retea

Loginurile din retea sunt un pic diferite de cele uzuale. Exista o linie seriala fizica separata pentru fiecare terminal, pe care este posibil sa faci login. Pentru fiecare persoana care se logeaza din retea exista o conexiune virtuala de retea, si pot fi un numar arbitrar de conexiuni virtuale. [2] Deci nu e poribila rularea unui getty separat pentru ficare conexiune virtuala posibila. De asemenea, sunt cateva cai diferite pentru a faca login prin retea, comenzile telnet si rlogin fiind cele mai importante pe retele TCP/IP.

Login-urile prin retea, in locul unei multimi de getty-uri, au un singur daemon pentru fiecare mod de login (telnet si rlogin au daemoni separati) care asculta toate incercarile de login care apar. Cand detecteaza una, porneste o noua instanta proprie, care se ocupa de acea incercare; instanta originala continua sa asculte pentru alte incercari. Noua instanta merge similar lui getty.

Sisteme de fisiere in retea (Network File Systems - NFS)

Unul din lucrurile cele mai importante care pot fi facute cu serviciile de retea este sharing-ul (utilizarea in comun) fisierelor printr-un network file system. Cel folosit in mod curent este Network File System, sau NFS, dezvlotat de Sun.

Cu un nfs, orice operatie asupra fisierelor facuta de un program pe un calculator este trimisa pe retea catre alt computer. Aceasta pacaleste programul, facandu-l sa creada ca toate fisierele de pe celalalt computer sunt de fapt pe cel pe care prorgamul ruleaza. Aceasta face accesul la informatie extrem de usor, pentru ca nu necesita modificari ale programelor.

Posta (Mail)

Posta electronica este cea mai importanta cale de comunicare prin computer. O scrisoare electronica este salvata intr-un fisier folosind un format special, si programe de mail sunt folosite pentru a trimite si pentru a citi aceste scrisori.

Fiecare utilizator are o incoming mailbox (cutie postala cu mesajele primite), drept un fisier intr-un format special, unde toata posta este pastrata. Cand cineva trimite mail, prorgamul de mail localizeaza cutia postala a destinatarului si atasaza scrisoarea. Daca cutia postala a destinatarului e pe alt computer, scrisoarea este trimisa acelui computer, care o depune in cutia postala potrivita.



Sistemul de mail consta din mai multe programe. Aducerea mailului catre cutiile postale (mailboxes) locale si de pe alte computere este facuta de un program (mail trasfer agent- MTA, de exemplu sendmail sau smail), in timp ce programele folosite de utilizatori pentru a citi si compune sunt multe si variate (mail user agent-MUA, de exemplu pine sau elm). Cutiile postale sunt in general pastrate in directorul /var/spool/mail

Tiparirea

Doar o persoana poate folosi o imprimanta la un moment dat, dar nu merita ca imprimatele sa nu poata fi folosite de toti userii. Imprimanta este deci comandata de soft care implementeaza o print queue: toate joburile de tiparire sunt puse intr-o coada (queue), si oricand imprimanta a terminat o sarcina, urmatoarea este trimisa automat. Aceasta elibereaza utilizatorii de problemele organizarii cozii de tiparire si a controlului asupra imprimantei. [3]

Softul pentru coada de imprimare de asemenea face spools (pregatirea) tipariturilor pe disc, de exemplu textul este tinut intr-un fisier cat timp jobul nu a fost terminat. Aceasta permite unei aplicatii sa imparta joburile de tiparire repede catre softul cozii de imprimare; aplicatia nu trebuie sa astepte pana jobul este tiparit pentru a continua. Acesta este un avantaj, din moment ce permite tiparirea unei versiuni, fara a astepta rezultatul tiparirii pentru ca cineva sa faca o versiune total revizuita.

Descrierea sistemului de fisiere

Sistemul de fisiere este impartit in multe parti: in general intr-un sistem de fisiere root cu /bin /lib /etc /dev, si inca cateva; unul numit /usr cu programele si datele care nu se schimba; unul /var cu datele care se modifica (ca de exemplu logurile)l si unul /home pentru fisierele personale ale tuturor. In functie de configuratia hardware si hotararile administratorului de sistem, impartirea poate fi diferita; poate fi pus chiar totul intr-un singur sistem de fisiere.

Chapter 3 descrie harta sistemului de fisiere in detaliu; asa numitul Linux Filesystem Standard (FSSTND) este ceva mai detaliat.

Notes

[1]

Aceasta tine deja de domeniul trecutului. Acum exista interfete mult mai utile, precum Gnome sau KDE. (nt)

[2]

Oricum, cel putin pot fi posibile multe astfel de conexiuni. Latimea de banda este inca o resursa foarte limitata, deci exista inca o limita superioara practica pentru numarul de login-uri concurente pe o conexiune de retea.

[3]

In schimb, ei formeaza o coada la imprimanta, asteptand pentru tiparituri, pentru ca nimeni nu pare capabil sa faca softul cozii de imprimare sa poata anunta exact cand tipariturile cuiva sunt gata. Aceasta este un mare ajutor pentru relatiile sociale la birou.

biologie

botanica






Upload!

Trimite cercetarea ta!
Trimite si tu un document!
NU trimiteti referate, proiecte sau alte forme de lucrari stiintifice, lucrari pentru examenele de evaluare pe parcursul anilor de studiu, precum si lucrari de finalizare a studiilor universitare de licenta, masterat si/sau de doctorat. Aceste documente nu vor fi publicate.