Sunteți pe pagina 1din 66

I.

INSTALAREA WINDOWS XP HOME EDITION

Introducem CD-ul cu Windows XP in unitatea CD-ROM. Va apare o fereastra cu titlul "Welcome to Win XP" in care avem sintem intrebati ce optiune alegem din cele trei prezentate. Facem clic pe optiunea "Install Windows XP". Va apare o fereastra cu titlul "Welcome to Windows Setup" in care sintem intrebati ce tip de instalare dorim. Alegem optiunea "New Installation (Advanced)" care este deja selectata si facem clic pe butonul "Next". Va apare o fereastra care prezinta termenii contractului care se stabileste intre compania Microsoft (producatorul SO) si cumparatorul SO. Citim contractul si daca sintem de acord facem clic in cerculetul de linga textul "I accept the Agreement " (sint de acord cu termenii contractului) si apoi facem clic pe butonul "Next". Va apare o fereastra unde trebuie sa introducem in niste casute codul produsului cumparat ("Product Key"). Dupa ce terminam facem clic pe butonul "Next".Va apare o fereastra in care putem selecta limba folosita la instalare. Alegem optiunea deja selectata (engleza) si facem clic pe butonul "Next". In fereastra urmatoare sintem intrebati daca dorim sa ne conectam la internet pentru a descarca fisierele actualizate necesare pentru instalare. Facem clic in cerculetul de linga optiunea "No, skip this step and continue installing Windows" (treci peste aceasta etapa si continua instalarea Windows). Facem clic pe butonul "Next". Urmeaza etapa de preparare a instalarii WIN XP prin copierea de pe CD a fisierelor necesare. Dupa terminarea acesteia calculatorul va reporni automat.Dupa repornire va apare un ecran albastru intitulat "Welcome to Windows XP Home Edition Setup". Apasam tasta Enter pentru a se incepe instalarea.Va apare un ecran cu textul "You chose to install Win XP in a partition that contains another operating system. Installing Win XP on this partition might cause the other operating system to function improperly." (Ati ales sa instalati Win XP pe o partitie care contine un alt SO. Instalarea Win XP pe aceasta partitie poate cauza functionarea necorespunzatoare a celuilalt SO). Apasam tasta Esc pentru a selecta alta partitie decit partitia pe care este instalat Windows ME. Va apare un tabel cu partitiile existente. Alegem cu ajutorul tastelor cu sageti partitia F (numita anterior chiar WIN XP) si apasam tasta Enter.In ecranul urmator sintem intrebati ce sistem de fisiere sa fie folosit de catre Win XP, fiind disponibile sistemele NTFS si FAT. Partitiile definite de noi pe hardisc cu FDISK folosesc toate sistemul FAT (de fapt FAT32). Sistemul NTFS este mai bun si mai stabil decit sistemul FAT. Este recomandat ca partitia pe care instalam WIN XP sa fie de tip NTFS de aceea ii vom indica programului de instalare ca dorim ca sistemul de fisiere de pe partitia F sa fie convertit in sistem NTFS si apoi apasam tasta Enter. Conversia va dura citeva minute si se va desfasura un pic mai tirziu. Daca folosim pentru WIN XP o partitie cu un sistem de fisiere de tip NTFS nu vom mai putea face operatii cu fisiere intre partitia in care se afla Win XP si cea in care se afla WIN ME decit atunci cind folosim WIN XP, nu si atunci cind folosim WIN ME. Daca dorim ca partitia F sa ramina cu sistemul de fisiere FAT va trebui sa alegem optiunea "Leave the current file system intact (no changes)" pentru ca WIN XP sa foloseasca sistemul existent deja (FAT) si apasam tasta Enter. Alegerea acestei optiuni nu este recomandata pentru ca performanta si stabilitatea WIN XP vor scadea. Urmeaza o etapa de copiere pe hardisc a datelor necesare pentru instalarea Win XP, dupa care sistemul va reporni automat. Va apare o fereastra intitulata "Regional and Language Options" unde alegem optiunile deja selectate (limba engleza si tastatura cu dispunere a butoanelor obisnuita) si facem clic pe butonul Next. Va apare o fereastra cu doua cimpuri in care trebuie sa completam numele nostru si organizatia (compania) din care facem parte. Folosim datele introduse la instalarea Win ME si facem clic pe butonul Next. In urmatoarea fereastra trebuie sa completam numele calculatorului nostru. Folosim numele deja folosit la instalarea Win ME si facem clic pe butonul Next. Va apare o fereastra intitulata "Date and Time Settings" unde 1

trebuie sa alegem fusul orar al localitatii unde locuim dintr-o lista de orase. Alegem ora Bucurestiului si facem clic pe butonul Next. Va apare o fereastra intitulata "Network Settings" unde trebuie sa alegem un mod de instalare in functie de parametrii retelei de calculatoare in care se afla calculatorul nostru. Alegem optiunea deja selectata ("Typical Settings") indiferent daca avem sau nu calculatorul inclus intr-o retea si facem clic pe butonul Next. Va urma o etapa de copiere a unor fisiere la sfirsitul careia calculatorul va reporni. La repornire apare o minifereastra in care sintem anuntati ca Win XP a modificat rezolutia monitorului pentru ca imaginea sa fie mai buna. Facem clic pe butonul OK. In continuare va apare o noua minifereastra in care daca vedem textul acesteia inseamna ca rezolutia aleasa pentru monitor este adecvata. Facem clic pe butonul OK. Va apare o fereastra intitulata "Welcome to Microsoft Windows" unde trebuie sa facem clic pe butonul Next din partea dreapta jos. Va apare o fereastra in care se verifica faptul daca sintem conectati la internet. Facem clic pe butonul Skip din partea dreapta jos. Va apare o fereastra in care sintem intrebati daca dorim sa activam Win XP in acest moment. Facem clic pe cerculetul de linga textul "No, remind me every few days" (Nu, adu-mi aminte peste citeva zile). Facem clic pe butonul Next. Va apare o fereastra cu mai multe cimpuri in care trebuie sa specificam unul sau mai multe nume de utilizatori in functie de persoanele care folosesc calculatorul. Fiecare utilizator va putea sa configureze Win XP dupa preferintele personale. Dupa ce completam cimpul (cimpurile) respectiv facem clic pe butonul Next. Va apare o fereastra cu titlul "Thank You" in care facem clic pe butonul "Finish" din partea dreapta jos. In final va apare suprafata de lucru ("desktop") a Win XP. Instalarea Win XP este practic terminata in acest moment. La fiecare pornire a calculatorului vom putea sa alegem care sistem de operare sa fie incarcat, WIN XP sau WIN ME. Pentru a beneficia de avantajele oferite de sistemul de operare Windows XP trebuie sa instalam de asemenea ultimele versiuni ale programelor Internet Explorer, Media Player si Direct X. Media Player are o versiune speciala pentru Win XP. INSTALAREA DRAIVERELOR Draiverele ("drivers") sint programe speciale care optimizeaza functionarea componentelor hardware ale calculatorului. Ele sint concepute de producatorii componentelor si unele din ele sint actualizate periodic. Sistemele de operare Windows contin o mare parte din draiverele necesare pentru functionarea pieselor calculatorului, insa aceste draivere sint de multe ori generice adica sint concepute special pentru a permite functionarea pieselor indiferent de producatorul lor. Acest lucru se reflecta in performanta pieselor care este medie. Din aceasta cauza este de preferat ca pentru fiecare piesa sa instalam draiverul conceput de producatorul piesei respective pentru ca in acest fel piesa functioneaza optim. De asemenea este bine sa citim micul pliant sau manual care este livrat impreuna cu orice piesa pentru calculator. In acesta este explicata nu numai instalarea piesei ci si instalarea draiverului. Draiverele au versiuni diferite pentru diversele SO de aceea ele trebuie instalate separat pentru fiecare sistem de operare. In cazul de fata trebuie sa instalam draiverele o data sub Win ME si ulterior sub Win XP.Draiverele sint prezente intotdeauna pe CD-urile care insotesc piesele de calculator dar este posibil sa nu fie vorba de ultima versiune. Este deci recomandat sa mergem pe situl producatorului si sa descarcam ultima versiune a draiverului atit pentru WIN ME cit si pentru Win XP. Daca nu avem conexiune la internet putem folosi versiunea mai veche, de obicei diferenta de performanta a piesei nu este prea mare. Pentru a instala un draiver trebuie de obicei sa facem dublu clic pe fisierul ce contine draiverul. Vor apare pe rind mai multe ferestre unde trebuie sa apasam pe butonul "Next". Dupa ce este terminata instalarea, calculatorul trebuie de obicei repornit.

INSTALAREA DRAIVERELOR PLCII DE BAZ In cazul in care avem o PB cu cipset VIA trebuie sa instalam pachetul de draivere numit VIA Hyperion (fost "VIA 4 in 1"). Acesta este prezent pe CD-ul placii de baza dar este posibil sa nu fie vorba de ultima versiune. El este de multe ori prezent si pe CD-urile revistelor care se ocupa cu domeniul IT. Cel mai bine este sa mergem pe situl VIA la sectiunea speciala care contine ultimele draivere pentru piesele produse de aceasta companie si sa verificam care este cea mai noua versiune a fisierului VIA Hyperion. Nu exista versiuni diferite pentru WinXP si Win ME. Varianta SO va fi recunoscuta automat la instalare si vor fi alese automat draiverele potrivite. Facem dublu clic pe fisierul care contine draiverul (de ex. VIAHyperion4in1448.exe) pe care dorim sa-l instalam, urmam instructiunile si facem clic pe butoanele corespunzatoare (de ex. spunem ca sintem de acord cu termenii contractuali). Dupa ce este terminata instalarea calculatorul trebuie repornit. INSTALAREA DRAIVERULUI PLCII DE SUNET Draiverul placii de sunet integrate se afla de obicei pe CD-ul care vine impreuna cu placa de baza. Si in acest caz este recomandat sa mergem pe situl producatorului si sa descarcam ultima versiune a draiverului. In cazul codecului AC 97, folosit pe scara larga in multe PB, producatorul se numeste Realtek . Dupa ce este terminata instalarea calculatorul trebuie repornit. Nu exista versiuni diferite pentru WinXP si Win ME.

INSTALAREA DRAIVERULUI PLCII VIDEO Producatorii de placi video actualizeaza destul de frecvent draiverele pentru placile video, de multe ori pentru a le face sa functioneze optim cu ultimele jocuri aparute. In cazul PV avem de ales intre draiverul generic conceput de producatorul cipsetului PV si draiverul conceput de producatorul PV (pe baza draiverului generic pentru cipset). Le putem instala pe rind si apoi sa ne decidem care este mai bun. Compania NVIDIA are un draiver generic numit "Detonator" care poate fi folosit indiferent de generatia din care face parte placa video GeForce pe care o avem. Facem dublu clic pe fisierul care contine draiverul (de ex. 43.45_win9x_english.exe) pe care dorim sa-l instalam, urmam instructiunile si facem clic pe butoanele corespunzatoare (de ex. spunem ca sintem de acord cu termenii contractuali). Dupa ce este terminata instalarea calculatorul trebuie repornit. Exista versiuni diferite ale draiverului pentru Win XP si Win ME. INSTALAREA DRAIVERULUI MONITORULUI Acest draiver este esential pentru functionarea corecta a monitorului. Este posibil ca in acest caz instalarea draiverului sa nu fie atit de usoara ca in celelalte cazuri. De obicei pe CD se afla si un fisier text in care este explicata procedura de instalare a draiverului. Draiverul monitorului trebuie instalat dupa draiverul placii video. Exista versiuni diferite ale draiverului pentru Win XP si Win ME. Sa luam ca exemplu monitorul Philips 107E sub sistemul de operare Win ME. In acest caz avem un CD care contine draivere pentru multe tipuri de monitoare produse de compania Philips atit pentru Win ME cit si pentru Win XP. Introducem CD-ul in unitatea CD-ROM. Apoi facem clic dreapta pe suprafata de lucru ("desktop") si in meniul care apare facem clic pe optiunea 3

"Properties". Apare o multifereastra in care trebuie sa facem clic pe titlul ferestrei "Settings" pentru a o aduce in prim plan. Facem clic pe butonul "Advanced". Apare o noua multifereastra in care trebuie sa facem clic pe titlul ferestrei "Monitor" pentru a o aduce in prim plan. Facem clic pe butonul "Change". In fereastra care apare selectam optiunea "Specify the location of the driver" si apoi facem clic pe butonul "Next". Apare o noua fereastra in care selectam optiunea "Display all the drivers in a specific location..." si facem clic pe butonul "Next". In fereastra urmatoare facem clic pe butonul "Have Disk".Va apare o minifereastra numita "Install from disk". Facem clic pe butonul "Browse" si in fereastra numita "Open" selectam litera CD-ului si apoi facem clic pe butonul OK. Apasam din nou pe butonul OK de aceasta data in minifereastra "Install from disk". Ne reintoarcem la fereastra numita "Update device driver wizard" in care facem clic pe butonul "Next" iar draiverul va fi instalat. INSTALAREA DRAIVERULUI MODEMULUI Cele mai ieftine softmodemuri sint produse de companii a caror activitate principala este producerea de placi de baza. Pe CD-ul modemului se afla draivere pentru modemuri cu o varietate de cipseturi. Citim pliantul care vine impreuna cu modemul si vedem ce cipset contine modemul cumparat de noi iar apoi cautam pe CD fisierul care contine draiverul corespunzator si facem dublu clic pe el.

II. Utilizarea Sistemului de Operare Windows XP


Functiile din Control Panel
1. Scopul lucrarii Studiul metodelor destinate configurarii sistemului de operareWindows XP, adaugarii, modificarii caracteristicilor, eliminarii dispozitivelor si programelor n/din sistemul de operare. 2. Prezentare generala Control Panel Configurarea componentelor hardware si a componentelor software apartinnd sistemului de operare Windows XP se realizeaza utiliznd programele grupate n fereastra Control Panel.

2.1. Accesibility Options Optiune de accesibilitate, configureazatastatura, mouse-ul, ecranul, sunetele si alte echipamente pentru a usura utilizarea acestora cnd ele sunt folosite de persoane cu deficiente vizuale,de auz sau motorii. 2.2. Add Hardware Adaugare Hardware. Prin intermediul acesteioptiuni se instaleaza un software corespunzator noului echipament hardware adaugat la PC si ofera mijloace de depanare n cazul aparitiei unor defectiuni. 5

La instalarea sistemului de operare, dispozitivele de tipul Plug-and-Play sunt recunoscute si introduse automat n sistem. Pentru cele care nu sunt de tipul Plug-and-Play se solicita specificarea locatiei drivere-lor corespunzotoare componentelor noi. Urmeaza instalarea automata a softului care face ca dispozitivele hardware sa devina functionale. Corespunzator exista si un vrajitor Add Hardware. 2.3. Add or Remove Programs - Permite adaugarea sau eliminarea programelor aplicative instalate sau ndeparteaza unele componente ale sistemului de operare. Este posibila si actualizarea prin Internet a componentelor sistemului de operare Windows XP. Pentru aceasta, n fereastra deschisa Add or Remove Programs se actioneaza butonul Windows Update, care lanseaza n executie browser-ul Internet Explorer care ncarca pagina Web de actualizare a sistemului de operare de la adresa: http://windowsupdate.microsoft.com 2.4. Administrative Tools Colectie de instrumente pentru administrarea sistemului Windows XP: - Component Services - Computer Management - Data Sources (ODBC) - Event Viewer - Internet Information Services - Local Security Policy - Performance - Server Extensions - Services 2.5. Date and Time Configureaza data si ora calculatorului. Ofera si posibilitatea sincronizarii orei sistemului cu ora livrata de un server de ora din Internet. 2.6. Display Program pentru configurarea proprietatilor ecranului monitorului. Permite schimbarea imaginii de fundal, schimbarea schemei de culori si a caracteristicilor ferestrelor. Permite modificarea rezolutiei si a ratei de mprospatare a ecranului. Optiunea Screen Saver permite protejarea ecranului prin stingerea sa si afisarea unor forme n miscare.Este posibila introducerea unei parole la revenirea utilizatorului. 2.7. Folder Options Permite selectarea optiunilor de vizualizare a dosarelor si asocierile de fisiere. 2.8. Fonts Optiunea permite vizualizarea, adaugarea si eliminarea fonturilor. Fonturile sunt corpurile de litere utilizate de sistemul de operarepentru afisare pe ecran si tiparire la imprimanta. 2.9. Game Controller Program care permite adaugarea configurarea si eliminarea echipamentelor hardware utilizate la jocuri, de exemplu joystick-ul. 2.10. Internet Options Prin intermediul acestui program se pot configura optiunile de navigare ale browser-ului Internet Explorer.

