Lectia 01 - Despre UNIX
Scris de Agkelos
1. Ce e UNIX ?
Istoria UNIX incepe prin 1960 si o puteti gasi la orice colt de strada. E o lectura interesanta dar pentru incepatorii care vor sa puna mana pe tastatura e un subiect plictisitor asa ca ma rezum la a spune ca UNIX e un sistem vechi creat la AT&T si care a avut ca scop crearea unui sistem de operare multi-user si multi-tasking.
De asemenea trebuie stiut ca exista sisteme UNIX - cele care sunt recunoscute ca fiind UNIX de open grou - si sisteme UNIX-Like sau UN*X care sunt sisteme de operare create de diferite persoane sau firme si care seamana foarte multe cu sistemele UNIX dar nu sunt recunoscute de open group ca fiind UNIX, de multe ori din cauza taxei de examinare foarte piperate. Exemple de sisteme UN*X sau UNIX-Like sunt cele din familia BSD (OpenBSD, NetBSD, FreeBSD) sau zecile de distributii Linux care au ajuns sa fie folosite peste tot.
2. Din ce e format un sistem UNIX ?
Sistemele UNIX sunt de obicei formate din doua parti si anume: kernel (nucleul sistemului de operare) si shell (interfata de comunicare intre utilizator si kernel).
2.1 Kernelul
Kernelul sistemului de operare e partea care comunica direct cu procesorul si cu perifericele atasate sistemului de calcul. Kernelul raspunde la diferite apeluri numite “system calls” care sunt folosite pentru a trimite date procesorului, pentru a introduce/scoate ceva din memorie, pentru a scrie/sterge in memoria ROM (HDD) sau pentru orice altceva poate face un sistem de operare.
2.2 Shellul
Shellul este o componenta soft care face legatura intre utilizator si sistemul de operare. Acesta poate veni in doua moduri: CLI (Command Line Interface) sau GUI (Graphical User Interface). Cel mai raspandit tip de shell si care se gaseste implicit pe orice sistem UNIX este de tipul CLI, adica un prompt care asteapta comenzile utilizatorului. Un exemplu de shell puteti vedea mai jos:

Shell-ul asteapta comenzile utilizatorului iar apoi le traduce pentru a fi intelese de kernel care actioneaza in functie de dorinta utilizatorului. De exemplu daca scriem in shell comanda touch test.txt shellul ii va spune kernelului sa verifice existenta fisierului test.txt in directorul curent si daca fisierul nu exista sa il creeze iar daca exista sa ii modifice data ultimei accesari.
3. Despre fisiere
In UNIX tot ce vedeti/folositi este un fisier. Chiar si directoarele sau perifericele sunt fisiere. E un concept ciudat si oarecum greu de inteles pentru incepatori sau pentru cei care au lucrat o viata intreaga in Windows.
Fisierele in UNIX au cateva caracteristici aparte care ne ajuta sa ne folosim de ele intr-un mod optim. De exemplu, fisierele au permisiuni. Da, si in windows sunt permisiuni dar permisiunile in UNIX sunt mult mai stricte. Permisiunile sunt setate pe trei grupuri diferite de utilizatori: proprietarul fisierului, utilizatori din grupul asociat fisierului si oricine altcineva. Pentru fiecare utilizator din aceste trei categorii permisiunile pot fi de citire, scriere, executie sau combinatii ale acestora. Un tutorial despre drepturile fisierelor puteti gasi aici.
Ce ar mai trebui sa stiti despre fisiere e ca acestea pot fi de mai multe feluri:
a. Fisiere normale - texte, imagini…
b. Directoare - fisiere care contin alte fisiere
c. Link-uri simbolice - fisiere care fac legatura cu alte fisiere
d. Fisiere speciale (device) - folosite pentru comunicarea cu perifericele
e. Pipe - fisiere care fac legatura cu un server, folosite pentru comunicare
Nu va faceti griji daca par ciudate. Va prindeti in timp cum sta treaba cu ele ;-)
4. Structura de directoare
Structura de directoare difera de la un sistem la altul sau chiar de la o distributie la alta in cazul aceluiasi sistem de operare. In principiu pe toate sistemele de operare UNIX sau UNIX-Like veti gasi aceleasi directoare cu mici diferente in functie de imaginatia programatorului. Important e sa tineti minte ca toate resursele sunt relative la directorul radacina (directorul de root) care e marcat cu /. Inclusiv unitatile optice (CD/DVD) si partitiile sunt accesate tot pornind din directorul radacina. Aceste e un alt lucru putin dificil de inteles pentru incepatori sau pentru cei care au fost obisnuiti cu notarea din Windows in care fiecare partitie sau unitate de stocare a datelor are asociata o litera.
/ - directorul de root, directorul radacina in care isi au baza restul directoarelor;
/bin - directorul in care se pastreaza fisierele binare (comenzile) cele mai folosite, fisiere obligatorii pentru utilizarea sistemului de operare
/dev - aici sunt pastrate fisierele speciale folosite pentru comunicarea cu perifericele. Daca nu sunteti administrator de sistem sau programator nu aveti nevoie de asa ceva;
/etc - aici se pastreaza fisierele de configurare a sistemului si a serviciilor care sunt instalate in configuratia de baza. Aici se pastreaza fisierele care tin evidenta utilizatorilor, a grupurilor, a retelei etc;
/home - de obicei e o partitie montata in directorul /home (dar poate fi si un simplu director) in care exista cate un director pentru fiecare utilizator a sistemului. De exemplu, daca exista utilizatorul skullbox, directorul in care vor fi pastrate toate datele acestuia va fi /home/skullbox ;
/lib - aici se pastreaza bibliotecile de functii. Pentru cei care sunt obisnuiti cu windows-ul, bibliotecile de functii pentru UNIX sunt ceea ce sunt DLL-urile pentru Windows;
/mnt - directorul asta nu e obligatoriu sa apara peste tot dar in majoritatea sistemelor apare si e folosit ca punct de montare provizoriu sau sunt create in interiorul acestuia alte directoare care sunt folosite ca puncte de montare pentru partitiile existente;
/root - in UNIX exista un utilizator special numit root si care e asa de special incat are un director al lui, director care NU e pastrat langa celelalte directoare ale userilor (in /home) si e pastrat direct in radacina;
/sbin - daca in bin se pastreaza comenzile pentru utilizarea sistemului de operare in /sbin se pastreaza comenzile pentru administrarea sistemului de operare, comenzile de adaugare/stergere user sau grupuri, de configurare a componentelor etc;
/tmp - directorul asta e special pentru ca fiecare utilizator isi poate copia aici fisiere/directoare si in majoritatea cazurilor administratorul sterge ocazional tot continutul directorului. E un director utilizat de diferite programe care au nevoie de fisiere temporare, fisiere care sunt utilizate doar in timpul rularii iar poi pot fi sterse
/usr - aici de obicei gasiti o structura asemanatoare cu structura de directoare din root ( / ) cu diferenta ca in subdirectoarele bin,etc,sbin se pastreaza comenzi/setari utilizate de programele care nu sunt incluse in pachetul de baza cum ar fi apache, samba, mc sau altele
/var - aici se pastreaza fisierele cu care se lucreaza foarte des cum ar fi bazele de date. Ca principiu e bine ca aceasta partitie sa fie un HDD separat sau o partitie a discului cat mai in exteriorul discului pentru o viteza de lucru mai mare.
Ei, cam asta e toata filosofia legata de organizarea sistemelor UNIX. In Lectia care urmeaza o sa adaug cate ceva despre comenzile de baza in utilizarea sistemelor de operare bazate pe UNIX.
Categoria: UNIX
