Documente Academic
Documente Profesional
Documente Cultură
UNIX este un sistem de operare time -sharing universal. Principala sa caracteristică este
portabilitatea - disponibilitatea sa pentru majoritatea sistemelor de calcul (supercalculatoare,
mainframes, minicalculatoare, sisteme de birotică, microcalculatoare).
Oportunitatea apariţiei acestui sistem de operare a constat din:
- necesitatea standardizării şi unificării sistemelor de operare, în special a interfeţei cu
utilizatorul;
- păstrarea în condiţiile transferului pe alte sisteme de calcul, a structurii volumelor şi fişierelor;
- asigurarea unor niveluri superioare de portabilitate a produselor
- program;
- posibilitatea interconectării de sisteme cu arhitecturi, tipuri şi puteri diferite, sub acelaşi sistem
de operare.
- independenţa software-ului de aplicaţii, faţă de evoluţia hardware.
Cel mai inferior nivel este nivelul fizic -nivelul la care operează hardware-ul, acesta
incluzând dispozitivele fizice, microcodul şi limbajul de asamblare.
Următorul nivel -software-ul de bază sau software-ul de sistem are ca principală
componentă sistemul de operare având la bază nucleul (Kernel) alături de editoare de texte,
compilatoare, interpretere de comenzi şi utilitare.
Nivelul superior materializat prin software-ul aplicativ, cuprinde practic, o gamă infinită
de aplicaţii.
Este de remarcat faptul că orice nivel comunică numai cu nivelul imediat inferior sau
superior, furnizând servicii pentru nivelul imediat superior.
Scopul principal al sistemului de operare fiind acela de a controla resursele hardware ale
sistemului, se poate aprecia că sistemul de operare acţionează ca o interfaţă între utilizator
reprezentat prin programele de aplicaţie pe care acesta le lansează în execuţie şi componenta
hardware (fig. 4.3.).
Nucleul (Kernel) este componenta care asigură servicii de sistem pentru programele de
aplicaţii asigurând gestiunii proceselor, a memoriei, a intrărilor / ieşirilor şi a timpului; Shell -
interpreterul de comenzi, reprezintă mecanismul prin care sistemul de operare realizează interfaţa
între utilizator şi sistemul de calcul; interpreterele de comenzi existente pe sistemele de operare
Unix sunt:
* Bourne Shell (bsh) şi Bourne Again Shell (bash) al cărui producător este firma AT&T; bsh a
fost prima variantă a interpreterelor de comenzi;
* C Shell (csh) elaborat de firma Sun Microsystem; interpreterul are o sintaxă a comenzilor
similară cu cea a limbajului C;
* Korn Shell (ksh) ce se constituie ca o îmbinare a variantelor anterioare. Sistemul de fişiere
cuprinde programe utilitare, aplicative şi de gestiune a operaţiilor de intrare/ieşire.
Interfeţele disponibile utilizatorului sunt organizate pe trei niveluri:
* nivelul exterior nucleului, care poate fi accesat de către utilizator prin intermediul utilitarelor;
* nivelul intermediar, accesat prin funcţii din biblioteca limbajului C;
* nivelul inferior, a cărui accesare se realizează prin funcţiile de sistem (System Calls).
Asemănător MS-DOS-ului care în cursul dezvoltării sale a fost dotat cu interfeţele grafice
Windows, UNIX-ul a încorporat ca principale interfeţe grafice:
* X/Windows al firmei MIT, folosită şi de SCO în versiunile Open DeskTop (ODT);
* Open Look al cărei producător a fost firmele AT&T şi SUN;
* DEC Windows a firmei DEC.
Prin urmare, există o ierarhizare a straturilor ce se interpun între utilizator şi nucleul
sistemului de operare redată în fig. 4.5.
Fig. 4.5. Straturile interpuse între utilizator şi nucleul sistemului de operare UNIX
SOLARIS
Sistemul de operare UNIX varianta Solaris al firmei SUN, cuprinde următoarele
componente semnificative:
- Sun Os 5.0 bazat pe Unix System V Release 4;
- ONC Distributed Computing Platform -colecţie de protocoale de intercomunicare şi servicii
distribuite;
- sistemul de vizualizare OpenWindows V 3;
- interfaţa grafică OpenLook;
- Deskset V3- set de instrumente pentru activitatea de desktop.
Începând cu versiunea Solaris 2.6, sistemul de operare are ca principale noutăţi, un set de
bază pentru servicii de reţea, inclusiv propriul server Web şi browser. Îmbunătăţirile noii
versiuni au condus la următoarele constatări:
- cel mai rapid mediu Java;
- suport pentru fişiere mari;
- creşterea cu cca 35 % a performanţelor pentru baze de date;
- creşterea cu 350 % a performanţelor pentru Web.
HP - UX
HP - UX Hewlett Packard Unix este versiunea Unix System V care încorporează o serie
de caracteristici ale OSF/1:
- HP - UX 9 poate fi asimilat cu Unix System V.3, dispunând suplimentar de câteva extensii;
- HP - UX 10 este un Unix System V.4.
DEC - OSF/1
DEC - OSF/1 Digital Equipment Corporation este versiunea OSF/1 a firmei DEC
implementată pe DEC ALPHA STATION 600.
IRIX
IRIX include majoritatea caracteristicilor de la BSD, av având la bază Unix System V.4.
AIX
Sistemul de operare UNIX varianta AIX a fost proiectat de corporaţia IBM, fiind bazat pe
versiunea UNIX System V BSD şi OSF/1; este disponibil pe calculatoare IBM PS/2 (modelul
Power PC- versiunea AIX 3.x şi AIX 4.1.1) şi compatibile, respectiv pe mainframe având
implementate microprocesoare RISC-6000 versiunea AIX 4.1.3.
UNIX WARE
Unix Ware este o variantă având la bază versiunea UNIX System V Release 4, rezultată
dintr-o colaborare UNIX şi Novell.
Componente esenţiale:
- nucleul din Unix System V Release 4.2;
- sistemul de operare de reţea locală Netware;
- interfeţe grafice utilizator disponibile sunt: Openlook şi OSF/Motif.
LINUX
Linux este sistemul de operare Unix pentru procesoarele Intel, care a oferit software
gratuit.
Linux include esenţialul variantei BSD, fiind destinat utilizării individuale de către
profesionişti Unix. Este o soluţie acceptabilă pentru conectarea la Internet şi poate fi utilizat ca X
terminal în siteurile Unix.
Fişierele executabile preiau la execuţie uid-u//gid-ul celui care le lansează; dacă biţii sunt
setaţi pe 1, se preia uid-ul/gid-ul proprietarului fişierului respectiv, iar la comanda ls apare
opţiunea s în loc de x la dreptul de execuţie al proprietarului
Setarea bitului sticky produce rămânerea în memoria internă a fişierului executabil - în
zona de evacuare (swapping); este utilizat pentru fişiere de comenzi sau comenzi apelate frecvent
(TSR).
Schimbarea proprietarului (owner-ului) anumitor fişiere se face prin intermediul
comenzii:
$chown nume_nou_proprietar fis_1 fis_2 ... fis_n
unde nume_nou_proprietar devine noul proprietar al fişierelor fis_1 fis_2 ... fis_n specificate.
Exemplu
Prin comanda:
$chown radu fis1.x fis2.x
radu devine noul proprietar al fişierelor fis1.x şi fis2.x.
Schimbarea grupului care deţine anumite fişiere se realizează cu ajutorul comenzii:
$chgrp nume_nou_grup fis_1 fis_2 ... fis_n
prin care nume_nou_grup devine deţinătorul fişierelor fis_1 fis_2 ... fis_n.
Adăugarea unui nou grup la sistemul de fişiere UNIX se efectuează prin comanda:
$newgrp nume_grup_adaug
în urma căreia nume_grup_adaug este ataşat la sistemul de fişiere existent.
Schimbarea drepturilor de acces la un fişier se poate realiza numai de către proprietarul
acestuia (eventual, de către administratorul sistemului-superuser) cu comanda:
$chmod {cine} {permis}{drept_acces} fis_1 fis_2 ... fis_n
unde cine poate fi:
u user login (proprietarul);
g group (grupul);
o others (alţi utilizatori);
a all (toţi utilizatorii).
permis stăbileşte accesul sau neautorizarea acestuia prin:
+ permisiune;
- neautorizarea accesului;
= permisiune absolută.
drept_acces sunt drepturile de citire (r), scriere(w) sau execuţie (x);
fis_1 fis_2 ... fis_n fişierele asupra cărora se aplică modificarea.
Exemple:
1) Comanda:
$chmod a+rx prog
permite tuturor utilizatorilor (a) să citească (r) şi să execute (x) fişierul prog.
2) Comanda:
$chmod u-w prog
nu permite proprietarului fişierului prog să facă modificări în conţinutul acestuia.
3) Prin comanda:
$chmod o-r mail
nu se permite altor utilizatori (o) să citească (r) fişierul mail.
Observaţie: modificarea drepturilor de acces se poate realiza şi absolut prin însumarea
următoarelor valori:
4000 setare uid
2000 setare gid
1000 setare bit sticky
400 drept de citire pentru proprietar;
200 drept de scriere pentru proprietar;
100 drept de execuţie pentru proprietar;
40 drept de citire pentru grup;
20 drept de scriere pentru grup;
10 drept de execuţie pentru grup;
4 drept de citire pentru alţi utilizatori;
2 drept de scriere pentru alţi utilizatori;
1 drept de execuţie pentru alţi utilizatori;
Exemplu
Comanda:
$chmod 755 prof
modifică drepturile de acces pentru permisiune la citire, scriere, execuţie proprietar 700
(400+200+100), citire, execuţie pentru grup 50 (40+0+10), şi citire, execuţie pentru alţi
utilizatori 5(4+0+1).
Informaţiile despre utilizatori şi grupurile de utilizatori sunt cuprinse în fişierele
/etc/passwd, /etc/shadow şi /etc/group.
Utilizatorii au acces la comenzile generale situate de regulă în căile /bin şi /usr/bin,
aceştia având posibilitatea să-şi modifice propria parolă cu comanda:
$passwd parola
care va solicita introducerea noii parole de două ori.
Orice utilizator are acces la fişierul /etc/passwd, în timp ce la fişierul ce conţine parolele
(/etc/shadow), nu are acces decât numai utilizatorul cu drept deplin la root (administratorul
sistemului).
Fişierul /etc/passwd conţine câte o linie pentru fiecare utilizator, având următoarea
structură:
- numele de conectare (login);
- X parola invizibilă;
- numărul de identificare al utilizatorului uid (user identification);
- numărul de identificare al grupului gid (group identification);
- numele proprietarului (name owner);
- directorul atribuit la conectare (home directory);
- numele interpreterului de comenzi (shell).
La execuţia oricărui program, acestuia i se atribuie patru identificatori:
1.uid-ul real din /etc/passwd;
2.gid-ul real din /etc/passwd;
3.uid-ul efectiv al programului;
4.gid-ul efectiv al programului.
Accesul programului la un fişier va fi determinat de uid-ul şi gid-ul efective astfel:
- programul are aceleaşi drepturi de acces la un fişier ca şi proprietarul fişierului dacă uid-ul
efectiv este identic cu uid-ul fişierului;
- dacă uid-ul efectiv al programului nu este identic cu uid-ul fişierului, dar gid-ul acestuia
coincide cu gid-ul fişierului, programul are aceleaşi drepturi de acces ca şi grupul asociat
fişierului;
- dacă uid-urile şi gid-urile efective ale programului şi fişierului sunt diferite, programul va avea
aceleaşi drepturi de acces la fişier ca şi ceilalţi utilizatori.
Pentru un fişier, pot fi poziţionate (setate) două drepturi speciale de acces:
suid (set uid) şi sgid (set gid) care, la fişierele executabile au atribuite implicit drepturile pe care
le are utilizatorul atunci când le lansează:
- dacă suid a fost setat, atunci programul care accesează un fişier va avea uid-ul efectiv cu cel al
proprietarului, dar numai pe durata execuţiei programului.
Exemplu
Prin comanda:
$chmod u+s fis
se stabilesc drepturile proprietarului asupra fişierului fis, când acesta este accesat; efectul
comenzii este:
-rws-x proprietar grup fis
deci, orice membru al grupului poate accesa fişierul specificat prin fis.
Informaţii despre numerele şi numele de identificare ale utilizatorilor şi a grupurilor se
pot obţine cu comanda $id, iar numele utilizatorului curent prin comanda $logname.
Exemple
1) Prin comanda:
$/etc/mkfs /dev/dsk1 2000
se crează un sistem de fişiere UNIX pe floppy-disk-ul montat în unitatea 1, cu un singur director,
şi cu 2000 sectoare, iar prin:
$/etc/mount /dev/fd1 /user
se montează sistemul de fişiere UNIX de pe floppy-disk-ul din unitatea 1, în directorul /user/ al
sistemului de fişiere de pe discul principal (fig.4.7.).
Fig. 4.7.
2) Comanda:
$/etc/mount -r /dev/rz4c /radu
montează un disc optic prin intermediul interfeţei de disc SCSI, în directorul /radu protejat la
scriere.
3) Crearea unui fişier special asociat unui dispozitiv periferic se face prin comanda:
$/etc/mknod /dev/nume_fis_special {c/b} nr_maj nr_min
unde c/b tipul fişierului special:
- fişier special de tip caracter (c);
- fişier special de tip bloc (b);
nr_major, nr_minor reprezintă tipul dispozitivului (nr_major), respectiv numărul acestuia
(nr_minor) ambele specificate în octal, numerele depinzând esenţial de sistemul de operare
UNIX.
4.2.7. Implementarea sistemului de fişiere UNIX pe disc
Orice volum de disc este iniţializat ca un sistem de fişiere, conţinând un număr de blocuri
adresabile (de la 0 la valoarea maximă dată la iniţializare) organizate astfel:
Bloc 0: Boot
Bloc 1: Superbloc
Bloc 2: Zona de inod-uri
Bloc 3:
..
Blocuri de date
..
Bloc n: Zona de evacuare temporară (swapping).
Blocul Boot conţine codul încărcătorului părţii rezidente a sistemului de operare (în
general primul sector care este rezervat pentru programul de boot-are şi pentru informaţii despre
partiţionarea discului).
Superblocul conţine informaţii generale despre sistemul de fişiere:
- dimensiunea sistemului de fişiere împreună cu numărul de blocuri libere, tabloul ce conţine
blocurile libere, indexul următorului bloc liber din tablou;
- dimensiunea zonei de inod-uri, numărul de inod-uri libere, tabloul ce conţine inod-urile libere,
indexul următorului inod liber din tablou;
- câmpurile neautorizate la scriere pentru tablourile ce conţin blocuri şi inod-uri libere.
Superblocul este copiat în memoria internă, iar nucleul actualizează permanent
superblocul, pentru a asigura corespondenţa reală cu sistemul de fişiere (există un flag care este
setat la fiecare modificare a superblocului).
Zona de inod-uri conţine câte un inod pentru fiecare fişier de pe disc (eticheta de fişier).
Reprezentarea internă a unui fişier este specificată prin inod-ul asociat; acesta reprezintă o intrare
în lista de indecşi a unui volum, care conţine:
- poziţia pe disc a datelor din fişier (adresa);
- proprietarul fişierului;
- momentul ultimei accesări a fişierului sau ultima modificare a fişierului sau inod-ului.
Un fişier are asociat un singur inod, dar poate avea mai multe nume, fiecare dintre
acestea fiind în relaţie cu acelaşi inod. Relaţiile dintre nume şi inod se numesc legături.
Fiecare inod are asociat un număr de ordine i-number care desemnează în mod unic
numele interne ale fişierelor, iar directorii conţin tocmai tabela de traducere a numelui extern al
fişierului, în numărul de ordine asociat.
Conţinutul unui inod este modificat în momentul schimbării proprietarului, a drepturilor
de acces sau a numărului de legături; astfel, modificarea conţinutului unui fişier implicând
automat modificarea inod-ului asociat. Modificarea inod-ului însă, nu implică neapărat şi o
modificare a conţinutului fişierului.
Ştergerea unui inod se realizează cu comanda:
$clri /dev/nume_fis_special i_number
care şterge din sistemul de fişiere asociat unui dispozitiv periferic (nume_fis_special), inodul
specificat prin număr (i_number).
Exemplu
Prin comanda:
$clri /dev/fd0 5
se va şterge inod-ul 5 din sistemul de fişiere asociat floppy-disk-ului fd0.
Structura zonei de inod-uri cuprinde:
- numărul de identificare proprietar şi grup;
- tipul fişierului şi atributele de acces;
- lista blocurilor fizice ale fişierului compusă din 13 intrări:
10 constituie adresele primelor 10 blocuri de date;
11 bloc de simplă adresare indirectă;
12 bloc de dublă indirectare;
13 blocul de tripla indirectare;
- numărul de legături la fişier, indicând numărul directorilor care au referinţe la acest fişier;
- data ultimei accesări, a ultimei modificări şi data creării.
La deschiderea fişierului, inod-ul este copiat în memoria internă de către nucleu,
adăugându-i-se şi alte informaţii.
Blocurile de date conţin informaţia utilă a fişierelor organizate în blocuri:
- fiecare bloc are mărimea de 512 sau 1024 bytes;
- alocarea se face dinamic, pe baza listei blocurilor libere din superbloc.
Zona de evacuare temporară (swapping) conţine imaginile proceselor utilizator, atunci
când acestea sunt temporar eliminate din memoria internă.
Prin comanda:
$fsck [-sX][-D][nume_fis_special]
el poate testa şi repara sistemul de fişiere specificat prin nume_fis_special; maniera de testare şi
reparare este interactivă. Testarea constă în verificarea consistenţă între valorile parametrilor
memoraţi în tabelele Superblocului şi Zona de inod-uri. Dacă nu sunt depistate erori, atunci se va
afişa:
- numărul de fişiere;
- numărul de blocuri utilizate;
- numărul de blocuri libere.
-s ignoră lista de blocuri libere existentă şi reconstituie o nouă listă, prin rescrierea Superblocului
sistemului;
-D realizează verificarea directorilor în vederea depistării eventualelor blocuri defecte.
Comenzile de afişare a informaţiilor de pe disc:
$du [-ar][f1 f2 ...fn]
afişează numărul de blocuri conţinute în fiecare fişier f1 f2 ...fn; implicit, se afişează directorul
curent;
-a afişează şi numărul de blocuri conţinute în fişiere; implicit, se afişează numai directori;
-r afişează mesaje de eroare pentru directorii care nu pot fi citiţi.