2.11. Keyboard Program prin care se stabilesc parametrii utilizati de tastatura, ca de exemplu: viteza de repetare a tastelor si clipirea cursorului pe ecran. 2.12. Mail Program prin care se configureaza optiunile utilitarului de posta Microsoft Outlook.. 2.13. Mouse Permite modificarea parametrilor mouse-ului: viteza de deplasare a cursorului pe ecran, formele cursorului, utilizarea butoanelor,etc. 2.14. Network Connections Realizeaza conectarea la alte calculatoare sau Internet. 2.15. Phone and Modem Option Program de configurare a modem-ului si telefonului legat la calculator. 2.16. Power Options Permite alegerea unor optiuni de configurare referitoare la utilizarea energiei electrice de catre calculator n vederea economisirii, de exemplu oprirea alimentarii monitorului sau discurilor hard dupa o perioada de inactivitate. 2.17. Printers and Faxes Afiseaza imprimantele si dispozitivele de tip fax instalate n sistem si ajuta la gestionarea lor. De asemnea, ofera ajutor n gestionarea cozilor de tiparire la imprimante sau la transmiterea prin fax. 6

2.18. Regional and Language Options Ofera selectarea unor optiuni regionale si de limba: simbolurile valutare, formatul timpului si datei calendaristice sau selectarea caracteristicilor tastaturii n functie de limba utilizata. 2.19. Scanners and Cameras Permite instalarea si eliminarea scannere-lor si a videocamerelor. 2.20. Scheduled Tasks Planificarea Lucrarilor. Permite lansarea automata, planificata, a unor programe utilitare sau aplicative. 2.21. Sounds and Audio Devices Programul permite configurarea echipamentelor de sunet/audio si asocierea unor sunete la evenimente ale functionarii sitemului de operare. 2.22. Speech Program care poate configura conversia textului n vorbire sau gestioneaza caracteristicile programelor de recunoastere a vorbirii. Se permite, de asemenea, configurarea microfonului utilizat. 2.23. System Program de configurare a sistemului referitor la: - gestionarea echipamentelor hardware - depanarea erorilor hardware - gestionarea drivere-lor aferente echipamentelor hardware - modificarea parametrilor de performanta ale PC - afiseaza informatiile de baza referitoare la sistemul de operare si la hardware. 2.24. Taskbar and Start Menu Permite configurarea barei de lucrari si ale meniului Start. 2.25. User Acounts Permite modificarea conturilor si parolelor utilizatorilor sistemului. 2.26. Windows Firewall - Permite modificarea programului de protectie mpotriva utilizatorilor si interventiilor nedorite din reteaua Internet. 2.27. Wireless Network Setup Wizard Permite configurarea dispozitivelor wireless (fara fir radio sau cu infrarosu) conectate la calculator.

3. Desfasurarea lucrarii.
3.1. Adaugarea de noi componente hardware n timpul utilizarii si functionarii unui calculator apare de multe orinecesitatea de a adauga noi componente hardware, dar acestea functioneazacorespunzator doar daca sunt de tipul Plugand-Play, altfel este necesar sa se instaleze un software adecvat. Pentru instalarea echipamentelor noi care nu sunt de tipul Plug-and-Play se parcurg urmatorii pasi: a) Se activeaza optiunea Add Hardware. n fereastra de dialog carese deschide se cere utilizatorului sa opteze ntre citirea discului de instalareal echipamentului, daca exista, sau utilizarea procedurii de sistem. b) Dupa verificare, sistemul ntreaba daca noul echipament este deja conectat la sistem. Se poate raspunde No, caz n care se cere conectarea noului echipament, altfel daca echipamentul este deja instalat se raspunde Yes si se continua secventa. c) Apare o noua fereastra de dialog continnd o lista de echipamentedeja instalate, cunoscute de sistem. Din aceasta lista se selecteaza echipamentul instalat, dupa care se poate da comanda Next pentru testarea proprietatilor echipamentului respectiv sau pentru depanarea lui. Altfel, pentru a adauga un echipament hardware, absent n lista, se selecteaza Add a New Device. d) n functie de obtiunea selectata la pasul c), se va afisa un raport de stare corespunzator echipamentului, daca acesta exista, sau sistemul va continua sa caute un nou dispozitiv hardware. De obicei, se selecteaza optiunea de instalare a echipamentului gasit n lista. e) n fereastra de dialog va aparea o lista cu tipuri generale de hardware. Daca acesta nu corespunde cu echipamentul avut n vedere se va selecta din lista optiunea Show All Devices Afisarea tuturor echipamentelor. 7

f) Va aparea o noua fereastra de dialog continnd doua liste: - lista firmelor producatoare; - lista modelelor apartinnd fiecarui producator. Daca firma si modelul dorit sunt prezente n lista se selecteaza si se finalizeaza instalarea noului echipament. Exista si posibilitatea instalarii software-ului noului echipament alegnd optiunea Have Disk. Dupa introducerea discului de instalare (discheta sau CD) si stabilirea caii spre noul software se continua cu raspunsurile cerute privind valorile de configurare. La ora aplicativa se va testa procedura de mai sus la instalarea unor dispozitive noi, de exemplu, camera video, scanner, mouse, imprimanta, etc. 3.2. Adaugarea sau eliminarea programelor aplicative n timpul exploatarii calculatorului sub sistemul de operare Windows XP, apare de multe ori necesitatea de a adauga noi programe sau de a elimina unele programe care nu mai sunt utile. Aceste doua operatii se pot realiza prin intermediul optiunii Add or Remove Program sunt disponibile trei variante de actionare: Modificarea sau eliminarea programelor (Change or Remove Programs), Adaugare programe noi (Add New Programs) si Adaugarea/Eliminare componente ale sistemului de operare Windows XP (Add/Remove Windows Components). Operatiile posibile n cazul fiecarei variante depind de programul asupra caruia se exercita actiunea. Unele programe permit doar dezinstalarea, n timp ce altele permit si modificarea instalarii. n cazul instalarii de noi programe, de regula, se solicita suportul(discheta sau CD-ul) de pe care se activeaza programul de instalare care poate fi Setup.exe sau Install.exe. Dupa lansarea n executie a rutinei de instalare se continua cu raspunsuri la instructiunile solicitate de fiecare program. Componentele sistemului de operare Windows XP se pot actualiza si din Internet, activnd butonul de comanda Windows Update. La ora aplicativa se vor testa activitatile de instalare si dezinstalare programe alegnd pentru experimentare diverse programe demonstrative, de exemplu, cele gasite pe CD-ul sau DVD-ul revistei CHIP. 3.4. Configurarea optiunilor de limba Prin actionarea comenzii Regional and Language Options se afiseaza o fereastra de dialog cu trei pagini: Regional Options, Languages si Advanced. Optiunile de configurare a limbii se afla n pagina Regional Options. Pentru alegerea limbii romne se alege din lista derulanta Romanian si se aplica. Pe bara de Start se va semnaliza existenta optiunilor printr-o lista-buton care permite selectia ntre limbile utilizate (de exemplu, engleza si romna). 3.5. Cea mai simpla metoda de modificare a interfetei grafice este utilizarea ferestrei de dialog Display Properties, care poate fi lansata din Control Panel. Fereastra de dialog poate contine cinci pagini de optiuni referitoare la: - Teme (Themes). Prin tema se ntelege o imagine de fundal nsotita eventual de sunete, simboluri grafice, corpuri de litera, etc utilizate pentru personificarea calculatorului prin intermediul unui singur clic de mouse. Temele predefinite sunt: Windows XP si Windows Clasic. Se va testa posibilitatea utilizarii altor teme, cautate pe Internet. - Desktop-ul permite selectarea imaginii de fundal (background). Se poate dispune imaginea de fundal prin intermediul optiunilor din Position: CENTER, TILE, STRETCH. - Protejarea ecranului (Screen Saver) este o optiune care permite precizarea unui program ncorporat windows-ului de protectie a ecranului. Rolul protejarii prin Screen Saver este mpiedicarea uzurii suprafetei ecranului, daca timp ndelungat nu se nregistreaza nici o actiune cu mouseul sau de la tastatura.

- Aspectul (Appearance) este optiunea care permite modificarea culorilor atasate componentelor de ecran. n plus mai exista o comanda auxiliara Effects prin care se pot configura: animatia meniurilor, netezimea fonturilor, dimensiunea simbolurilor grafice, afisarea de umbre sub meniuri, etc. - Configurarea modului video (Settings) permite selectarea rezolutiei ecranului si calitatea culorilor. Prin optiunea Screen Resolution se pot selecta diferite rezolutii ale ecranului (nr. de pixeli afisati pe ecran) 800600, 1024768, 1152864, 12801024. Lista Colors permite selectia numarului de culori afisate de monitor: 256 culori, 216 culori, 232 culori. Se vor testa diferite combinatii rezolutie/nr. de culori pe calculatorul de lucru.

III.Introducere n sistemul de operare Linux

Linux este un sistem de operare cu divizare a timpului (time-sharing operating system) care prezint urmtoarele atribute de baza: - are un sistem ierarhizat de fiiere; - asigur compatibilitatea ntre fiiere, dispozitive I/O i mecanismele de comunicaie ntre procese; - ofer posibilitatea de a iniia procese asincrone, multitasking; - permite selectarea de ctre utilizator a interpretorului de comenzi; - prezint un grad nalt de portabilitate, fiind scris n proporie de 90% in C. Componentele sistemului de operare Linux sunt: - nucleul LINUX (eng. kernel); - interpretorul de comenzi (eng. shell); - utilitarele (compilatoare, editoare de legturi, editoare de text, analizoare lexicale, utilitare Web, etc.) i programele utilizator. Nucleul are rolul de a gestiona resursele fizice (procesor, memorie, dispozitive periferice) i logice (procese, fiiere, etc). Interfaa dintre nucleu i aplicaiile utilizator este asigurat de proceduri i funcii puse la dispoziie direct de nucleu sau de o serie de biblioteci. Interfaa ntre utilizator i sistemul de operare este format din comenzi, care sunt de fapt programe ce se lanseaz n execuie cu ajutorul interpretorului de comenzi. n momentul intrrii unui utilizator ntr-un sistem Linux, sistemul stabilete, pe baza unor informaii nregistrate despre utilizator, interpretorul de comenzi ce va fi folosit i lanseaz n execuie acel interpretor. Exist mai multe variante de interpretoare de comenzi (csh C-shell; ksh Korn shell; bash Bourne again shell, etc.), deosebirile dintre acestea fiind legate de facilitile de programare pe care le ofer utilizatorului, de o serie de elemente interactive i de modul de prezentare a rezultatelor unei comenzi. Modul de funcionare a unui interpretor de comenzi este ilustrat n fig. 1.1. Utilizatorul introduce o comand (de obicei cu ajutorul unei tastaturi) terminat cu CR (Enter). Comanda este analizat i dac nu este detectat nici o eroare, programul corespunztor este citit de pe disc, ncrcat n memorie i executat. Dac se detecteaz vreo eroare n sintax, se afieaz un mesaj corespunztor. Dup terminarea programului, interpretorul preia controlul i ateapt urmtoarea comand. Sintaxa general a unei comenzi Linux este comanda optiuni parametri unde: comanda desemneaz programul care execut serviciul solicitat; optiuni particularizeaz modul de execuie a comenzii; parametri precizeaz obiectele asupra crora se execut comanda. n continuare vor fi prezentate, pe scurt, cteva comenzi Linux uzuale. Pentru mai multe detalii despre aceste comenzi se recomand vizualizarea paginilor de help cu ajutorul comenzii man nume_comanda. Comenzi pentru operaii asupra fiierelor i directoarelor Sistemul de operare Linux recunoate 4 tipuri de fiiere: - fiiere obinuite - iruri de octei fr o structur logic special; - fiiere speciale - sunt asociate dispozitivelor periferice. Astfel, se permite accesarea uniform (folosind aceeai sintax) att a fiierelor ct i a dispozitivelor periferice, prin intermediul driverelor de dispozitiv; - fiiere director (cataloage) - utilizate pentru structurarea sistemului de fiiere; - fiiere FIFO - sunt fiiere speciale utilizate pentru realizarea comunicrii ntre procese Linux; - socket-uri - sunt fiiere speciale utilizate pentru realizarea comunicrii ntre procese Linux. 10

Editorul de text vim (Vi IMproved) Lansarea n execuie a editorului vim se face cu ajutorul comenzii $ vim care va deschide o fereastr n care utilizatorul poate introduce text. Caracterul ~ indic faptul c linia pe care este plasat nu conine text. Dac se dorete ca, dup lansarea n execuie, vim s ncarce un fiier, se va utiliza comanda $ vim nume_fisier Dac fiierul cu numele specificat nu exist se va crea un fiier vid cu acel nume. Un alt mod util de lansare a editorului este vim +n nume_fisier care va deschide fiierul specificat i va poziiona cursorul pe linia n. Editorul vim are mai multe moduri de operare, printre care modul text, modul comand i modul vizual. n modul text, tastele apsate de utilizator sunt introduse ntr-un buffer (urmnd a fi salvate ulterior n fiierul deschis) i afiate pe monitor. n modul comand, orice secven de taste este interpretat drept comand vim. Modul vizual este util pentru copierea unor blocuri de text. Trecerea din modul text n cel comand se face cu tasta i. Trecerea din modul comand n cel vizual se face cu tasta v. Revenirea n modul text se face cu tasta Esc. Comenzile vim pot fi executate doar n modul comand sau vizual. Comenzile precedate de : apar n linia de stare a editorului (ultima linie) i trebuie terminate cu CR pentru a se executa. Dezvoltarea aplicaiilor C sub Linux Sistemul de operare Linux dispune de utilitare performante destinate dezvoltrii de aplicaii C. Dintre acestea un rol aparte il au: compilatorul de C, gcc; editorul de legturi, ld; depanatorul, gdb; bibliotecarul, ar; utilitarul pentru construirea fiierelor proiect, make. Limbajul C ofer suportul cel mai adecvat dezvoltrii aplicaiilor sub Linux, datorit modului convenabil n care se face accesul la serviciile sistemului de operare. Aceste funcii permit o multitudine de operaii referitoare la lucrul cu fiiere, alocare a memoriei, controlul proceselor, etc. Fiind scrise in C, funciile sistemului de operare au un mecanism de apelare comod, similar oricrei rutine scrisa de utilizator. Caracteristicile principale ale limbajului ca si majoritatea funciilor disponibile n implementrile de sub MS-DOS sunt valabile si sub Linux. n plus, sunt disponibile si alte faciliti care vor fi detaliate ulterior. Dezvoltarea unei aplicaii C presupune editarea textului sursa cu ajutorul unui editor (vim sau editorul intern al programului mc). Fiierul creat trebuie s aib extensia .c, extensie care prin convenie este atribuit surselor scrise in limbaj C. Exemplul de mai jos prezint textul surs pentru un program care copie un ir surs ntr-un ir destinaie. #include <stdio.h> int main(void) { char sursa[] = "abcdefg"; char dest[10]; int i = 0; while (sursa[i] != '\0') dest[i] = sursa[i++]; dest[i] = '\0'; printf("Sirul destinatie este: %s", dest);

11

exit(0); } Program C (exemplu.c) ce copie un ir surs n irul destinaie Pentru compilarea fiierului sursa exemplu.c se poate utiliza comanda: $ gcc exemplu.c -o exemplu Obs.: 1. Aceast form invoc compilatorul specificnd prin opiunea -o exemplu numele fiierului executabil care va fi creat. n lipsa opiunii de mai sus, fiierul executabil creat va fi denumit a. 2. Faza de link-editare este realizat n mod automat. Pentru a obine numai forma obiect se folosete opiunea -c. 3. Fiierele antet standard folosite n compilare, precum i bibliotecile utilizate pentru link-editare sunt amplasate n directoare standard, /usr/include i /usr/lib. n cazul existenei unor erori de compilare sunt semnalate linia i tipul erorii ntlnite. Depistarea efectiv a erorii revine programatorului. Controlul i gestiunea proceselor n Linux Sistemul de operare Linux pune la dispoziie apeluri sistem pentru controlul i gestiunea proceselor, cum ar fi apeluri pentru crearea i terminarea unui proces, nlocuirea programului executat de un proces sau punerea n ateptare a unui proces pn la terminarea altui proces. Lansarea i terminarea execuiei unui program C sub Linux Termenul de program specific, de cele mai multe ori, un fiier executabil aflat pe un suport de memorare extern - hard disk. O instan a unui program aflat n lucru poart numele de proces. Acesta conine imaginea fiierului executabil (segmentele de cod, date i stiv) precum i resursele utilizate n momentul execuiei (regitri, fiiere deschise, etc.). Un program este executat de nucleul sistemului de operare (eng. kernel) prin intermediul funciei exec. Lansarea n execuie a unui program C presupune (i) cutarea unui fiier ce conine cod executabil, (ii) ncrcarea n memorie a coninutului su i (iii) predarea controlului ctre acest program. Compilatorul C i editorul de legturi (eng. link-editor) adaug programului o funcie special, denumit rutin de start C, care va primi controlul n momentul lansrii programului n execuie i va apela apoi funcia main. Rutina de start mai are rolul de a prelua de la nucleul sistemului de operare argumentele programului din linia de comand i variabilele de mediu. Apeluri sistem pentru crearea proceselor (fork i vfork) Fiecare proces Linux primete, n momentul crerii, un identificator unic numit PID (Process ID). Acest identificator este un numr ntreg, a crui unicitate este garantat de sistemul de operare. Un proces poate afla propriul PID cu ajutorul funciei C getpid. #include <sys/types.h> #include<unistd.h> pid_t getpid(void) Crearea unui proces se face cu ajutorul funciilor fork i vfork:

