Comparare Interfete
Proiect realizat de
Georgescu Mihai-Catalin, 433A
Prof Coordonator: Stefan Stancescu
Cuprins:
1. Introducere si Istoric
2. Command Line Interface (CLI)
3. Graphic-User Interface (GUI)
3.1. Implementarea in Windows
3.2. X Window System
4. Bibliografie
1. Introducere si Istoric
Aproape toate sistemele de operare au o interfata cu utilizatorul (UI). Aceasta interfata poate lua mai multe forme.
Una este interfata cu comenzi-linie (CLI), care poate folosi comenzi text si o metoda de la introduce (spre exemplu, o tastatura pentru a scrie comenzi intr-un format specific cu atribute specifice).
Alta este interfata batch in care comenzi si directivele pentru a controla acele comenzi sunt trecute in fisiere, iar acele fisiere pot fi executate.
Mai comun, o interfata grafica (GUI) este folosita. La GUI, in loc de a introduce comenzi in CLI sau a le memora intr-un fisier, clienti folosesc un sistem de ferestre si meniuri bazat pe mouse caracterizat de metafora unui "birou" (desktop). Utilizatorul misca mouse-ul ca sa pozitioneze cursorul sau pe imagine sau iconite aflate pe ecran (desktop-ul) ce vor reprezenta programe, fisiere, directoare, sau functii de sistem. In functie de locul unde se afla pointer-ul, apasarea unui buton de mouse poate invoca un program, selecta un fisier sau director (folder) sau poate aduce un meniu cu comenzi.
Unele sisteme folosesc doua sau trei din aceste variante.
Interfetele grafice au aparut in mare parte datorita cercetarii de la inceputul aniilor 70 la institutul Xerox Parc. Primul GUI a aparut pe calculatorul Xerox Alto in 1973. Insa, interfetele grafice au devenit mult mai populare cu aparitia calculatoarelor Apple Macintosh in 1980. Interfata pentru sistemul de operare Macintosh (Mac OS) a suferit diverse modificari in timp, cea mai semnificativa fiind adoptarea interfetei Aqua care a aparut cu Mac OX X.
Prima versiune de Windows a lui Microsoft - versiunea 1.0 - se baza pe adaugara unui interfete GUI la sistemul de oprare MS-DOS. Versiuni mai noi de Windows au facut schimbari cosmetice la GUI si au adus cateva imbunatatiri de functionalitate.
Pentru ca un mouse nu este practic pentru sistemele mobile, smartphone-uri sau tablete, ele folosesc o interfata touchscreen. Utilizatori interactioneaza folosind gesturi pe ecran -spre exemplu, apasarea sau glisarea degetelor pe ecran.
2. Command Line Interface (CLI)
Sursa: dogratian.com
Unele sisteme de operare includ CLI-ul in kernel. Altele, precum Windows sau UNIX, trateaza interpretorul de comenzi ca un program special ce functioneaza cand o cerinta este initiata sau cand un utilizator se logheaza (pe sistemele interactive). Pe sistemele unde se pot alege din mai multe interpretoare, ele sunt cunoscute ca shell-uri.
Spre exemplu, pe sistemel UNIX si Linux, un utilizator poate alege din mai multe shell-uri, incluzand Bourne shell (sh), C Shell, Bourne-Again Shell (bash), Korn Shell, si altele. Shell-uri externe sau create de utilizatori sunt deasemenea viabile. Majoritatea shell-uri aduc functionalitati similare si decizia utilizatorului de alegere se bazeaza pe preferintele personale.
Functia principala a interpretorului de comenzi este de a prelua si executa urmatoare comanda specificata de utilizator. Multe din comenzi date la aceste nivel manipuleaza fisiere: creeare, stergere, listare, printare, copiere, executare si asa mai departe. Aceste comenzi pot fi implementate in doua moduri generale.
In unul din moduri, interpretorului insusi contine codul pentru a executa comanda. Spre exemplu, o comanda de a sterge un fisier ar putea determina CLI-ul sa sara la sectiunea din codul sau ce va seta parametra si va face apelul de sistem necesar. In acest caz, numarul de comenzi ce poate fi dat determina marimea interpretorului, deoarece fiecare comanda necesita propriul cod de implementare
O metoda alternativa - folosita de UNIX, printre alte sisteme de operare - implementeaza majoritatea comenzilor prin programe de sistem. In acest fel, interpretorul nu intelege comanda in niciun fel; el doar foloseste comanda pentru a identifica un fisier sa fie incarcat in memorie si executat. Deci, programatorii pot adauga noi comenzi usor prin creearea unor noi fisiere cu nume proprii. Programul CLI, care poate fi mic, nu trebuie sa fie modificat pentru a se adauga noi comenzi.
Alegerea dintre CLI sau GUI este in general una personala. Administratorii de sistem sau utilizatorii experimentati care au o cunostiinta bogata a sistemul folosesc frecvent interpretatorul. Pentru ei, este mult mai eficient, oferindu-le acces mai rapid la activitatile pe care vor sa le realizeze. Intradevar, doar o parte din functiile unui sistem sunt valabile prin GUI, lasand cerintele mai putin comune pentru cei familiari cu CLI-urile.
In plus, CLI-urile fac cerintele repetitive mai usoare, in parte pentru ca au propria lor programabilitate. Spre exemplu, daca o cerinta frecventa necesita un set de pasi de comenzi, acei pasi poti fi inregistrati intr-un fisier, iar acel fisier poate fi rulat ca un program. Programul nu este compilat in cod executabbil ci este mai degraba interpretat de CLI. Aceste scripturi Shell sunt foarte comune la sisteme de operare precum UNIX si Linux (dar si Windows are o functionalitate asemanatoare prin fisierele batch).
In comparatie, majoritatea utilizatorilor Windows sunt multumiti cu interfata grafica Windows si rareori folosesc shell-ul MS-DOS. Sistemele de operare Mac au o evolutie diferita istorica, deoarece ele au inceput avand interfete grafice dar nu CLI-uri, interpretorul fiind introdus mai tarziu cu Mac OS X.
2. Graphic User Interface (GUI)
Multe calculatoare personale ofera un GUI.
Un GUI are 4 elemente esentiale: Windows, Icons, Menus and Pointing Devices (WIMP).
- Ferestrele (windows) sunt blocuri dreptunghiurale de zona de ecran folosite pentru a rula programe.
- Iconitele (icons) sunt simboluri mici pe care putem da click ca sa realizam ceva.
- Meniurile (menus) sunt liste de actiuni din care putem alege.
- Dispozitivele de pointare (Pointing Devices) sunt mouse-ul, trackpad-ul sau chestii asemanatoare ce le putem folosi pentru a muta cursorul pe ecran.
Software-ul interfetei grafice poate fi implementat fie cu cod la nivel utilizator, ca in sistemele UNIX, sau in interiorul sistemului de operare, ca in cazul Windows.
Intrarea pentru GUI foloseste tot mouse-ul si tastatura, doar datele de iesire se duc aproape mereu la o componenta hardware speciala denumita adaptor grafic (placa video). Adaptorul grafic contine o memorie speciala numita video RAM care va retine imaginile ce vor aparea pe ecran.
Obiectul de baza pe ecran este o zona dreptunghiulara denumita fereastra. Pozitia si marimea ferestrei sunt determinate unit prin coordonate (in pixeli) a doua colturi diagonal-opuse. O fereastra poate contine o bara de titlu, bara de meniu, bari pentru derulari orizontale sau verticale.
3.1 Implementarea in Windows
Un program Windows in mod normal creeaza una sau mai multe ferestre cu o clasa obiect pentru fiecare. Cu fiecare program se asociaza o lista de mesaje un set de proceduri analizor (handler). In final, comportamentul programului este dat de urmatoarele evenimente, care sunt procesate de procedurile analizor. Asta e un model foarte diferit de felul procedural al lui Unix.
Cand o fereastra este creata, parametrii specifica daca fereastra poate fi mutata de utilizator, redimensionata sau derulata. Principala fereastra produsa de majoritatea programelor permit actiunile anterioare, ce are un enorm efect asupra modului in care programele in Windows sunt scrise. Esential, programele trebuie sa fie informate despre modificari asupra marimii ferestrei si trebuie sa fie pregatite pentru a reface continutul ferestrul in orice moment.
Astfel, programele Windows sunt orientate pe mesaje. Actiuniile utilizatorilor cu tastatura si mouse-ul sunt preluate de Windows si prelucrate in mesaje trimise catre programul ce foloseste fereastre. Fiecare program are o lista de mesage unde toate mesaje legate de fereastra sunt trimise. Bucla principala a programului consta in a lua urmatorul mesaj si al procesa prin apelarea unei proceduri interne specifice tipului de mesaj. In unele cazuri, Windows insasi poate apela acele proceduri direct, trecand peste lista de mesaje. Acest model este foarte diferit de modelul dezvoltat la UNIX care este orientat de eveniment si este foarte modular, sistemul grafic avand un rol mult mai mic in administrarea ferestrelor.
Afisarea propriu-zisa pe ecran este data de un pachet ce contine sute de proceduri care formeaza GDI (Graphics Device Interface). El poate manipula text si orice fel de grafica si este proiectat sa fie independent de platforma si dispozitiv. Inainte de a se "desena" imaginea pe ecran, programul trebuie sa obtine un context de dispozitiv, care este o structura de date ce contine proprietatile ferestrei (font, culoare, fundal, etc).
3.3. Sistemul X Window
Sursa:wikipedia.org
Aproape toate sistemele UNIX isi bazeaza interfata lor cu utilizatorul pe sistemul X Windows (sau pe scurt X), dezvoltat la MIT ca parte a proiectului Athena in anii 80. Este foarte portabil si poate rula in intregime in spatiul utilizatorului. Initial a fost intentionat pentru a conecta un numar mare de terminale de utilizatori cu un calculator server central, deci este logic impartit in software client si software gazda, ce poate rula potential pe calculatoare diferite. Pe calculatoarele personale moderne, ambele componente pot rula pe aceeasi masina. Pe sistemele Linux, mediile desktop populare Gnome si KDE incorporeaza X.
Cand X ruleaza pe o masina, software-ul care colecteaza datele de intrare de la tastatura si mouse si scrie datele de iesire la ecran este numit X server. El trebuie sa tina cont de care fereastra este selectata in acel moment (sau unde se afla pointer-ul mouse-ului), ca sa poata stii carui client ii va trimite noi date de intrare de la tastatura. El comunica cu programele ce ruleaza (posibil intr-o retea) denumite X clients. El le trimite datele de la mouse si tastatura si accepta comenzi de afisare de la acestea.
Un lucru inedit la acest sistem ca serverul X se gaseste mereu in interiorul calculatorului utilizatorului in timp ce clientul se poate gasi pe un alt calculator departat, dar asta se leaga cu rolul esential al unui serverului: afisarea informatiilor pe ecran, deci are sens sa fie apropiat de utilizator. Programul in cazul asta este un “client” server-ului sa faca lucruri precum afisarea de text si figuri geometrice. Serverul (din PC-ul local) face doar ce ii se spune, ca toate serverele.
Cand rulam Gnome sau KDE pe o singura masina, clientul este doar o aplicatie ce foloseste libraria X care comunica cu X server pe aceeasi masina (dar foloseste o conexiune TCP cu socket-uri, la fel ca in cazul la distanta).
Motivul pentru care este posibil sa rulam sistemul X Window in UNIX (sau alt sistem de oeprare) pe o singura masina sau intr-o retea este protocolul X intre client si server. Nu este relevant daca serverul si clientul sunt pe aceeasi statie sau separate intr-o retea locala, sau aflate la mii de kilometri departare si conectate prin Internet. Protocolul si operatia de sistem sunt identice in toate cazurile.
Sursa:http://menehune.opt.wfu.edu/
X este doar un sistem de afisare prin ferestre. El nu este o interfata grafica completa. Pentru un GUI complet, alte straturi de software ruleaza deasupra lui. Un strat este Xlib, care este un set de librarii de functii pentru a aceesa functionalitatea lui X. Aceste proceduri formeaza baza lui X Window System si sunt ceea ce examinam mai jos, dar sunt prea primitive pentru majoritatea aplicatiilor sa le acceseze direct. Spre exemplu, fiecare click de mouse este raportat separat, astfel incat determinarea daca doua click-uri formeaza un dublu click trebuie sa fie realizata deasupra Xlib.
Pentru a face programarea cu X mai usoara, un set de unelte denumit Intrinsics este creat ca parte a lui X. Acest strat se ocupa de butoane, bari de derulare (scrollbar) si alte elemente grafice denumite "widgets".
Pentru a face o adevarata interfata grafica, cu un aspect uniform, inca un alt strat este necesar (sau mai multe). Un exemplu este Motif, care este baza lui CDE (Common Desktop Environment) folosit de Solaris si alte sisteme UNIX commerciale. Majoritatea aplicatiilor folosesc apeluri la Motif decat la Xlib. Gnome si KDE au o structura similara, dar cu librarii diferite. Gnome foloseste libraria GTK+ si KDE foloseste libraria Qt.
Deasemenea se poate observa cum administrarea ferestrelor nu face parte din X. In schimb, un proces client X separat, denumit "window manager", controleaza, creearea, stergerea sau mutarea ferestrelor pe ecran. Pentru a administra ferestre, el trimite comenzi la serverul X spunand-ui ce sa faca. De obicei el ruleaza pe aceeasi masina ca si server X, dar in teorie poate rula oriunde.
Acest design modular, bazat pe mai multe straturi si programe, face ca sistemul X sa fie foarte portabil si flexibil. El a fost portat pe majoritatea versiunilor de UNIX, inclusiv Solaris, toate variantele de BSD, AIX, Linux etc, facand posibil ca programatorii de aplicatii sa aibe o interfata standard pentru mai multe platforme. In comparatie, in Windows, sistemele de interfata grafica si ferestre este imbinat in GDI si se gasesc in kernel, care le fac mai greu de intretinut si nu sunt portabile.
Cand un program X porneste, el deschide conexiune cu unul sau mai multe servere X. Sistemul X considera conexiuna ca fiind sigura in sensul ca mesajele pierdute sau duplicate sunt controlate de software de retea si nu este nevoit sa se ocupe de erorile de retea. In general, TCP/IP este folosit intre client si server.
Patru tipuri de mesaje se duc prin conexiune:
1. Comenzi de desen/afisare de la program la server.
2. Raspunsuri de la server la cererile programului
3. Anunturi date de mouse, tastatura sau altele.
4. Mesaje erori.
Majoritatea comenzilor de afisare sunt trimise din program la server X ca mesaje cu o singura cale. Nu este asteptat niciun raspuns. Motivul este ca atunci cand procesele client si server sunt pe masini diferite, ar putea lua o perioada importanta de timp pentru ca o comanda sa ajunga la server si sa fie realizata. Blocand aplicatia program in acest timp ar incetini-o fara motiv. Altfel, cand programul necesita informatie de la server, el doar asteapta pana raspunsul vine inapoi.
Ca si Windows, X este foarte dependent de mesaje sau evenimente. Evenimentele curg de la server X la program, in general ca raspuns la o activitate a omului precum apasarea de taste, miscarea mouse-ul sau o fereastra deschisa. Fiecare mesaj eveniment este de 32 de octeti, cu primul octet oferind tipul de eveniment si urmatorii 31 informatii aditionale. Ca si in Windows, evenimentele sunt insiruite, si program citeste evenimentele din lista de intrari. Insa, fata de Windows, sistemul de operare nu apeleaza niciodata procedurile din interiorul programului aplicatie de unul singur. El nu stie nici macar care proceduri se ocupa de oricare eveniment.
Un lucru importat in X este resursa. O resursa este o structura de date care contine anumite informatii. Programele aplicatii creeaza resurse pe server de scurta durata (se sterg la urmatoarea pornire a computerului). Resurse tipice sunt ferestrele, fonturile, paletele de culori, cursori sau contexte grafice
Cum arata un program ce utilizeaza sistemul X Window:
1. Incepe prin includerea unor antete cerute si declararea unor variabile.
2. Se conecteaza la serverul X specificat ca paramentrul la XOpenDisplay.
3. Aloca o resursa fereastra si stocheaza un analizor (handle). Dupa aceea, el ii spune managerului de ferestre ca exista o noua fereastra pe care o poate controla.
4. Apelul la XCreateGC creeaza un context grafic (similar cu contextul de dispozitiv de la Windows) in care propriietatile ferestrei sunt stocate.
5. Apelul la XSelectInput ii spune serverului X care evenimente programul este pregatit sa le proceseze. In acest caz este interesat in clickuri mouse, tastari si ferestre descoperite.
6. In final, apelul la XMapRaised va mapa noua fereastra pe ecran. In acest punct fereastra e vizibila pe ecran.
Principala bucla repetitiva contine doua instructiuni si este mai simpla decat bucla corespunzatoare in Windows.
Prima instructiune incarca un eveniment si a doua preia evenimentul pentru procesoare. Cand un eveniment indica ca programul s-a terminat, se termina bucla. Inainte de a iesi, programul desface contextul grafic, fereastra si conexiunea.
Multi programatori prefer un CLI traditional pentru sisteme UNIX. X face asta cu un program client numit xterm. Acest program emuleaza un terminal. Astfel editoare precum vi si emac pot fi folosite ca terminale fara modificari.
4. Bibliografie
www.linfo.org
www.freedesktop.org
wiki.archlinux.org
Modern Operating System 3rd ed - Andrew S. Tanenbaum
Operating System Concepts 9th ed - Abraham Silberschatz, Peter Baer Galvin, Greg Gane
X Window System: The Complete Reference to Xlib, X Protocol - Robert W. Scheifler & James Gettys
Dostları ilə paylaş: |