12

#include <sys/types.h> #include<unistd.h> pid_t fork(void) pid_t vfork(void) Apariia unei erori la execuia apelului fork este semnalizat prin returnarea valorii -1. n cazul unei execuii reuite, la ieirea din apelul fork exist un nou proces. Procesul care a apelat fork se numete proces printe, iar procesul creat se numete proces fiu. Funcia fork returneaz PID-ul procesului fiu n procesul printe i 0 n procesul fiu. Toate resursele deinute de procesul printe sunt duplicate n procesul fiu (segmentele de cod, date i stiv, fiierele deschise, variabilele de mediu, etc.), cu excepia lactelor pe fiiere puse de printe, alarmelor n ateptare pentru printe i semnalelor n ateptare pentru printe. Altfel spus, imediat dup fork cele dou procese vor avea segmente de cod, date i stiv identice, aceleai fiiere deschise, etc. Obs. Atunci cnd se creeaz un proces cu funcia fork, nu trebuie fcut nici o presupunere legat de ordinea de execuie a celor dou procese nrudite. Aceast ordine este dependent de algoritmul de planificare a proceselor. Dac se dorete impunerea unei anumite ordini trebuie s se recurg la mecanisme de sincronizare ntre cele dou procese. 1. #include <sys/types.h> 2. #include <unistd.h> 3. 4. int global = 50; 5. 6. int main(void) { 7. pid_t pid; 8. int local = 30; 9. 10. if ((pid = fork()) < 0) { 11. printf("Eroare fork.\n"); 12. exit(1); 13. } 14. else if (pid == 0) { 15. global++; 16. local++; 17. } 18. else 19. sleep(2); 20. 21. printf("PID=%d, global=%d, local=%d\n", getpid(), global, local); 22. exit(0); 23. } n linia 10 se apeleaz funcia fork. Restul programului va fi executat de ambele procese astfel: procesul printe execut liniile de cod 14, 19 (deoarece valoarea returnat de fork n variabila pid este mai mare dect 0), 21 i 22, iar procesul fiu execut liniile 14-16 (deoarece pentru fiu pid = 0), 21 si 22. Scopul apelului sleep(2) din linia 19 este de a adormi procesul printe pentru 2 secunde, astfel nct

13

procesul fiu s se termine naintea sa. Execuia acestui program afieaz urmtoarele informaii: $ ./ex1_l2 PID=3272, global=50, local=30 PID=3340, global=51, local=31 Informaiile afiate confirm faptul c, iniial, procesul fiu deine o copie a segmentului de date iniializate n procesul printe, deoarece pentru ambele procese global = 50 i local = 30. Funcia fork poate eua din urmtoarele motive: a) dac n sistem sunt deja prea multe procese; b) dac se depete numrul maxim de procese acceptat pentru un anumit utilizator. Principalele aplicaii n care se solicit utilizarea funciei fork sunt: a) aplicaii server care primesc cereri de la clieni, creeaz cte un proces pentru o cerere i paseaz cererea noului proces, urmnd ca acesta s o soluioneze; b) aplicaii care trebuie s lanseze n execuie un alt program, simultan cu continuarea propriei execuii; un exemplu de o astfel de aplicaie este interpretorul de comenzi. Funcia vfork a fost introdus pentru a optimiza procedura de creare a unui proces fiu. Dac procesul fiu urmeaz s lanseze n execuie un program, toate resursele duplicate la creare se pierd. Rezult c, ntr-o astfel de situaie, s-a pierdut inutil timp cu copierea tuturor resurselor procesului printe. Funcia vfork elimin aceast potenial risip de resurse prin crearea unui proces fiu ce partajeaz acelai spaiu de adresare cu procesul printe. Procesul printe este pus n ateptare pn cnd fiul va executa un program sau va apela funcia exit. Pentru a exemplifica modul de utilizare a funciei vfork se va rescrie programul din tab. 2.1, utiliznd funcia vfork n loc de fork. Programul rezultat este prezentat n tab. 2.2. 1. #include <sys/types.h> 2. #include <unistd.h> 3. 4. int global = 50; 5. 6. int main(void) { 7. pid_t pid; 8. int local = 30; 9. 10. if ((pid = vfork()) < 0) { 11. printf("Eroare fork.\n"); 12. exit(1); 13. } 14. else if (pid == 0) { 15. global++; 16. local++; 17. } 18. 19. printf("PID=%d, global=%d, local=%d\n", getpid(), global, local);

14

20. exit(0); 21. } Ateptarea terminrii unui proces (wait, waitpid) Atunci cnd un proces i termin execuia (printr-un apel exit, _exit sau abort), procesul printe este informat asupra acestui fapt i poate prelua starea de terminare a procesului fiu (cu scopul de a determina condiiile n care s-a terminat acesta) cu ajutorul unui apel de tip wait. Pn la momentul execuiei unui apel wait nucleul pstreaz un minimum de informaii despre procesul terminat (PID-ul, starea de terminare, etc.). Starea unui proces din momentul terminrii i pn la execuia unui apel wait de ctre printe se numete stare zombie. Situaia prezentat anterior este o situaie normal, n care un proces fiu se termin naintea procesului printe. Dac procesul printe se termin naintea fiului (de exemplu, utilizatorul lanseaz un proces n fundal i apoi prsete sistemul prin logout), nucleul va modifica informaiile tuturor proceselor fii astfel nct, dup modificare, toate aceste procese vor avea ca printe procesul init (proces lansat n execuie la iniializarea sistemului). Procesul init va avea grij s execute apeluri wait, eliminnd astfel posibilitatea ca memoria s rmn ocupat cu informaiile despre procesele orfane terminate. Exist dou apeluri de tip wait, cu prototipurile #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); Diferenele semantice dintre cele dou funcii sunt urmtoarele: a) wait ateapt terminarea oricrui proces fiu al procesului apelant, n timp ce waitpid permite precizarea unor condiii legate de identitatea procesului a crui terminare este ateptat. b) wait conduce la blocarea procesului apelant pn la terminarea unui fiu, pe cnd waitpid are o opiune ce previne blocarea procesului apelant. Dac status este diferit de NULL, cele dou funcii stocheaz starea de terminare a procesului fiu n locaia spre care pointeaz status. Prelucrarea strii de terminare se poate face cu ajutorul unor macrouri definite n sys/wait.h, care permit determinarea codului de exit al procesului fiu (in cazul unei terminri normale), a semnalului care a determinat terminarea anormal a procesului fiu, etc. macroul WIFEXITED(*status) returneaz valoarea TRUE dac procesul fiu s-a terminat normal. n acest caz se poate determina codul de exit al fiului cu ajutorul macroului WEXITSTATUS(*status). macroul WIFSIGNALED(*status) returneaz valoarea TRUE dac procesul fiu s-a terminat anormal. n acest caz, prin WTERMSIG(*status) se poate determina numrul semnalului care a cauzat terminarea fiului. macroul WIFSTOPPED(*status) returneaz valoarea TRUE dac procesul fiu este momentan oprit. Prin WSTOPSIG(*status) se obine numrul semnalului care a determinat oprirea procesului fiu. Identitatea procesului a crui terminare este ateptat poate fi condiionat cu ajutorul argumentului pid al funciei waitpid: dac pid = -1, se obine aceeai comportare ca cea a funciei wait. 15

dac pid > 0, se ateapt terminarea procesului fiu cu PID-ul pid. dac pid = 0, se ateapt terminarea oricrui proces fiu din grupul procesului apelant. dac pid < -1, se ateapt terminarea oricrui proces fiu din grupul avnd id-ul egal cu valoarea absolut a lui pid. Comportamentul funciei waitpid poate fi controlat cu ajutorul argumentului options astfel: dac options = WNOHANG, procesul apelant nu este blocat. dac options = WUNTRACED, waitpid returneaz starea procesului indicat de pid care a fost oprit i a crui stare nu a fost raportat. Cele dou funcii returneaz PID-ul unui proces n cazul execuiei reuite i -1 n cazul execuiei euate. Dac options = WNOHANG, waitpid returneaz valoarea 0. Fiierele Generaliti Ca i n alte sisteme de operare, n Linux informaiile (date sau programe) sunt memorate n fiiere (files). n Linux, numele de fiiere pot avea lungimea de maxim 255 de caractere, literele mici diferind de cele mari (casesensitive). n componena unui nume de fiier pot intra orice caractere, exceptnd "/", care reprezint delimitatorul de nume de director. Linux, ca dealtfel orice sistem UNIX, nu utilizeaz ideea de extensie (cele trei caractere prefixate de punct care ncheie numele unui fiier, sub sistemele DOS/Windows) pentru a determina tipul unui fiier. Totui, anumite aplicaii pot necesita utilizarea unor extensii specifice (e.g. compilatorul de C sau serverul/navigatoarele Web). Fiierele pot fi de mai multe tipuri: obinuite sau ordinare, coninnd date, programe etc. Ele sunt de dou feluri: o fiiere text, structurate pe linii, fiecare dintre aceasta coninnd caractere ASCII afiabile, i terminnduse cu caracterul special Carriage Return (CR); o fiiere binare, folosite pentru stocarea de cod executabil, informaii multimedia, baze de date, date diverse etc. Intern, fiierele ordinare sunt identificate prin intermediul unui numr denumit inumber, un index dintrun ir de inoduri. Inodurile conin atribute asociate fiecrui fiier, dintre care enumerm pe cele mai importante: o tipul; o proprietarul (identificatorul utilizatorului care deine fiierul, UID, precum i identificatorul grupului care deine fiierul, GID); o permisiunile de acces, de trei tipuri: citire (Read), scriere (Write) i execuie (eXecute), grupate n trei categorii: pentru proprietar (user), pentru grupul care l deine (group) i ali utilizatori (others); o lungimea; o timpii ultimei operaiuni de accesare, modificare i schimbare a strii (modificarea inodului nsui); o numrul de legturi ctre fiierul respectiv. directoare, care permit structurarea ierarhic a fiierelor; 16

speciale, astfel: o dispozitive, fie ele fizice (discuri, imprimante, mouse, plci de reea etc.) sau virtuale (memoria intern, terminale etc.). Fiierele speciale de tip dispozitiv pot fi orientate caracter caz n care citirile i scrierile se realizeaz direct, cte un caracter, n mod uzual transfernduse cantiti mici de date, sau bloc pentru care citirile i scrierile se realizeaz prin intermediul unor zone de memorie tampon. Pentru exemplificare, terminalele sunt dispozitive de tip caracter (character devices), iar discurile dispozitive de tip bloc (block devices); o pipeuri, constituind mod de transfer de informaii ntre procese locale, practic cozi FIFO (First InFirst Out); o socketuri,utilizate pentru transferul de informaii ntre procese aflate la distan. legturi, "shortcuturi" ctre fiiere sau directoare, pentru o mai uoar regsire sau accesare. Ele sunt percepute de utilizatori ca fiiere avnd nume proprii, dar care se refer de fapt la alte fiiere aflate pe disc. Orice operaie care se execut asupra fiieruluilegtur (exceptnd tergerea) va avea practic efect asupra fiierului indicat de respectiva legtur. Legturile pot fi de dou tipuri: fizice (hard links) i simbolice (symbolic links). Directoarele sunt stocate ca fiiere obinuite, permind astfel aranjarea fiierelor n manier ierarhic. Astfel, un fiier va fi referit printro cale de directoare (path) care va avea n componen nume de directoare delimitate de "/" i la sfrit numele fiierului dorit. Fiecare utilizator are asociat, n cadrul interpretorului de comenzi, un aanumit director curent. Directorul curent are proprietatea c toate fiierele (i subdirectoarele) pe care le conine pot fi identificate prin numele lor, fr a mai fi necesar s se precizeze i calea. Pentru a evita conflictele, un sistem de fiiere nu posed dect un singur director curent la un moment dat. Utilizatorul poate schimba directorul curent n orice moment, dup dorin. Putem avea ci relative care ncep avnd ca punct de referin directorul curent sau ci absolute, acestea din urm fiind prefixate ntotdeauna de "/" i pornind de la directorul rd cin. Directorul rdcin (root) este stabilit atunci cnd se instaleaz sistemul de operare i va conine toate fiierele ce vor fi stocate, ntrun arbore consistent de directoare. Chiar dac vom putea accesa mai multe sisteme de fiiere, posibil aflate pe discuri ori calculatoare diferite, va exista un director rdcin unic, spre deosebire de alte sisteme de operare. n cadrul fiecrui director exist dou fiiere cu numele speciale "." i ".." care semnific directorul curent i directorul printe, respectiv. Aceste dou directoare cu nume special vor putea fi utilizate n specificarea cilor relative. De exemplu, ../tmp va desemna directorul tmp al directorului printe, iar ./doc/manual.pdf va conduce la fiierul manual.pdf aflat n subdirectorul doc al directorului curent. Utilizatorul poate crea legturi care reprezint "scurtturi" ("shortcuts") ctre un fiier sau un director, pentru a putea fi mai uor de regsit sau accesat; astfel, un fiier poate fi regsit n cadrul sistemului de fiiere prin mai multe nume, eventual n directoare diferite. 2.3.2. Comenzi pentru lucrul cu fiiere Principalele comenzi referitoare la directoare sunt: mkdir director creaz un director; rmdir director terge un director gol, n sensul c acesta nu conine dect intrrile . i ..;

17

cd [ director ] schimb directorul curent de lucru n cale; pwd afieaz numele directorului curent; Afiarea coninutului unui director se obine n urma apelrii comenzii ls. Aceasta ofer mai multe opiuni, dintre care le menionm pe cele mai importante: a listeaz i fiierele ascunse (cele ale cror nume ncepe cu caracterul "."); l afieaz formatul lung coninnd informaii suplimentare, cum ar fi cele referitoare la drepturile de acces, proprietar i grup, dimensiunea, data crerii etc.; h are urmtorul efect: dimensiunile fiierelor sunt transformate din octei n kilooctei (K) sau megaoctei (M) pentru a fi mai uor citite de utilizator; R va lista i subdirectoarele, n mod recursiv (aceast opiune va putea fi folosit i n cazul altor comenzi). O alt comand util este file, care determin tipul unui fier: Comanda du afieaz dimensiunile tuturor subdirectoarelor din directorul curent sau dintrun director precizat. Se pot utiliza urmtoarele opiuni: h: dimensiunile sunt scrise n kiloocteisau megaoctei pentru a fi ct mai uorcitite de utilizator. s: se va afia doar dimensiunea directorului curent. a: listeaz i dimensiunile fiierelor. Comanda df listeaz informaii privitoare la spaiul liber al partiiilor de disc. Aceast comand are aceleai opiuni ca i comanda du. Comenzile pentru realizarea operaiunilor de baz cu fiiere sunt: cp realizeaz copierea unui fiier sau grup de fiiere, sintaxa uzual a comenzii fiind: cp surs destinaie. mv mut/redenumete fiiere, avnd aceeai sintax ca i cp; ln, cu sintaxa ln surs destinaie realizeaz o legtur la fiierul surs, avnd numele destinaie. Legturile pot fi hard (se creeaz i o copie a coninutului fiierului; la tergerea copiei, fiierul original e pstrat) sau simbolic (care va conine doar calea ctre fiierul surs; tergerea copiei determin i tergerea originalului). rm terge fiiere, avnd sintaxa rm fiier(e). Pentru toate comenzile de mai sus, exist o serie de opiuni utile: f foreaz ndeplinirea aciunii, fr confirmare din partea utilizatorului sau ignornd erorile care pot surveni; i mod interactiv, interognd utilizatorul dac ntradevr dorete s realizeze ceea ce sa specificat (utilizaio mai ales la rm); v afieaz mai multe informaii la execuia comenzii respective; R mod recursiv, comanda executnduse asupra tuturor subdirectoarelor (foarte periculoas dac apare la rm, mai ales mpreun cu opiunea f).

18

Cutarea fiierelor este posibil cu ajutorul comenzii find. Asupra fiierelor gsite se pot efectua i diverse operaii (de exemplu, execuia unor comenzi). Cutarea se va realiza pornind de la un anumit director care va fi explorat conform criteriilor de cutare alese. Sintaxa general a comenzii find este: find [ cale ] [ expresie ] [ aciune ] Componenta cale reprezint calea de directoare de la care se va ncepe cutarea, expresie semnific o expresie definind criteriul de cutare, iar aciune specific aciunea care va fi efectuat la gsirea unui fiier. Cutarea se poate realiza dup: numele unui fiier se folosete opiunea name specificator, n care specificator reprezint un specificator de fiier (se pot utiliza, desigur, metacaracterele de substituie, precum "*" sau "?"); tipul unui fiier se folosete type tip, unde tip poate fi unul dintre caracterele: f (fiier obinuit), d (director), l (legtur simbolic) etc.; numele proprietarului se utilizeaz opiunea user nume, unde nume poate fi numele sau UIDul proprietarului fiierului; grupul proprietarului se folosete group nume, unde nume poate fi un nume de grup sau un GID. Ca aciune executat la gsirea unui fiier putem avea: afiarea numelui fiierului gsit se folosete opiunea print (implicit); execuia unei comenzi se utilizeaz opiunea exec. Sirul de caractere {} va substitui numele fiierului gsit i va putea fi dat ca argument al comenzii care va fi executat. Vom sfri lista argumentelor pasate comenzii cu caracterul punctvirgul. De exemplu, cutarea tuturor imaginilor GIF din contul utilizatorului curent se va putea face astfel: $ find ~ name '*.gif' print Identificarea fiierelor utilizatorului dragos din directorul /tmp se va putea realiza prin linia: $ find /tmp user dragos print Pentru a terge toate fiierele temporare (al cror nume este terminat cu .bak sau ~) vom putea da urmtoarea comand: find / name *.bak o name *~ exec rm "{}" ";" Sau utilizat ghilimelele pentru ca interpretorul de comenzi s nu interpreteze greit caracterele speciale "{}" sau ";". Opiunea osemnific operatorul logic sau (or). Pot fi precizai i operatorii i (and) prin a i negaie (not) prin caracterul "!".

19

IV.ELEMENTE DE BAZ ALE SCRIPTULUI PHP Scrierea programelor PHP


Programele PHP sunt o mixtura de trei elemente : text, cod HTML si script PHP. Pentru ca paginile ce contin script PHP sa poata fi procesate de modulul PHP implementat in Apache sau alt server de pagini Web este necesar ca paginile sa aiba acea extensie pe care ati specificat-o la incarcarea modulului in serverul de web (standard, extensia implicita este .php). Exemplu de program - deschidem un editor de text si scriem : <HTML> <BODY>Program 1 <BR> <?php echo Salut studentule !!; ?> </BODY> </HTML> Salvam acest fisier in directorul radacina al paginilor de web, sub numele de program1.php, directorul radacina al paginilor web fiind pentru htdocs, creandu-se in cadrul acestuia un folder propriu in care se vor salva toate fisierele dvs. Pentru a deschide o pagina de tip PHP se va scrie in browser-ul de Internet adresa: http://localhost/urmat de numele directorului in care este salvat fisierul. Daca studiem codul vom vedea ca sunt trei categorii de cod : i) ii) iii) <HTML>,<BODY>,<BR> sunt elemente tag din sitaxa HTML ; Program 1 este text Codul cuprins intre <?php si ?> este cod PHP. Delimitatorul uzual pentru PHP este <?php , respectiv inchiderea se face prin ?>. Exista varianta simpla <? , respectiv inchidere prin ?> . Intre aceste taguri trebuie sa existe NUMAI cod PHP.

Cum functioneaza codul? Fisierul program1.php este trimis modulului de php incarcat in serverul de web. Modulul prelucreaza NUMAI ce se afla intre tagurile <?php si ?> restul fiind trimis catre serverul web fara a fi prelucrat sau interpretat. Rezultatul prelucrarii este si el trimis serverului de web care trimite mai departe catre client (browser). Comanda echo este folosita pentru trimiterea catre serverul de web a textului inscris intre cele doua ghilimele sau doua apostroafe. Fiecare linie de cod PHP (dupa terminare) trebuie inchisa de semnul punct-sivirgula (;).

20

LIMBAJUL PHP
Variabila reprezinta un identificator la o locatie de memorie si se foloseste pentru stocarea, prelucrarea si stergerea datelor. Variabilele in PHP sunt apelate folosind prefixul $. $nume=Andrei; Dupa ce am initializat o variabila atribuindu-i o valoare putem folosi acea variabila. echo $nume; Limitari si reguli ale variabilelor In PHP, variabilele sa inceapa cu o litera sau cu un underscore (dupa prefixul $). O alta regula este ca in corpul numelui variabilei sunt acceptate litere, numere si underscore, simboluri precum +,-,* si & nefiind admise. Variabilele in PHP sunt case-sensitive, adica $student este diferit de $Student . Tipuri de date in PHP PHP cuprinde mai multe tipuri de variabile, dintre care cele mai importante sunt cele ce contin valori de tip text si numeric. - string (text) - integer (numeric) - double (numeric) Tipul de data string tot ce este cuprins intre ghilimele la initializare se considera string (chiar si numerele). Exemple: $nume=Ionescu; $nr=5; Concatenarea stringurilor se face prin operatorul . . Date de tip numeric In PHP exista 2 tipuri de date numerice : integer si double. Integer sunt numere fara virgula, in timp ce double reprezinta numere cu zecimale. Constante si conversii Constantele sunt scrise prin conventie cu MAJUSCULE.Constantele se pot afisa avand grija sa nu se foloseasca semnul $. Structuri repetitive (vectori) reprezinta un set de variabile cu acelasi nume, dar un index diferit. Fiecare membru al unui vector este numit element. Diferentierea dintre elemente se face cu ajutorul parantezelor patrate [] in mijlocul carora este un index, ce poate fi de tip numeric sau un string.

21

FUNCTII IN PHP Functiile sunt portiuni de cod definite pentru a executa anumite sarcini. Ele pot fi chemate de mai multe ori pe parcursul executiei unui program, primind argumente (valori de intrare) cu ajutorul carora executa cateva operatii dupa care returneaza o valoare. Functiile transfera orice valoare primita ca argument in variabile temporare numite parametrii ce pot fi folositi numai pe parcursul executiei functiei. Definirea unei functii se face astfel: function <nume_functie> (<parametrii>) {//cod //cod} Exemplu: function tva($lei) {$total=$lei*1.19; return $total;} Apelarea acestei functii de forma: echo tva(100000); va produce rezultatul 119000. Functia poate fi apelata si fara argumente : function tva() {echo Valoarea tva este de 19%;} Locul variabilelor in program Variabilele din interiorul functiilor nu se pot vedea in exteriorul lor (se distrug la terminarea functiei) decat daca sunt transmise ca referinta. Variabilele pot fi : - globale - locale Variabilele globale sunt variabilele ce isi mentin existenta pe parcursul executiei intregului program, in timp ce variabilele locale sunt variabilele din interiorul functiilor ce isi inceteaza existenta dupa terminarea functiei. Daca dorim o vizualizare globala a variabilelor locale functiei avem 2 posibilitati : - le trimitem ca referinta - le asociem parametrul global inainte de a opera cu variabilele sau folosind vectorul $GLOBALS[] Variabilele statice sunt folosite atunci cand este necesar ca acestea sa existe pe parcursul mai multor apelari ale functiilor, fara a mai fi necesara o reatribuire. <? function vizitatori() {return ++$vizitatori;} ?> Rezultatul acestui exemplu este la apelul de forma: echo vizitatori(); - 1 vizitator, iar daca se mai executa inca o data atunci rezultatul va fi tot 1, deoarece variabila este statica. Este destul ne neplacut ca pe parcursul unei numaratori sa se reseteaza variabila la fiecare apelare a functiei. Pentru a asigura persistenta variabilei, se foloseste cuvantul cheie static.

22

<? function vizitatori(){ static $vizitatori; return ++$vizitatori;} ?> Rezultatul acestei functii la prima apelare prin echo vizitatori(); - va fi 1 vizitator, iar prin repetarea aplelului se va afisa 2 vizitatori. Lucrul cu clientul PHP poate prelua interactiv datele de la client prin intermediul formularelor. Elementele cele mai importante ale unui formular sunt : - ACTION transmite serverului la ce pagina sa se duca si sa transmita datele completate in momentul in care utilizatorul a trimis formularul. - METHOD reprezinta modul in care datele sunt trimise serverului. Metoda GET adauga variabilele in campul de adresa al paginii web. Metoda POST trimite ascuns variabilele catre pagina descrisa la ACTION. In cadrul formularului putem avea campuri : - text - textarea - list box (select) - radio - checkbox - hidden - password Aceste campuri se trimit catre scriptul PHP printr-un buton de tip submit

OPERATII ASUPRA DATELOR DIN CADRUL UNEI BAZE DE DATE Crearea unei baze de date se face in mod vizual, prin accesarea in cadrul unui browser de internet a adresei: http://localhost/phpmyadmin. Conectarea la server-ul de date se face prin comanda: mysql_connect(localhost,root,), unde localhost este calculatorul local pe care se afla baza de date, root este numele utilizatorului care se conecteaza la BD si acesta este pentru triada PHP-Apache-MySql. In cazul in care site-ul se posteaza pe un alt server, atunci utilizatorul va avea un nume si o parola care va fi introdusa intre ghilimele. Selectarea bazei de date se face prin comanda mysql_select_db(nume baza de date). Interogarile aplicate unei tabele sau mai multor tabele se face prin comanda: mysql_query(sir de caractere), unde sir de caractere poate fi o selectie din cadrul

23

unei tabele - select, poate fi o inserare de date dintr-un formular in cadrul tabelei insert into. Selectarea datelor din cadrul unei tabele se face prin comanda SELECT. Selectarea se poate face pentru toate campurile din tabela sau se poate face selectie dupa o anumita conditie. Exemple: $interogare=mysql_query(SELECT * FROM student); - va selecta toate campurile din cadrul tabelei student si interogarea este atribuita unei variabile numita interogare. $interogare1=mysql_query (SELECT nume_student FROM student); va selecta coloana nume_student din cadrul tabelei student. $interogare2= mysql_query (SELECT nume_student FROM student WHERE nota=$valoare); - va selecta numele studentilor din cadrul tabelei student, unde nota va avea valoarea data de variabila $valoare. Introducerea datelor in cadrul campurilor tabelei se face prin comanda INSERT INTO. Exemple: $introducere1=mysql_query(INSERT INTO formular (`nume` , `prenume`, `varsta`) VALUES ('Ivascu', 'Valentin', '20')); - insereaza in tabela formular in campurile nume, prenume si varsta valorile Ivascu, Valentin si 20 $inserare2=mysql_query ('insert into categorie_produs (denumire_categorie) values ("'.$_POST[categorie].'")'); - insereaza in campul denumire_categorie al tabelei categorie_produs valoarea preluata din cadrul unui label identificat cu numele categorie. Modificarea continutului uneia sau mai multor coloane din cadrul unei inregistrari curente se face prin comanda UPDATE. UPDATE nume_tabel SET col1=valoare noua [WHERE conditie] Exemple: UPDATE fructe SET starea=stricat va inlocui in tabela fructe, starea acestora cu valoarea stricat. UPDATE fructe SET nume_fruct=mar WHERE nume_fruct=mare va inlocui in tabela fructe, toate denumirile de fructe gasite cu mare in mar. UPDATE fructe SET stoc=stoc-$_POST[cantitate] va actualiza pentru toate fructele din tabela fructe campul stoc cu diferenta dintre valoarea veche a acestuia si valoarea data de variabila cantitate ce va fi preluata din formular.

24

UPDATE fructe SET stoc=stoc-$_POST[cantitate] WHERE id_fruct=1 va actualiza pentru fructul cu id-ul1 din tabela fructe campul stoc cu diferenta dintre valoarea veche a acestuia si valoarea data de variabila cantitate ce va fi preluata din formular. O alta metoda de a modifica inregistrarile unei tabele se poate face si prin comanda REPLACE, care insa se foloseste atunci cand inregistrarea care se doreste inserata contine o valoare de cheie primara care se potriveste cu o inregistrare care exista deeja in tabel. In acest caz se va sterge inregistrarea din tabela si se va introduce cea noua. REPLACE INTO nume_tabel (lista_coloane) VALUES (valori pentru coloane); Exemplu: REPLACE INTO investitii VALUES (1, constructie,200) va inlocui in tabela investitii randul a carui cheie primara are valoarea 1 cu noile valori Stergerea datelor din tabele se face prin comanda DELETE, cu forma: DELETE FROM nume_tabel [WHERE o conditie adevarata] Exemple: DELETE FROM fructe; - va sterge din tabela fructe toate inregistrarile DELETE FROM fructe WHERE stare=stricat; - va sterge din tabela fructe toate produsele care au starea de stricat. Dupa interogarea tabelelor trebuie sa se faca regasirea datelor din tabela, acest lucru realizandu-se prin functia: mysql_fetch_array(rezultatul interogarii), mysql_fetch_rows(rezultatul interogarii) Numarul de coloane ce rezulta dintr-o interogare este redat de functia mysql_num_rows() si se foloseste in partea de autentificare a unui user. $result=mysql_query(select * from info); echo Numarul de inregistrari este : .mysql_num_rows($result); Exemple: Exemplu 1: $link=mysql_connect(localhost,root,);// se conecteaza la serverul de date mysql_select_db(studenti); // selecteaza tabela studenti $result=mysql_query(select * from info);// selecteaza toate campurile din tabela info for ($i=0;$i<mysql_num_rows();$i++) //instructiune repetitiva ciclu cu contor care porneste de la variabila i ce are valoarea 0 pana ce aceasta variabila ajunge la numarul de inregistrari din cadrul tabelei echo mysql_result($result,$i); // afiseaza continutul liniei de celule de pe pozitia i din cadrul rezultatului interogarii

25

mysql_close($link);//inchide conexiunea la server Exemplu 2: $link=mysql_connect(localhost,root,); mysql_select_db(studenti); $result=mysql_query(select * from info); while($date=mysql_fetch_array($result)) // extrage din cadrul rezultatului interogarii randurile echo $date[nume]./.$date[1];// afiseaza prima valoarea campului nume supra valoarea primului camp din carul tabelei info mysql_close($link);

26

V.INSTRUCTIUNILE LIMBAJULUI C++


1. INSTRUCTIUNEA EXPRESIE. Exemplul1. Interschimbarea continutului a 2 variabile care au fost initial citite. #include<iostream.h> #include<conio.h> void main() { int a,b,m; clrscr(); cout<<"a=" ; cin>>a; cout<<"b="; cin>>b; m=a,a=b,b=m; cout<<"a="<<" "<<a<<endl; cout<<"b="<<" "<<b; getch(); } Exemplul2. Se citesc 3 valori intregi a,b,c si se afiseaza media lor aritmetica #include<iostream.h> #include<conio.h> void main() { int a,b,c; float m; clrscr(); cout<<"a=" ; cin>>a; cout<<"b="; cin>>b; cout<<"c=" ; cin>>c; m=float(a+b+c)/3; cout<<"media aritmetica ="<<" "<<m; getch(); }

27

2. INSTRUCTIUNEA IF. Forma generala: if (expresie) instructiune1 else instructiune2 Se evalueaza expresia, daca este adevarata se executa instructiune1, daca este falsa se executa instructiune2 Exemplul 1. Calculeaza maximul dintre 2 numere citite #include<iostream.h> #include<conio.h> void main() { int a,b,max; clrscr(); cout<<"a=" ; cin>>a; cout<<"b="; cin>>b; if(a>b) max=a; else max=b; cout<<"numarul mai mare este "<<" "<<max; getch(); } Exemplul 2. Se citesc coeficientii a, b, c ale unei ecuatii de gradul doi si se precizeaza natura radacinilor si semnul lor. #include<iostream.h> #include<math.h> #include<conio.h> void main() { float a,b,c,d,s,p; clrscr(); cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c; d=b*b-4*a*c; s=float(-b/a); p=float(c/a); cout<<"Discriminantul ecuatiei D="<<d<<endl; cout<<"Produsul radacinilor P="<<p<<endl; cout<<"Suma radacinilor S="<<s<<endl; if(d<0) cout<<"Ecuatia nu are solutii reale"; else { if(d==0) {if(s>0) cout<<"Ecuatia are 2 solutii reale egale si pozitive"; else cout<<"Ecuatia are 2 solutii reale egale si negative"; } else if(p>0) {if(s>0) cout<<"Ecuatia are 2 solutii reale pozitive"; else cout<<"Ecuatia are 2 solutii reale negative"; } 28

else cout<<"Ecuatia are 2 solutii reale de semne opuse"; } getch(); } Exemplul 3. Rezolvarea unei ecuatii de gradul 1. #include<iostream.h> #include<conio.h> void main() { float a,b,x; clrscr(); cout<<"a=" ; cin>>a; cout<<"b="; cin>>b; if (a!=0) {x= -b/a ;cout<<"x="<<" "<<x; } else if(b==0) cout<<"ecuatia are o infinitate de solutii"; else cout<<"ecuatia nu are solutie"; getch(); } Exemplul 4. Rezolvarea unei ecuatii de gradul 2. #include<iostream.h> #include<conio.h> #include<math.h> void main() { float a,b,c,d,x1,x2,x; clrscr(); cout<<"a=" ; cin>>a; cout<<"b="; cin>>b; cout<<"c=" ; cin>>c; d=float( b*b-4*a*c);cout<<"discriminantul ecuatiei este"<<" "<<sqrt(d)<<endl; if(d<0) {cout<<"ecuatia nu are solutii reale";} else if (d>0) { x1=(-b+sqrt(d)) / (2*a) ; x2=(-b-sqrt(d)) / (2*a); cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;} else {x=float(-b/2*a);cout<<"ecuatia are solutie unica x=x1=x2="<<" "<<x;} getch(); }

29

3. INSTRUCTIUNEA SWITCH. Forma generala a instructiunii: switch (expresie) { case e1 : secventa 1 ; break; case e2 : secventa 2 ; break; .............................................. case en : secventa n ; break; default : secventa n+1; } Se evalueaza expresie , daca este egala cu una din expresiile e1, e2, ...en se executa secventa corespunzatoare expresiei s1, s2, ...sn, iar daca nu este egala cu una din aceste expresii se executa numai secventa n+1 Exemplul 1. #include<iostream.h> #include<conio.h> void main() { int i; clrscr(); cin>>i; switch(i) { case 1: cout<<"Am citit 1";break; case 2: cout<<"Am citit 2";break; default: cout<<"Am citit altceva"; } getch(); } Exemplul2. Se afiseaza natura sol. unei ec. de gr.2 in functie de semnul lui . #include<iostream.h> #include<conio.h> void main() { int a,b,c,d; clrscr(); cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c; d=b*b-4*a*c; if(d>=0) { switch(d) { case 0: cout<<"Ecuatia are o solutie dubla";break; default:cout<<"Ecuatia are doua solutii reale diferite"; }

30

} else cout<<"Ecuatia nu are solutii reale"; } 4. INSTRUCTIUNEA WHILE. Aceasta instructiune permite programarea ciclurilor cu test initial. Forma generala este: while (expresie) {....... instructiuni } Se evalueaza expresie, daca este adevarata se executa {....instructiuni} dupa care se revine la evaluarea expresiei , daca este falsa se trece la instructiune urmatoare. Exemplu. Executarea unui program intr-un ciclu repetat pana la apasarea unei anumite taste(se introduc coeficientii unei ec. de gr.2 si se afiseaza solutiile de "n" ori pina la apasarea tastei "q") #include<iostream.h> #include<conio.h> #include<math.h> void main() { float a,b,c,d,x1,x2,x; int tasta; while(tasta!='q') { clrscr(); cout<<"a=" ; cin>>a; cout<<"b="; cin>>b; cout<<"c=" ; cin>>c; d=float( b*b-4*a*c);cout<<"discriminantul ecuatiei este"<<" "<<sqrt(d)<<endl; if(d<0) {cout<<"ecuatia nu are solutii reale";} else if (d>0) { x1=(-b+sqrt(d))/(2*a) ; x2=(-b-sqrt(d))/(2*a); cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;} else {x=float(-b/2*a);cout<<"ecuatia are solutie unica x=x1=x2="<<" "<<x<<endl;} cout<<"Pentru continuare apasa o tasta"<<endl; cout<<"Pentru iesire apasa tasta q"; tasta=getch(); } }

31

5. INSTRUCTIUNEA DO WHILE. Instructiunea permite programarea ciclurilor cu test final. Forma generala este: do { instructiuni } while ( expresie ) Se executa { instructiuni } , se evalueaza expresie, daca este adevarata se executa din nou {instructiuni}, iar daca este falsa executia instructiunii do se termina. Exemplu: Se citeste numarul natural n si se afiseaza suma primelor n numere naturale #include<iostream.h> #include<conio.h> void main() { long n, tasta,s=0,i=1; while(tasta!='q') { clrscr(); cout<<"n=";cin>>n; do { s=s+i; i=i+1; } while(i<=n); cout<<"Suma primelor n numere naturale este"<<" "<<s<<endl; cout<<"Pentru a continua apasa o tasta"<<endl<<"Pentru a iesi din program apasa tasta 'q'"; tasta=getch(); } } 6. INSTRUCTIUNEA FOR Se utilizeaza cel mai fracvent pentru programarea ciclurilor cu test initial. Forma generala: for( eINITIALIZARE; eTEST; eINCREMENTARE) instructiune eINITIALIZARE - se evalueaza o singura data pentru initializarea variabilei de ciclare inaintea primului ciclu ;

32

eTEST - este evaluata inaintea fiecarui ciclu pentru a testa daca se executa instructiunea subordonata si reprezinta conditia de iesire din ciclu; eINCREMENTARE - se evalueaza la sfirsitul fiecarui ciclu pentru incrementarea variabilei de ciclare. Principiul de executie: Se evalueaza eINITIALIZARE (numai la prima rulare), se evalueaza eTEST , daca este adevarata se executa instructiunea subordonata for, se evalueaza eINCREMENTARE si se revine la evaluarea expresiei eTEST. Daca eTEST este falsa se trece la urmatoarea instructiune (se termina executarea instructiunii for) Observatie. Daca expresia eTEST este vida se executa un ciclu infinit. Pentru a iesi din acest ciclu : in DOS se tasteaza CTRL+PAUSE in WINDOWS se tasteaza CTRL +ALT + DEL Exemplul 1. Se introduce de la tastatura numarul n si se calculeaza suma si produsul primelor n numere #include<iostream.h> #include<conio.h> void main() { N2 int i,n,tasta; long double a,b; while(tasta !='q') { clrscr(); cout<<"Introduceti numarul"<<"";cin>>n; a=b=1; for(i=2;i<=n;i++) {a*=i;b+=i;} cout<<"suma="<<b<<endl;cout<<"produsul="<<a<<endl; cout<<"Pentru iesire apasa tasta q"; tasta=getch(); } } Observatie. Variabila n poate fi definita la inceput fara a mai trebui introdusa de la tastatura utilizand #define n valoare (comanda se scrie inainte de void main() ) Exemplul2. Afisarea literelor alfabetului #include<iostream.h> #include<conio.h> void main() { char litere; for(litere='A';litere<='Z';litere++)cout<<litere<<" "; getch();

33

} Exemplul3. Afiseaza toate patratele si radicalii numerelor naturale pina la numarul n introdus de la tastatura. #include<iostream.h> #include<conio.h> #include<math.h> void main() { float i,n,a,b; clrscr(); cout<<"n=";cin>>n; a=b=0; for(i=1 ;i<=n;i++) { a=sqrt(i) ; b=i*i; cout<<"Patratul numarului"<<" "<<i<<" = "<<b<<'\t'<< "Radicalul numarului"<<" "<<i<<" ="<<a<<endl; } getch(); }

34

VI.Programarea n Limbajul Java

Caracteristicile de baza al limbajului Java

A.

Folosirea n medii de retea distribuite Java a fost proiectat pentru un mediu complex cum este Internetul si de aceea trebuie sa poata rula pe platforme eterogene distribuite. Acest lucru este posibil deoarece : este neutru din punct de vedere arhiectural = programele pot fi rulate pe orice platforma care are instalat mediul Java are un grad ridicat de portabilitate = contine obictecte care pot fi folosite pe platforme eterogene si respecta standardele IEEE (Institue of Electrical and Electronics Engineers) pentru structurile de date (folosirea ntregilor, a numerelor n virgula mobila, a sirurilor, etc) este distribuit = poate folosi att obiecte memorate local ct si obiecte stocate pe calculatoare aflate la distanta este compatibil cu mediile de lucru n retea (poate fi utilizat n retele complexe) si accepta direct protocoalele de retea obisnuite cum ar fi FTP si HTTP

B.

Asigurarea performantei ridicate compilatorul si sistemul de executie ofera o viteza ridicata rularii programelor are ncorporate posibilitati de executie multifilara (rularea simultana a mai multor procese) folosind un sistem de acordare de prioritati proceselor ce trebuie executate. Printre procesele care ruleaza n fundal sunt cele de colectare a gunoiului si de gestionare a memoriei. Refolosirea codului si fiabilitatea Java este un limbaj dinamic, lucru asigurat prin ntrzierea legarii obiectelor si legarea dinamica a claselor n timpul executiei, ceea ce mpiedica aparitia erorilor n cazul schimbarii mediului de lucru dupa compilarea programului sursa. Fiabilitatea este asigurata prin eliminarea pointerilor, prin folosirea verificarii dinamice a limitelor si prin gestionarea automata a memoriei, nlaturndu-se posibilitatea fisurilor si violarilor de memorie. O alta cale de evitare a erorilor este verificarea structurilor de date att la compilare ct si n timpul executiei. Asigurarea securitatii Interzice accesul la stiva sistemului, la zona libera de memorie si la sectiunile protejate de memorie Verifica validitatea codului semnalnd urmatoarele: Violarile de acces Conversiile ilegale de date Valori si parametri incorecti Modificarea claselor sau folosirea incorecta a acestora

C.

D.

35

Depasirea stivei n partea superioara sau inferioara Activitati suspecte sau neautorizate
Structura limbajului Java Aplicatii si miniaplicatii

miniaplicatie (applet) = program Java creat pentru a fi folosit n sitemul WWW.


Applet-urile necesita un program de vizualizare extern : browser Web sau un program specializat de vizualizare (applet viewer). aplicatie (app) = program Java care poate fi rulat independent Spatii de nume Pentru evitarea conflictelor legate de spatiile de nume, fiecare componenta a unui nume este imbricata n conformitate cu unul din urmatoarele niveluiri: 0 - spatiul de nume al pachetului 1 - spatiul de nume al unitatii de compilare 2 - spatiul de nume al tipului 3 - spatiul de nume al metodei 4 - spatiul de nume al blocului local 5 - spatiul de nume al blocului imbricat Interpretorul este responsabil pentru mentinerea si translatarea spatiului de nume. Spatiile de nume sunt separate prin punct. Ex. java.lang.System.out.println() - calea completa Pachetele Java din biblioteca originala de pachete sunt referite prin java uramt de numele pachetului (java.lang). In cazul n care nu exista confuzii poate fi folosita o varianta prescurtata a apelului (interpretorul foloseste prima potrivire de nume descoperita); apelul la println() se putea face si prin System.out.println() Structuri de denumire a programelor Fisiere sursa .java (compilare) cod de octeti format din unitati de compilare; Pentru fiecare clasa declarata n codul sursa este generata o unitate de compilare stocata ntr-un fisier separat cu extensia .class Unitatile de compilare Java contin : instructiuni de pachet instructiuni de import declaratii ale claselor si interfetelor (structura de baza a unui program Java) Instructiuni de pachet Sunt folosite pentru a preciza pozitia pachetelor folosite ntr-o aplicatie. In mod implicit Java foloseste calea de acces curenta si presupune ca fisierele cu cod compilat se afla n directorul curent la rularea programului. 36

Pentru ca obiectele si clasele sa respecte o structura ierarhica diferita de cea prestabilita trebuie inclusa n codul sursa o instructiune de pachet : package NumePachet In cazul cnd se folosesc mai multe niveluri instructiunea va avea forma: package MyPackages.NumeSubPachet Numele de pachete de pe fiecare nivel al spatiului de nume trebuie sa reflecte structura de directoare a sistemului de fisiere, deoarece Java transforma numele pachetelor n cai de acces pentru localizarea claselor si a metodelor asociate pachetelor. De exemplu ntr-un sistem Windows 95/NT numele de pachet MyPackages.Pachetel va fi transformat n directorul aMyPackagesaPachetel unde Java va cauta pachetul respectiv. Instructiuni de import Java contine un set de functii principale, accesibile global, si care sunt localizate n pachetul java.lang. Pentru a obtine accesul la alte pachete, clase si obiecte care nu se afla n aceasta biblioteca se folosesc instructiuni de import, care ajuta compilatorul Java sa regaseasca metodele corespunzatoare si sa evite conflictele de nume. De exemplu, pentru a apela metoda Button din pachetul java.awt (awt = Abstract Window Toolkit) se foloseste instructiunea java.awt.Button. O metoda mai eficienta este de a importa metoda import java.awt.Button si de a apela metoda doar prin instructiunea Button. Cea mai uzuala metoda de import este importul la cerere, care spune compilatorului sa importe numai clasele de care este nevoie n program : import java.awt.* pentru a nu face disponibile toate clasele din java.awt. Declaratiile de clasa In Java toate clasele sunt derivate dintr-o clasa sistem numita Object. Object este radacina ierarhiei de clase, toate metodele si variabilele clasei fiind disponibile celorlalte clase. In mod implicit toate clasele sunt private. Declaratiile de clasa, fara modificatori de acces, au aceeasi sintaxa ca n C++ : class nume_clasa { //metode si variabile asociate clasei } Java accepta numai mostenirea simpla a claselor, fiecare clasa avnd asadar un singur parinte, numit superclasa. In scimb, Java permite mostenirea multipla a metodelor claselor, prin intermediul interfetelor claselor. Declaratiile de interfata Interfetele sunt clase abstracte. Diferenta majora fata de o clasa este aceea ca interfetele nu pot stoca date. De asemenea, nu pot contine implementari ale metodelor ci doar declaratii ale acestora. O clasa poate sa implementeze una sau mai multe interfete si poate sa partajeze aceaasi interfata cu alte clase sau instante ale unei clase. Declaratiile de interfata fara modificatori au urmatorul format: interface nume_interfata {

37

//metode si variabile statice asociate interfetei } Declaratiile de clase care folosesc interfete au urmatorul format: class nume_clasa implements nume_interfata { //corpul clasei } Un alt format poate fi: class nume_clasa implements nume_interfata1,...,nume_interfataN { //corpul clasei } Singura deficienta a folosirii interfetelor este aceea ca necesita legare dinamica, ceea ce reduce performantele executiei. Sunt nsa mai eficiente dect mostenirea multipla din C++, deoarece reduc suprasarcina de executie.

CLASE Clase pentru aplicatii


Executia programului unei aplicatii ncepe prin apelul metodei main() din clasa primara. Clase pentru miniaplicatii Miniaplicatiile constituie extensii ale unei clase deja existente java.applet.Applet. Structura clasei unui applet se bazeaza pe urmatoarele metode : init() start() stop() paint() init() apelata numai atunci cnd applet-ul este ncarcat pentru prima data ntr-un program de vizualizare folosita pentru initializari si prelucrarea elementelor din linia de comanda are format fix public void init() { ... } declararea sa nu este necesara, daca se face se redefineste metoda init() din clasa java.applet.Applet start() apelata dupa metoda init() atunci cnd miniap. este ncarcata pentru prima data sau cnd executia ei a fost suspendata si trebuie reluata are format fix public void start() { ... } declararea sa nu este necesara, daca se face se redefineste metoda start() din clasa java.applet.Applet 38

stop() apelata de fiecare data cnd o miniap. trebuie oprita sau supendata are format fix public void stop() { ... } declararea sa nu este necesara, daca se face se redefineste metoda stop() din clasa java.applet.Applet paint() folosita pentru desenarea sau redesenarea ecranului este apelata automat de metoda repaint(), dar poate fi apelata si explicit are format fix public void paint(Graphics g) { ... } declararea sa, desi nu este ceruta de compilator, este necesara deoarece aici se fac afisarile pe ecran (redefineste metoda paint() din clasa java.applet.Applet) Exemplu de applet care foloseste toate cele 4 metode : import java.awt.Graphics; public class Counter extends java.applet.Applet { int counter; boolean run; public void init() { counter = 0; } public void start() { run = true ; while (run == true) { counter ++ ; repaint(); try { Thread.sleep(1000); } //face o pauza de o secunda catch(InterruptedException e) {} } } public void stop() { run = false; } public void paint( Graphics g ) { g.drawString("counter = " + counter, 10, 10); } } Modificatori

de tip

: public class NumeClasa { ... }

39

(acces permis si claselor din afara propriului pachet) de acces : abstract class NumeClasa { ... } (creare de clase sablon - supraclase pentru alte clase) Ex: Variabile folosite de clase

variabile de instanta variabile de clasa


Instante predefinite :

: specifice fiecarei instante : declarate statice, au aceeasi valoare pt. toate instantele

null, this - desemnarea explicita a instantei curente a unei variabile super - este o referinta la superclasa clasei curente Ex: class Animal { static String nume = null; public void main( String argsst) { Animal a = new Animal(); if (a.nume == null) introNume(Introduceti un nume:) } } void introNume ( String prompt ) { StringBuffer nume; char ch = a0; nume = new StringBuffer(); System.out.println( prompt ); System.out.flush(); while (ch != an) { try { ch = (char) System.in.read(); } catch (IOException e) {}; nume.append( ch ); } this.nume = nume.toString(); } class Pisica extends Animal { void introNumePisica { super.introNume(Introduceti numele pisicii:); } }

Creearea unei aplicatii independente

40

Toate aplicatiile Java contin o metoda main(), spre deosebire de miniaplicatii. class FirstApp { public static void main( String argsst) { System.out.println(Aplicatie independenta); } } Creearea structurii de fisiere si denumirea fisierelor sursa cream un director java_apps si subdirectorul first cream codul sursa ntr-un fisier cu extensia .java fiserul care contine codul sursa trebuie sa aiba acelasi nume cu clasa primara a aplicatiei (clasa care contine metoda main()) obs: Java face distinctie ntre literele mari si mici. C:ajava_appsafirstaFirstApp.java Compilarea aplicatiei se foloseste compilatorul Java, javac compilatorul creeaza cte un fisier separat pentru fiecare clasa a programului; acestea au extensia .class si sunt plasate n acelasi director cu fisierele sursa javac FirstApp.java -> FirstApp.class

Rularea aplicatiei java FirstApp.class Creearea unei miniaplicatii (applet) Creearea structurii de fisiere si compilarea applet-urilor sunt identice ca n cazul aplicatiilor. Difera n schimb structura programului si modul de rulare al acestuia. import java.awt.* ; import java.applet.* ; public class FirstApplet extends Applet { Image NewImage; public void init() { resize(400, 400); NewImage = getImage(getCodeBase(), New.gif) } public void paint (Graphics g) { g.drawImage(NewImage, 0, 0, this) } } Applet-urile nu ruleaza independent. Ele pot fi rulate doar prin intermediul unui browser : Internet Explorer, Netscape sau printr-un program special cum ar fi appletviewer-ul din setul JDK. 41

Creearea unui fisier HTML pentru miniaplicatie (exemplu.html) <html> <head> <title>First Java Applet</title> </head> <body> <hr> <applet code=FirstApplet.class width=400 height=400> </applet> <hr> </body> </html> Vizualizarea miniaplicatiei appletviewer exemplu.html

Utilizarea tastaturii
In Java, fiecare componenta este generatoare de evenimente. Printre acestea se numara si evenimentele generate de apasarea tastelor. O componenta produce evenimete referitoare la tastatura n momentul n care este activa, mai bine zis n momentul n care este tinta intrarii de la tastatura (are InputFocus). O componenta primeste controlul tastaturii prin una din metodele : apelul explicit al metodei RequestFocus() al clasi Component printr-un click de mouse pe suprafata sa prin trecerea de la o componenta la alta cu utiliznd tasta <Tab> (ciclare) sau combinatia <Shift>+<Tab> (ciclare n ordine inversa); componenta la care se opreste ciclarea este cea care va primi controlul Obs1: Ordinea n care se face ciclarea este determinata de ordinea n care sau adaugat componentele n containere si containerele n fereastra. Fiecare componenta are astfel asociata o valoare unica : tab order Obs2: Componentele pentru care metoda boolean isFocusTraversable() returneaza false sunt ignorate n procesul de ciclare prin intermediul tastei <tab> . Ele pot totusi sa devina tinta intrarii de la tastaura prin una din celelate doua metode. Folosirea evenimentelor generate de o componenta la actionarea unor taste se realizeaza prin intermediul clasei KeyEvent si interfetei KeyListener.

Clasa java.awt.event.KeyEvent

Variabile Constante prin intermediul carora sunt referite tastele

42

VK_SHIFT VK_CONTROL VK_ALT VK_ENTER VK_BACK_SPACE VK_TAB VK_CAPS_LOCK VK_NUM_LOCK VK_SPACE VK_UP VK_DOWN VK_LEFT VK_PAGE_UP VK_PAGE_DOWN VK_HOME VK_F1, ..., VK_F12 VK_NUMPAD0, ..., VK_NUMPAD9 VK_A, ..., VK_Z VK_0, ..., VK_9 //etc Metode

VK_RIGHT VK_END

boolean isActionKey( ) char getKeyChar( ) void setKeyChar( char keyChar ) int getKeyCode( ) void setKeyCode( int keyCode ) static java.lang.String getKeyModifiersText( int modifiers ) Returneaza numele unui modificator : Shift, Ctrl+Shift, etc. static java.lang.String getKeyText( int keyCode ) Returneaza un sir cu numele tastei : HOME, F1, etc. void setModifiers( int modifiers ) Metodele pe care trebuie sa le implementeze obiectul receptor care asculta evenimentele produse de apasarea tastelor pentru o anumita componenta sunt specificate de interfata KeyListener public interface KeyListener extends java.util.EventListener { // Metode public void keyTyped( java.awt.event.KeyEvent e ); public void keyPressed( java.awt.event.KeyEvent e ); public void keyReleased( java.awt.event.KeyEvent e ); } Obs: Diferenta ntre keyTyped si keyPressed este ca primul eveniment este generat de apasarea unei taste urmata de eliberarea ei, n timp ce al doilea doar de apasarea tastei. Asadar, structura generala a unei componente care genereaza evenimente referitoare la tastatura si care necesita prelucrare este : class Componenta { //... Receptor r = new Receptor(); this.addKeyListener(r);

43

//... } class Receptor implements KeyListener { //... //Metodele interfetei KeyListener //... } Exemplu - deplasarea unui text pe ecran cu ajutorul tastelor import java.awt.*; import java.awt.event.*; public class TestKeys { public static void main(String argsst) { Fereastra f = new Fereastra("Test lucru cu tastatura"); Desen d = new Desen(); d.setSize(new Dimension(400, 400)); f.add(d); f.pack(); f.show(); } } //Componenta de desenare class Desen extends Canvas implements KeyListener { String text = "Test Key"; Point pos; public Desen() { this.addKeyListener(this); pos = new Point(10, 10); } public void paint(Graphics g) { g.drawString(text, pos.x, pos.y); } //metodele interfetei KeyListener public void keyTyped(KeyEvent e) {} public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); switch (keyCode) { case KeyEvent.VK_LEFT : pos.x -= 10; repaint(); break; case KeyEvent.VK_RIGHT: pos.x += 10; repaint(); break; case KeyEvent.VK_UP : pos.y -= 10; repaint(); break; case KeyEvent.VK_DOWN : pos.y += 10; repaint(); break; } } public void keyReleased(KeyEvent e) {}

44

} class Fereastra extends Frame implements WindowListener { public Fereastra(String titlu) { super(titlu); this.addWindowListener(this); } //metodele interfetei WindowListener public void windowOpened(WindowEvent e) {} public void windowClosing(WindowEvent e) {System.exit(0);} public void windowClosed(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} }

/*PROGRAM DE COPIERE A UNUI FISIER OARECARE*/ import java.io.*; import java.util.*; public class CopyFile { public static void main(String[] args) { String numeSursa; // Numele fisierului sursa de copiat specificat in linia de comanda String numeCopie; // Numele copiei fisierului

InputStream sursa; // Stream pt a citi din fisierul sursa OutputStream copie; // Stream pt a scire copia boolean fortare; // Este activ pe 1 atunci cand se foloseste -f (fortarea comenzii de copiere) //Folosim fortarea in cazul in care fisierul destinatie exista si astfel il suprascriem int byteCount; // Numarul de biti copiati din fisierul sursa /* Se introduc numele fiserelor sursa,respectiv destinatie si se verifica daca se foloseste fortarea . Daca in linia de comanda nu se foloseste unul din cele 2 tipuri de apeluri valide se va genera un mesaj de eroare */

45

if (args.length == 3 && args[0].equalsIgnoreCase("-f")) { numeSursa = args[1]; numeCopie = args[2]; fortare = true; } else if (args.length == 2) { numeSursa = args[0]; numeCopie = args[1]; fortare = false; } else { System.out.println("Utilizare: java CopyFile <fisier_sursa> <nume_copie>"); System.out.println(" sau java CopyFile -f <fisier_sursa> <nume_copie>"); return; } /* Se creeaza un stream de intrare, daca apare eroare se iese din program */ try { sursa = new FileInputStream(numeSursa); } catch (FileNotFoundException e) { System.out.println("Nu pot gasi fisierul \"" + numeSursa + "\"."); return; } /* Daca fisierul destinatie exista deja si e dezactivata si optiunea de fortare -f se genereaza o eroare. */ File file = new File(numeCopie);

46

VII.Programe care exemplific modul de lucru cu fiiere n Limbajul C

// Copierea unui fisier text sursa intr-un fisier destinatie #include <stdio.h> void main(void) { FILE *in, *out; char numfin[20],numfout[20]; long contor=0; printf("Nume fisier sursa:");gets(numfin); printf("Nume fis.destinatie:");gets(numfout); if ((in = fopen(numfin, "rt"))== NULL){ fprintf(stderr, "Eroare: %s fisier inexistent.\n",numfin); return; } out = fopen(numfout, "wt"); while (!feof(in)){ fputc(fgetc(in), out);contor++; } fclose(in);fclose(out); printf("Lungimea fis.destinatie este de %ld octeti.",contor); }

// Copierea unui fisier text sursa intr-un fisier destinatie // cu substituirea unor cuvinte date prin linia de comanda #include <stdio.h> void main(int argc,char *argv[]) { FILE *in, *out; char numfin[20],numfout[20],c; unsigned i=0,contor=0; printf("Nume fisier sursa:");gets(numfin); printf("Nume fis.destinatie:");gets(numfout); if ((in = fopen(numfin, "rt"))== NULL){ fprintf(stderr, "Eroare: %s fisier inexistent.\n",numfin); return; 47

} out = fopen(numfout, "wt"); while (!feof(in)){ if((c=fgetc(in))==argv[1][i]){ if(argv[1][++i]==0) // s-a detectat sfirsitul sirului de caractere fputs(argv[2],out),i=0; // se scrie sirul de caractere inlocuitor } else fputc(c, out);contor++; } fclose(in);fclose(out); printf("Lungimea fis.destinatie este de %d octeti.",contor); }

// Prelucrarea unul fisier C ce contine o agenda telefonica #include <stdio.h> #include <ctype.h> #include <conio.h> struct articol { char nume[10],adresa[10],tel[7]; } inreg; FILE *fagenda,*ftemp; char mod[3]="wb"; void creare(void){ char temp; puts("\nCrearea agendei:"); do{ printf("\nNume:");gets(inreg.nume); printf("Adresa:");gets(inreg.adresa); printf("Tel:");gets(inreg.tel); fwrite(&inreg, sizeof(inreg), 1, fagenda); /* write struct inreg to file */ printf("Continuati[D/N]?");temp=getch(); } while(toupper(temp)!='N'); // ciclu infinit ? NU! fclose(fagenda); /* close file */ } void listare(void){ int contor=0; puts("\nListarea agendei:"); mod[0]='r'; if ((fagenda= fopen("agenda.jo", mod)) == NULL) /* open file agenda */

48

fprintf(stderr, "Cannot open output file.\n"); while(fread(&inreg, sizeof(inreg), 1, fagenda)!=0) /* write struct inreg to file */ printf("%d: %s, %s, %s\n",++contor,inreg.nume,inreg.adresa,inreg.tel); fclose(fagenda); /* close file */ } void main(void) { if ((fagenda= fopen("agenda.jo", mod)) == NULL) /* open file agenda */ fprintf(stderr, "Cannot open output file.\n"); creare(); listare(); } // Program C de umplere a ecranului text prin acces direct la memoria ecran #include <dos.h> #include <conio.h> struct scrcar{ unsigned char car,atrib; } far *ecran; int lin,col; int culoare=BLUE,fundal=LIGHTGRAY; void main(void){ ecran=(struct scrcar far *)MK_FP(0xb800,0); for(lin=0;lin<25;lin++) for(col=0;col<80;col++) { ecran[lin*80+col].car='*'; ecran[lin*80+col].atrib=fundal*16+culoare; } getch(); }

Cateva programe C/C++ simple dupa cum urmeaza :

[Afisarea unui mesaj simplu] #include <iostream.h> #include <stdio.h> #include <conio.h> void main() 49

{ clrscr(); printf ("primul program in C/C++"); }

[Cand s-a nascut Eminescu ?] #include <iostream.h> #include <conio.h> void main() { clrscr(); int n; cout<<"In ce an s-a nascut Eminescu? ";cin>>n; if(n>=2000 || n<1000) cout<<"De cate secole n-ai mai trecut pe la scoala?"; else { if(n<=1800 || n>=1900) cout<<"Ai nimerit mileniul.Mai incearca!"; else { if( n!=1850) {cout<<"Ai nimerit secolul,"; if(n>1850) cout<<"s-a nascut cu "<<N-1850<<" devreme!?; else cout<<"s-a nascut cu "<<1850-n<<" ani mai tarziu!";} else cout<<"Felicitari!!!";} } getch(); } [Acest program citeste mai multe numere si il afiseaza pe cel mai mare dintre ele] #include <iostream.h> #include <conio.h> void main() { clrscr(); int v[20],i,n,max; cout<<"Cate numere vreti? ";cin>>n; for(i=1;i<=n;i++) { cout<<"Dati numarul "<<I<<":";CIN>v[i]; } max=v[1]; for(i=2;i<=n;i++) { if(v[i] > max) max=v[i]; } cout<<"Cel mai mare numar este "<<MAX<<"."; getch(); }

50

VIII.Securitatea conexiunii la Internet


Datele existente pe hard-discul unui calculator sunt de multe ori mai valoroase dect calculatorul nsui, de aceea pstrarea lor n siguran trebuie s fie foarte serios avut n vedere. Pe de alt parte chiar dac nu avem date importante pe harddisc infectarea calculatorului cu un virus informatic sau alt program de tip "malware" (prescurtare de la "malicious software", programe care fac ru, nocive) duce de cel mai multe ori la scderea performanei sistemului i chiar la imposibilitatea de a rula unele programe. VIRUII INFORMATICI Internetul a devenit n ultimii ani mediul cel mai folosit pentru rspndirea de virui informatici. Cele mai multe contaminri ale calculatoarelor personale au loc prin ataamente infectate ale unor mesaje de pot electronic i prin fiiere infectate descrcate de pe Internet. Un virus informatic este un program care se caracterizeaz prin faptul c are un potenial distructiv asupra calculatorului infectat. La fel ca i viruii biologici (grip, etc.), cei informatici se pot "nmuli" crend copii ale lor care pot infecta alte calculatoare. Contaminarea cu un virus informatic se face dac lansm n execuie un fiier infectat (facem dublu click pe el). n acest fel virusul este activat i ii va incepe aciunea distructiv care poate varia foarte mult din punct de vedere al nocivitii. Unii virui folosesc calculatorul infectat doar pentru a se multiplica n vederea infectrii altor calculatoare. Acetia sunt de obicei numii "viermi" (worms) i n aceast categorie se ncadreaz muli dintre viruii care se transmit prin ataamentele infectate ale unor mesaje de pot electronic. Cei mai muli virui au o aciune nociv care se declaneaz instantaneu la deschiderea unui program infectat sau ntr-o anumit zi a anului. Aciunea nociv este variabil, mergnd de la modificarea sau tergerea unor fiiere pn la suprascrierea biosului calculatorului. Fiierele modificate sau terse sunt alese cu grij de autorul virusului n aa fel nct calculatorul infectat s fie incapabil s i ndeplineasc funciile ntr-o mai mic sau mai mare msur. n general aceti virui, 51

infecteaz fiiereleexecutabile (cu extensia EXE, COM, BAT, PIF) dar exist i virui care infecteaz fiierele cu extensia DOC sau XLS create de aplicaiile Word sau Excel ale suitei MS Office. O categorie cu totul aparte sunt programele de tip "troian". Acestea funcioneaz la fel ca un "cal troian" oferind acces la calculatorul infectat unei persoane care nu se afl fizic lng calculator. Astfel un calculator infectat cu un troian poate fi manipulat foarte uor prin Internet putndu-se face cu el toate operaiile obinuite (deschidere de programe, tergere de fiiere, etc.) care ns se pot transforma n aciuni distructive dac se terg fiiere de sistem sau fiiere importante depozitate pe calculatorul respectiv. nmulirea cazurilor de infectare cu virui pe scar larg (adevarate "epidemii") a fcut s fie folosite din ce n ce mai mult mijloacele de contracarare a viruilor. i n domeniul viruilor informatici este valabil afirmaia c este mai bine s previi infecia dect s o tratezi. La ora actual exist cel puin o duzin de programe antivirus foarte bune care ne permit s evitm infectarea calculatorului nostru. Toate aceste programe sunt actualizate periodic pentru a ine pasul cu viruii nou creai. Multe plci de baz cumprate din magazin au pe CD un program antivirus (de ex. Trend PC Cillin) care este inclus n preul plcii. Exist i programe gratuite, de exemplu AntiVir PE sau AVG Free Edition . Cele mai bune programe antivirus sunt ns cu plat, exemple fiind Kaspersky Anti-Virus, McAfee Anti-Virus, Norton Anti-Virus sau BitDefender Anti-Virus (romnesc). Alt antivirus romnesc i anume RAV a fost cumprat de Microsoft i va fi probabil inclus n viitoarele sisteme de operare Windows. Dac vrem s comparm antiviruii existeni putem s i instalm pe rnd (de ex. de pe CD-urile unor reviste cu tematic IT) i s ii punem la ncercare. Pentru a vedea dac avem calculatorul infectat scanm harddiscul cu ajutorul programului antivirus. Acesta conine "semnturile" (modificrile specifice produse n fiierele infectate) celor mai rspndii virui ntr-o baz de date i dac pe parcursul scanrii ntlnete un fiier modificat de un virus ne atenioneaz. La sfritul scanrii vedem care sunt fiierele infectate i putem lua msuri de a eradica infecia prin tergerea sau "repararea" fiierelor afectate, ambele aciuni putnd fi fcute de soft-ul antivirus. De multe ori ns este imposibil ca fiierele afectate s poat fi "dezinfectate" corespunzator i de aceea singura soluie rmne tergerea. Cum viruii pot afecta fiiere a cror tergere poate duce la o funcionare defectuoas a sistemului de operare, uneori nu avem alt soluie dect s aplicm msura radical 52

de formatare a harddiscului. De altfel cea mai sigur metod de a ne debarasa de un virus informatic este sa formatm hardiscul i s instalm din nou sistemul de operare. Cum aceast operaie ia destul de mult timp i nu poate fi fcut de cei nefamiliarizai cu procedeul, cea mai bun metod de a contracara aciunea unui virus este s evitm cu orice pre infectarea calculatorului. Prevenirea unei infecii se face din dou direcii : Prima, i cea mai important, este educarea utilizatorului unui calculator cu privire la viruii informatici. Utilizatorul trebuie s scaneze cu un antivirus actualizat toate CD-urile sau dischetele pe care le folosete nainte de a lansa vreun program de pe acestea. De asemenea trebuie scanate toate fiierele descrcate de pe Internet sau ataamentele primite prin pota electronic. A doua direcie este instalarea unui program antivirus care s fie n funciune pe toat durata folosirii calculatorului. n acest fel ne asigurm ca protecia se pstreaz chiar dac ali utilizatori ai calculatorului (de ex. copii) uit sa scaneze un CD sau o dischet. Toate programele antivirus au un modul de scanare automat a fiierelor deschise n timpul unei sesiuni de lucru cu calculatorul. Dac antivirusul detecteaz c un fiier infectat este pe cale de a fi deschis, fiierul respectiv nu va putea fi lansat n execuie. Acest modul nu ocup multe resurse ale calculatorului i de aceea el nu deranjeaz funcionarea altor programe. Foarte important este actualizarea "semnturilor" virale din baza de date a programului antivirus care trebuie s se fac sptmnal sau lunar. Toi antiviruii moderni includ capacitatea de actualizare automat prin Internet.

PROGRAMELE SPION Internetul a produs apariia i a unor programe care nu sunt virui informatici propriu-zii, dar activitatea lor se desfoar fr cunostin utilizatorului calculatorului infectat i este de cele mai multe ori de o nocivitate redus. Aceste programe sunt denumite "spioni" (spyware) i funcia lor este aa cum le-o arat i numele s spioneze obiceiurile celor care utilizeaz calculatorul infectat. De exemplu, unele programe spion nregistreaz ntr-o baz de date site-urile web vizitate i apoi transmit prin Internet o list cu adresele acestora. Programele spion sunt de multe ori asociate cu unele programe gratuite (i utile) care pot fi descrcate de pe Internet. Atunci cnd instalm un program gratuit 53

care ne trebuie este posibil s instalm i un program spion. Cei care beneficiaz de pe urma programelor spion sunt de cele mai multe ori marile companii de publicitate prin Internet care culeg date despre internaui, date pe care le folosesc pentru a-i ajusta ofertele publicitare. Pentru ca aceste programe nu sunt de tip virus ele se afl la limita legalitaii. Multe programe gratuite care au inclus n ele i un program spion fac cunoscut acest lucru n termenii contractuali (licena de folosire a soft-ului) care apar la instalarea programului. Cum cei mai muli dintre utilizatori nu citesc acest text scris n jargon juridic programul spion este instalat alturi de programul util. Programul spion rmne de obicei pe calculator i i indeplinete funcia chiar dac dezinstalm programul util pentru ca nu il mai folosim. Pentru a vedea dac avem pe calculator programe spion trebuie s instalm soft-urile gratuite Ad-Aware sau SpyBot Search&Destroy. Acestea ne scaneaz calculatorul (fiiere i registrul Windows) i ne atrag atenia dac avem programe spion aflate n funciune, oferindu-ne i posibilitatea s le tergem. Trebuie s fim ns ateni la faptul c unele programe utile nceteaz s funcioneze dac este ters programul spion cu care sunt asociate. PROGRAMELE CARE "DETURNEAZ" EXPLORATORUL Ultimele programe aprute n lista de soft-uri "malware" sunt programele care "deturneaz" exploratorul ("browser") . Numele acestor programe vine de la aciunea de deturnare ("hijacking") a unui obiect de la scopul pe care trebuie s l ndeplineasc. Aciunile acestor soft-uri nu sunt extrem de nocive ns sunt foarte suprtoare. Ele se instaleaz automat atunci cnd vizitm anumite pagini web i nu devenim contieni de faptul c exploratorul a fost deturnat dect atunci cnd observm ca pagina gazd (principal) i cea de cutare au fost modificate. Un alt semn clar al prezentei unui soft "malware" este faptul c exploratorul funcioneaz foarte lent i derularea paginilor mai mari se face sacadat. Cele mai comune deturnri ale exploratorului sunt modificarea paginii principale ("home page") i a paginii de cutare. n varianta obinuit (imediat dup instalarea IE) aceste dou pagini se gsesc pe site-ul MSN al companiei Microsoft. Atunci cnd vizitm pagini web aflate n zone "mai intunecate" ale Internetului (de ex. site-uri pornografice sau cu soft piratat) este posibil ca unele din pagini s conin nite scripturi care modificautomat configuraia IE. Pagina principal a exploratorului i cea de cutare sunt astfel schimbate cu alte pagini, de obicei publicitare. 54

Soluia pentru situaia de mai sus este la prima vedere foarte simpl. n prima etap facem click pe meniul "Tools" n IE i apoi pe comanda "Internet Options". Va aprea multifereastra cu acelai nume. Scriem din nou adresa paginii principale dorite de noi (tergnd-o evident pe cea aprut fr voia noastr) sau facem click pe butonul "Use Blank" i apoi apsm butonul OK pentru a nchide fereastra. n a dou etapa trebuie s reparm toate modificrile fcute de fiierele "malware" de pe calculatorul nostru cu ajutorul soft-ului gratuit "HijackThis". l lansm pe acesta dup instalare i apsm pe butonul "Scan". Programul ne va afia toate fiierele suspecte i toate modificrile suspecte fcute n registrul Windows. Modificrile din registrul Windows care sunt responsabile de problemele aprute sunt dispuse de obicei n primele cinci rnduri din partea de sus a ferestrei programului. Bifm valorile din registru denumite HKCU...Search URL, HKCU...Search Bar, HKCU...Search Page, HKCU...Search Assisstant i HKCU...Home OldISP care indic nite adrese de pagini web publicitare (de ex. http://www.search-2008.com , http://sharempeg.com/find) i apoi facem click pe butonul "Fix Checked". Va aprea o minifereastr de confirmare n care va trebui s apsm butonul "Yes". Dac dup terminarea operaiei facem din nou click pe butonul "Scan" vom vedea c programul "Hijack This" a ters valorile din registru falsificate i le-a restaurat pe cele corecte care indic nite adrese de pe site-ul Microsoft (http://www.microsoft.com). Cei care se ocup cu soft-urile "malware" au gsit nsa o variant prin care aciunea de mai sus nu mai este ncununat de succes complet pentru ca de exemplu funcia de cutare folosind bara de adrese a exploratorului este in continuare inutilizabil. Aceasta se ntimpl pentru ca a fost instalat pe calculator un fiier numit "hosts" n dosarul C:\Windows. Dac il deschidem cu Notepad observm c n el este scris de exemplu "66.250.171.136 auto.search.msn.com". Cu alte cuvinte n fiier se specific o adres IP greit pentru pagina de cutare de la MSN. De cte ori vom ncerca s cutm ceva pe internet cu ajutorul motorului MSN (scriem un cuvnt n bara de adrese i apsm tasta Enter) vom vedea c n loc de pagina cu rezultate de pe MSN va aprea o pagin web publicitar (de ex. http://www.martfinder.com ). Va trebui s tergem rindul "66.250.171.136 auto.search.msn.com" din fiierul "hosts" i n acest fel motorul de cutare MSN va putea fi folosit din nou direct din explorator. Fiierul nsui poate fi ters de pe harddisc dac el conine doar rndul specificat mai sus iar acest lucru nu va cauza

55

nici o problema n funcionarea exploratorului, pentru c fiierul n cauz nu a fost instalat de Windows. Un alt program foarte bun care ne ajut s prevenim deturnarea exploratorului este "Browser Hijack Blaster". Acesta trebuie lansat ori de cite ori explorm Internetul i el va rula n fundal mpiedicnd modificarea adreselor paginii principale i a celei de cutare. REALIZAREA DE COPII DE SIGURAN Cea mai bun metod de a ne pune datele importante la adpost este crearea de copii de siguran, ceea ce ne permite recuperarea integral a datelor chiar i n situaia n care o parte dintre ele au fost terse sau corupte de aciunea unui virus informatic. Datele importante de pe harddisc trebuie arhivate periodic (i eventual criptate) iar arhivele rezultate trebuie transferate pe medii de stocare pe care s le pstrm la loc sigur. Cea mai indicat metod este folosirea unitilor de inscripionare de tip CD-RW pentru crearea de discuri care s conin datele pe care vrem s le punem n siguran. Evident, pentru stocarea unor cantiti mici de date pot fi folosite i dischetele. O alt metod sigur n cazul n care vrem s depozitm cantiti importante de date este stocarea datelor pe Internet folosind un serviciu cu plat. Este recomandat s stocm datele importante n mai multe locuri, de exemplu stocare pe CD-ROM dar i stocare pe Internet i s le actualizm regulat.

Prevenirea retelei cu virusi din internet Pentru a preveni infectarea reelei cu virui este necesar aplicarea a trei etape simple la toate informaiile sosite din exterior. Mai inti se va folosi un program antivirus pentru a scana toate dischetele, fiierele, programele executabile i anexele e-mail inainte de a le deschide pe un calculator din reea. n al doilea rand se va include protecia antivirus ca o component a parafocului astfel inct fiierele infectate s nu poat intra in reea. Dup cum s-a discutat n capitolul referitor la parafocuri practic toate produsele parafoc comerciale

56

includ facilitatea de filtrare antivirus. Majoritatea parafocurilor include instrumente de detecie a viruilor, integrate i complet adaptabile care pot preveni infectarea i distrugerea datelor din calculator. n plus, conin sisteme de asigurare a integritii care permit monitorizarea n timp real a modificrilor survenite n fiiere sau in sistem ca ansamblu. Informaiile n timp real privind modificrile pot contribui la stoparea imediat a oricaror virui care incearc s infecteze sistemul. De asemenea, cele mai multe parafocuri furnizeaz protecie care se extinde i asupra sesiunilor DOS, astfel c utilizatorul nu poate fi luat niciodat prin surprindere. n al treilea rnd, se va instala un program de protecie antivirus pe fiecare sistem de reea, pentru a preveni transmiterea viruilor de la un calculator infec

Elemente de etic, politica de securitate a Internetului - fiecare configuraie care include o reea trebuie s-i aib propria politic de securitate; politica de securitate a fiecrei reele trebuie s fie unic;---------------------------- pentru crearea unei politici de securitate este necesar interaciunea ntre mai multe departamente i personae individuale inclusiv factori de decizie, specialiti n domeniul informaiei sau utilizatori obisnuii;--- o estimare a riscului implic determinarea proprietarilor sistemului i a pericolelor poteniale la care sunt expuse acestea.. -- scopul de baz al unei politici de securitate l constituie specificarea obiectului proteciei i mai puin a modului de exercitare a protectiei.

Metoda de baz pentru dezvoltarea unei politici de securitate Creearea unei politici de securitate se traduce prin dezvoltarea unui plan pentru rezolvarea aspectelor privind securitatea reelei. Cu alte cuvinte se ncearc protecia utilizatorului i a reelei inainte ca un haker sa reueasc s compromit sistemul. 1.Determinarea obiectivelor care urmeaz a fi protejate i a caracteristicilor acestora. De exemplu, s presupunem c serverul de reea conine baze de date ale firmei. Prin determinarea modului de accesare a bazei de date, se poate lua decizia 57

de protecie a acesteia cu msuri de securitate de nivel redus i protecie a ntregistrrilor individuale cu msuri de protecie de nivel mai ridicat. 2.Determinarea factorilor umani si tehnici carora trebuie protejata reeaua. Folosind exemplul anterior se poate opta pentru protecia integral a bazei de date mpotriva furtului. De aseamenea, n funcie de coninutul bazei de date se pot proteja de exemplu, nregistrrile fiecarui agent de vnzri mpotriva accesului tuturor celorlalti ageni de vnzari din cadrul firmei; 3.Determinare gradului de probabilitate a pericolelor. Dac firma are caracter local i zona de pia acoperit este redus agenii de vnzri neateni reprezint un pericol mai mare decat hakeri externi.-----------------------------------------------------4.Implementarea msurilor de protecie a reelei ntr-o manier eficient. Securitatea parolelor nregistrrile criptate i parafocurile reprezint exemple de msuri de securitate eficiente. ------------------------------------------------5.Monitorizarea slab. Stabilirea unei politici oficiale de securitate a calculatoarelor Scopul urmrit n dezvoltarea unei politici oficiale de securitate a calculatoarelor este de a defini dezideratele firmei n ceea ce privete utilizarea corect a calculatoarelor i reelei. De asemenea, politica de securitate trebuie s defineasc proceduri de prevenirea a indicelor de securitate i proceduri care s specifice modul de reacie la asemenea incidente, pentru a rezolva cele dou aspecte, trebuie luate in considerare anumite caracteristici ale firmei att nainte ct i in timpul dezvoltrii unei politici de securitate. La dezvoltarea politicii n sine se vor parcurge urmtoarele trei etape :--------- Examinarea scopurilor i direciei organizatiei. De exemplu, o baz militar va prezenta probleme de securitate sensibil diferite de ale unei universiti, iar preocuprile de securitate ale unei configuraii comerciale difer, de asemenea, att de cele ale bazei miliare ct i de cele ale universitii. - Dezvoltarea unei politici de securitate conforme cu regulile politice, regulamentele i legile pe care le respect organizaia i membrii acesteia. Pentru a continu a procesului i mbuntirea tuturor

componeneteleor de asigurare a securittii reelei la fiecare aparaiie a unui punct

58

asigura o conformitate complet cu regulile existente se impune identificarea acestora i luarea n considerare a fiecrei n momentul dezvoltrii politicii de securitate. - Dac reeaua local nu este complet izolat i de sine stttoare este necesar luarea n considerare a implicaiilor securitii ntr-un context global. Politica de securitate trebuie s conin referine la probleme privind utilizarea de la distan a calculatoarelor. n aceast categorie de probleme intr modul de rezolvare a problemelor locale de securitate generate de un site ndeprtat, modul de rezolvare a problemelor care survin pe sisteme ndepartate ca rezultat al aciunii unui host sau utilizator local, precum i modul de a reaciona la o ptrundere neautorizat a unui utilizator ndepartat. Crearea unei politici de securitate a reelei nu este o problem care s poat rezolva ntr-o dupa-amiaz de smbt. n realitate, la dezvoltarea unei politici de securitate se dorete implicarea mai multor persoane cu diferite funcii i care lucreaz n diferite departamente. Cu toate acestea, rspunderea final privind crearea politcii de securitate trebuie s revin unei persoane sau a unui grup. Securizarea si protejarea informatiilor normale si sensibile nainte de acorda utilizatorilor acces la servicii, trebuie determinat nivelul securitii datelor din sistem. Prin aceasta se determin nivelul de sensibilitate al datelor stocate de utilizatori. Nu este recomandat stocarea de informaii sensibile pe un sistem care nu urmeaz a fi securizat corespunzator. Utilizatorii care pot stoca informaii sensibile trebuie s tie care sunt serviciile (dac acestea exist), corespunzatoare pentru stocarea acestor informaii. Aceast component a politicii de securitate include stocarea datelor n diferite moduri (pe disc, pe band maganetic, pe servere de fiiere, etc). Stabilirea procedurilor de prevenire a problemelor de securitate Politica de securitate definete ce anume trebuie protejat: ce este mai important, care sunt proprietile i care este metoda general de tratare a problemelor de securitate. Politica de securitate n sine nu indic modul de protecie al elementelor; acesta este rolul procedurilor de securitate. Politica de securitate trebuie s fie un document de nivel nalt care traseaz strategia general. Procedurile de securitate trebuie s stabileasc n detaliu msurile exacte de protecie a site-ului.

59

Politica de securitate trebuie s includ o estimare general a riscului privind cele mai comune tipuri de pericole pentru site i consecinele acestuia (dup cum s-a artat n seciunea identificarea pericolelor). Aceast informaie este esenial pentru conceperea unor proceduri eficiente sub aspectul costului. Exist tentaia de a ncepe crearea procedurilor de securitate ale site-ului prin luarea de decizii referitoare la diferite mecanisme; de exemplu, afirmaii gen acest site va avea login pe toate hosturile, modemuri call-back i plci inteligente pentru toti utilizatorii. Prin aceasta metod se ajunge la diferite zone ca un volum exagerat de protecie fa de poteniale riscuri i la alte zone cu o protectie insuficient. Politica de securitate i riscurile pe care le descrie trebuie s asigure un nivel corect de protecie pentru toate elementele reelei. Selectarea sistemelor de control pentru protejarea eficient a componentelor Dupa stabilirea componentelor care urmeaz a fi protejate i estimarea riscurilor cu care se confrunt acestea, trebuie luat o decizie cu privire la implementarea sistemelor de control care protejeaz aceste componente. Este necesar selectarea mecanismelor de control i protecie care s contracareze n mod adecvat pericolele indentificate la evaluare riscurilor i implementarea acestor mecanisme ntr-un mod eficient sub aspectul costului. Investiiile excesive i restrngerea bazei de utilizatori nu-i au rostul n cazul unor riscuri foarte reduse. Urmtoarea list prezint unele aspecte care trebuie luate in considerare la selectarea sistemelor de control pentru reea: Setul de sisteme de control adecvat: Sistemele de control selectate asigur prima i principala linie de aprare pentru protecia componenetelor sistemelor. Ca atare, trebuie s existe certitudinea c i elementele de control selectate sunt potrivite pentru sistem. Dac pericolul principal pentru sistem l reprezint ptrunderile din exterior, probabil c utilizarea de dispozitive biometrice pentru autentificarea utilizatorilor obinuii ai sistemului nu are sens. Pe de alta parte, dac pericolul esenial este exploatarea neautorizat a resurselor sistemului de ctre utilizatorii obinuii, este de dorit utilizarea unor proceduri automate de stabilire a conturilor extrem de riguroase.

60

Securitatea fizic: n cadrul securitii calculatoarelor, dac un sistem nu este sigur sub aspect fizic, atunci nimic relativ la sistem nu mai este sigur; un intrus cu acces fizic la sistem l poate opri, l poate readuce n mod privilegiat, poate inlocui sau modifica discul. Este necesar amplasarea conexiunilor de comunicatie eseniale, a serverelor importante i a altor sisteme cheie n zone sigure din punct de vedere fizic. Dac nu exist posibilitatea de securizare fizica a sistemelor, se impune o atenie sporit la credibilitatea acestor sisteme. Siteurile vor avea n vedere limitarea accesului de la sistemele nesigure la sisteme mai sigure. n particular, accesul credibil (realizat cu comenzile distante din UNIX,gen rsh) de la aceste categorii de host-uri este deosebit de riscant. Este necesar o grij deosebit privind accesul la sistemele pentru care se va asigura securitatea fizic sau care par sigure sub acest aspect. Se reine c personalul de ntreinere are deseori cheile de la birouri.

REELE DE CALCULATOARE

Definitie: O reea de calculatoare reprezint un mod de conectare a unor calculatoare individuale, astfel nct s poat folosi n comun anumite resurse. Calculatoarele conectate la reea sunt denumite noduri. Cnd nodurile aparin aceleiai cldiri sau aceleiai organizaii, reeaua este local (Local Area Network - LAN), de exemplu reeaua unui liceu. Dac nodurile sunt dispersate pe o zon mai extins, de exemplu pe suprafaa unui jude sau a ctorva judee, la nivelul rii sau pe ntregul glob, reeaua este pe plan extins (Wide Area Network - WAN). Reelele metropolitane MAN, sunt reele imense care de obicei impanzesc orae ntregi. Aceste reele folosesc cel mai des tehnologia far fir (wireless) sau fibr optic pentru a crea conexiuni. O astfel de reea este Internetul.

Reele client/server Reeaua de acest tip folosete un calculator central numit server, Calculatorul ofer rspunsuri rapide clienilor, asigur protecia datelor din reea i foloseste un sistem de operare special (de exemplu: Novell NetWare, Windows NT Server, IBM OS/2 LAN Server, etc.). O reea poate avea mai multe servere.

61

Topologie Topologia (structura) unei reele rezult din modul de conectare a elementelor retelei intre ele. Ea determina si traseul concret pe care circul informaia in reea . Principalele tipuri de topologii pentru reelele LAN sunt:

topologia Bus (se citete "bas" i nseamn magistral) - are o fiabilitate sporita si o viteza mare de transmisie; topologia Ring (inel) - permite ca toate statiile conectate sa aiba drepturi si functiuni egale; topologia Star (stea) - ofer o vitez mare de comunicatie, fiind destinata aplicatiilor in timp real.

Clasificarea retelelor Dup tehnologia folosita: Fibr Optic, Ethernet, Wireless LAN, HomePNA sau Power line communication Dup relaiile funcionale (Arhitectura de reea): Active Networking, Client-server i Peer-to-peer (workgroup). Echipament pentru crearea reelelor de calculatoare plac de reea, adapter de retea sau placa cu interfata de retea este piesa care a fost proiectat petru a permite calculatoarelor de a comunica printr-o retea de calculatoare. Ea pemite acces fizic la resursele retelei. Reteaua permite utilizatorilor de a crea conexiuni cu alti utilizatori pe doua cai: prin cablu sau prin tehnologia fara fir(wireless). hub (switch) de reea este un dispozitiv pentru conectarea calculatoarelor fie prin cablu rasucit (twisted pair) sau fibra optica, pentru a putea partaja resursele. Partajarea resurselor ntr-o retea local. Drepturi de acces ntr-o retea local se pot partaja, adic folosi n comun de ctre mai multi utilizatori (termenul englez pentru partajare este "share"), resurse fizice sau logice, folosind instrumente specifice oferite de sistemul de operare. Resursele partajate vor putea fi folosite de ctre utilizatori n functie de drepturile de acces pe care le au asupra acestor resurse. Resursele fizice partajate ntr-o retea local sunt discurile si imprimantele de retea. Drive-urile partajate n retea pot fi discuri din retea sau portiuni (directoare) ale acestora - de obicei de pe calculatoarele server. Operatia de asociere a unui nume

62

de drive logic unui disc de retea sau unei portiuni a acestuia se numeste mapare si se realizeaz cu comenzi specifice softului de retea. Obs: Utilizatorii pot partaja (sau mapa) doar resursele asupra crora detin drepturi de acces.Imprimantele conectate la o retea pot fi partajate, adic disponibile mai multor utilizatori. Imprimantele de retea folosesc o "coad de tiprire" care nregistreaz cereri de imprimare de la mai multi utilizatori, fiecare putnd trimite diverse "job"-uri (lucrri) de tiprire. Uzual, prima lucrare trimis spre tiprire va fi si prima executat, apoi se va trece la urmtoarea etc. Pentru ca un utilizator s poat tipri la o imprimant de retea, aceasta trebuie s fie instalat fizic si logic - prin intermediul unui driver, s fie partajat si s existe drept de acces asupra ei pentru utilizatorul respectiv sau pentru grupul (grupurile) din care acesta face parte. Drepturile de acces asupra fisierelor (inclusiv programe executabile) si directoarelor asigur o utilizare adecvat a resurselor logice partajate. Uzual, acestea se acord de ctre administratorul de retea pe grupuri de utilizatori si pot fi vizualizate (eventual modificate) de ctre acestia Cele mai uzuale drepturi de acces folosite n retelele locale sunt: Read (doar citire), Write (scriere), Change (modificare), Full Control (inclusiv controlul accesului, respectiv modificarea drepturilor de acces asupra acelei resurse).

Dispozitive de interconectare
Repetorul Repetorul este dispozitivul de interconectare ce funcioneaz la nivel fizic. Deoarece la nivelul fizic nu exist date ci doar bii, repetorul nu este preocupat de identificarea destinaiei sau de verificarea unui cod de corecie, ci doar de semnalul electric pe care-l primete i de regenerarea acestuia. Principala sa funcie este aceea de a extinde suprafaa acoperit de o reea local cu un cost i o laten foarte sczute. irul de bii generat de o plac de reea este clar, respectnd strict nivelurile de tensiune standardizate. Cu ct irul de bii cltorete mai mult prin cablu, semnalul electric se deterioreaz i devine din ce n ce mai slab. Pentru a opri deteriorarea semnalului peste o limit ce l-ar face de nerecunoscut pentru destinaie, repetorul ia irul de bii, l aduce la treptele de semnalizare standardizate i l amplific. n reelele Ethernet ntlnim deseori repetoare multiport numite huburi. Huburile vor transmite datele primite pe unul dintre porturi pe toate celelalte porturi. Pentru mediul torsadat acestea ndeplinesc o funcie suplimentar i anume asigur conectarea tuturor nodurilor la un mediu de transmisie distribuit. Iniial au existat dou tipuri de huburi: pasive i active. Huburile pasive ofer posibilitatea interconectrii la acelai mediu de transmisie a mai multor dispozitive, fr a regenera semnalul la trecerea prin ele. Huburile active vor oferi n plus fa de primele regenerarea semnalului. Datorit scderii extrem de rapide a preurilor i avantajelor ce le ofer aceast regenerare de semnal huburile pasive au disprut de pe pia nc de la sfritul anilor '80, din aceast cauz n continuare prin huburi vom nelege huburi active.

63

Una din componentele eseniale ale protocolului Ethernet este detecia coliziunilor. Ne intereseaz care este efectul unui repetor asupra coliziunilor. Domeniul de coliziune reprezint acea seciune dintr-o reea n care se va propaga o coliziune. Domeniul de difuzare (domeniul de broadcast) reprezint acea seciune dintro reea n care se va propaga un pachet de difuzare (broadcast). Pentru un repetor nu exist noiunea de coliziune, dup cum nu exist noiunea de pachet de date. Deci repetoarele extind att domeniile de coliziune ct i pe cele de difuzare. Repetoarele mpart reeaua n microsegmente. Aceast denumire nu este general acceptat, cteodat fiind folosit termenul de segment pentru cele dou sau mai multe seturi de calculatoare pe care le conecteaz un repetor. Exist o regul foarte important pentru proiectarea reelelor Ethernet: regula 5-4-3. Regula 5-4-3: Comunicaia dintre oricare dou calculatoare sau dispozitive dintr-o reea nu trebuie s treac prin mai mult de 5 microsegmente 4 repetoare consecutive 3 microsegmente populate De ce regula 5-4-3? Exist o fereastr de timp pentru transmiterea unui bit. Pentru Ethernet, ce ofer o vitez de 10 Mbps, durata transmiterii unui singur bit este de 100 de nanosecunde. Dimensiunea minim a cadrului Ethernet este de 64 de octei. Rezult c timpul necesar transmiterii cadrului de dimensiune minim este de 51,2 microsecunde. De ce ne intereseaz acest timp? Pentru c apariia unei coliziuni trebuie detectat nainte de expirarea acestui interval de timp. Altminteri, apariia unei coliziuni va fi interpretat ca o coliziune la cel de-al doilea cadru i nu pentru primul. Latena introdus de mediul de transmisie va fi dat de viteza de propagare a semnalului electric, aceasta fiind aproximativ dou treimi din viteza luminii. Rezult c propagarea pe un segment de 100 de metri va dura aproximativ 0,5 microsecunde. Comparativ cu latena introdus de un repetor Ethernet de aproximativ 5,6 microsecunde, latena introdus de mediul de conectare este cu patru ordine de mrime mai mic, deci neglijabil. Cel mai defavorabil caz se obine cnd sursa i destinaia se afl la distana maxim, iar coliziunea apare lng destinaie, astfel nct coliziunea ce trebuie detectat i de surs trebuie s parcurg de dou ori distana maxim. Dac vom considera acum c ntre surs i destinaie se afl cinci repetoare, vom determina c n cel mai defavorabil caz detecia coliziunii va fi posibil doar dup cel puin 56 de microsecunde, asta nsemnnd c un alt doilea pachet deja a fost trimis. Puntea Puntea sau bridge-ul este primul dispozitiv de interconectare ce poate lua decizii logice. Pentru el semnalele electrice se transform n octei i n date. Puntea este dispozitivul de interconectare ce funcioneaz la nivelul legtur de date.

64

Punile sunt folosite i la interconectarea a grupuri de calculatoare ce difer prin protocolul folosit la nivelul legtur de date sau a mediului de transmisie. Astfel, exist puni ce conecteaz reele Ethernet cu reele Token Ring, sau reele Token Ring cu reele Token Bus. Puntea interconecteaz dou sau mai multe segmente de reea. n plus fa de un simplu calculator, care la nivelul legtur de date se preocup doar de ncapsularea datelor n cadre, o punte trebuie s ia decizia spre ce segment s trimit cadrul primit. Principala funcie a unei puni este filtrarea traficului pe baza adresei fizice. Pentru a putea lua decizii de comutare a cadrelor punile folosesc o tabel, numit tabel de comutare (bridging / switching table) n care fiecrei adrese fizice i este asociat una dintre interfeele sale. Protocolul Ethernet ofer un mediu de comunicaie distribuit, adic comunicaia dintre dou staii va fi accesibil nivelului legtur de date a oricrei alte staii conectate pe acelai segment. Pentru fiecare cadru primit de o staie, nivelul legtur de date va verifica dac aceast staie este sau nu destinaia. n cazul afirmativ cadrul va fi pasat nivelului reea, altminteri va fi ignorat. Puntea izoleaz comunicaia ntre staii aflate n acelai segment la nivelul segmentului. Consecinele acestui fapt sunt extrem de importante. n primul rnd, puntea va mrgini domeniile de coliziune. Totodat ea va oferi mai mult band disponibil, deoarece comunicaia n interiorul aceluiai segment nu va consuma din banda disponibil a ntregii reele. O alt consecin o reprezint minimizarea riscurilor de securitate legate de atacurile din interiorul reelei locale. n comparaie cu repetorul, puntea nltur limitrile impuse de regula 5-4-3, izoleaz traficul din interiorul unui segment la nivelul segmentului i ofer posibilitatea interconectrii unor segmente de reea ce folosesc protocoale de nivel legtur de date diferite. Punile vor extinde domeniile de difuzare, dei le limiteaz pe cele de coliziune. n acelai timp, costul unei puni este cu cel puin un ordin de mrime mai mare dect cel al unui repetor. Pentru a putea funciona eficient o punte trebuie s aib la dispoziie o tabel de comutare ce conine cte o intrare pentru fiecare dintre staiile din acea reea local. Cutarea n aceast tabel este o cutare secvenial, deci extrem de ineficient pentru o dimensiune prea mare a tabelei. Astfel dimensionarea optim a reelei ce folosete doar puni, dei nu se supune nici unei restricii de lungime, va fi puternic influenat de numrul de staii, precum i de tipul traficului, mai exact de latena pe care ne-o putem asuma pentru diferite tipuri de trafic. Comutatoarele Definiia cea mai rspndit a switchurilor identific orice punte multiport cu un comutator sau switch. n realitate, dei aceast definiie acoper vasta majoritate a cazurilor, exist puni multiport ce nu sunt switchuri. Uneori comutatorul este privit ca un dispozitiv de interconectare ce acioneaz att la nivel fizic, ct i la nivel legtur de date. Aceasta nu se datoreaz unei latene mai mici sau unui cost mai sczut comparativ cu o punte, ci datorit faptului c n reelele Ethernet ce folosesc mediul torsadat comutatorul preia funcia principal a hubului, i anume aceea de a asigura conectarea tuturor nodurilor la un mediu de transmisie.

65

Exist dou paradigme n reelele de calculatoare: arhitecturi bazate pe magistral i indirect pe difuzare i arhitecturi bazate pe comutare. Optarea pentru una dintre cele dou paradigme se traduce n decizia de a folosi un comutator sau un hub. O reea bazat pe huburi are un cost mai sczut i o laten mai mic. Principalul avantaj al nlocuirii huburilor cu comutatoare nu l reprezint nlturarea restriciilor impuse de regula 5-4-3, ci reducerea numrului de utilizatori ce partajeaz aceeai lime de band. Comutatoarele vor oferi protecie mpotriva atacurilor prin ascultare a liniei. Ruterul Ruterul este dispozitivul de interconectare ce are rolul de a determina calea ce trebuie urmat de un pachet pentru a ajunge la destinaie, de a interconecta i a schimba pachete ntre reele diferite. Ruterul este un dispozitiv de interconectare ce poate fi ntlnit mai ales la nivel WAN, dar i la nivelul reelei locale, una din funciile sale principale fiind i acea de a oferi posibilitatea conectrii LAN-urilor la WAN. Procesul de rutare sau de determinare a cii optime se bazeaz pe construirea i meninerea unei tabele de rutare. O intrare ntr-o tabel de rutare se numete rut i este compus din minim 3 elemente: adres de reea, masc de reea, adresa urmtorului ruter i/sau interfa de plecare. Ce se ntmpl cu un pachet ajuns la un ruter? Antetul de nivel legtura de date este despachetat. Acesta va conine doar adresa logic a destinaiei i nu i masca de reea. Ruterul va verifica mai nti dac adresa destinaie nu este cumva una dintre adresele sale. Dac este printre adresele sale, atunci cadrul va fi trecut la nivelul superior, dac nu ruterul va verifica dac adresa destinaie nu este n aceeai reea cu interfaa de pe care a primit pachetul. Dac este atunci va abandona prelucrrile asupra respectivului pachet i va lua urmtorul pachet. n cazul n care destinaia nu este nici el i nici nu se afl pe aceeai interfa de unde a primit pachetul, atunci va ncepe procesarea tabelei de rutare. Va extrage prima rut din tabel i va aplica masca de reea adresei destinaie coninut n antetul pachetului. Rezultatul l va compara cu adresa de reea a respectivei rute. Dac cele dou coincid, pachetul va fi trimis pe interfaa specificat de rut. Daca nu, este extras o nou rut din tabel. Procesul se repet pn la ultima rut din tabel sau pn la gsirea primei potriviri. Dac pachetul nu corespunde nici ultimei rute atunci acesta este abandonat i se trece la pachetul urmtor. nainte de a trimite pachetul sau de a l abandona, tabela ARP a interfeei pe care a sosit pachetul va fi actualizat folosindu-se adresa MAC i cea IP a sursei.

66