iOS: Sistemul de operare de la Apple păstrează linia flexibilă și intuitivă a prestigiosului MacOS, oferind însă câteva caracteristici suplimentare, care aduc realmente senzația de mobilitate pe smartphone, cum ar fi caracteristicile multi-touch, shake sau auto-rotate. Aspectul general al platformei nu s-a schimbat prea mult de la prima versiune. Acest lucru este foarte practic atunci când vine vorba despre obișnuința în utilizare, dar întotdeauna există loc și de mai bine, așa că gurile rele spun că i-ar prinde bine un face-lifting. iOS este de mult recunoscut ca fiind extrem de stabil, cu o utilitate care a fost, la un moment dat, o piatră de hotar în dezvoltarea sistemelor de operare pentru echipamentele mobile.
Android: JellyBean, ultima versiune a sistemului, vine cu o proprietate nouă deosebită: bara de notificări care se expandează printr-un simplu gest pe ecran. Pe această bară de notificări pot fi găsite tot timpul toate lucrurile care prezintă interes primordial (status baterie, ceas, conexiune – wi-fi sau GSM – sau alarmă), precum și notificările cu privire la tot ce „intră” pe telefon (SMS-urile, emailurile sau actualizările pentru aplicații). Ca utilitate, Android este un sistem de operare în care funcțiile sunt practice, păstrându-se, în același timp și intuitivitatea.
Aplicații și servicii
Android: Numărul de aplicații și servicii pentru Android este, după cum spuneam, destul de redus la instalare, Google producând și introducând by default în sistemul de operare doar câteva. Printre ele se numără: GoogleNow – o aplicație complexă, care vine într-un format mult îmbogățit față de Siri de la iOS. Este vorba despre managerul de recunoaștere vocală care de fapt combină mai multe funcții, printre care aplicația de căutare și cea de notificare. Google Maps – varianta mobilă a popularei aplicații, care funcționează integrat cu senzorul GPS (pentru echipamentele care posedă unul). Are harta României completă, iar navigația funcționează excelent. Share (aplicații pentru distribuire content) – Android are preinstalate doar aplicațiile de distribuire AllShare și Picasa. Pentru email, Facebook sau Google+ este necesară instalarea aplicațiilor respective. Aplicațiile pentru muzică, video, internet, sau radio sunt extrem de minimaliste.
Totuși, lista aplicațiilor ce le pot înlocui pe acestea depășea 700 000 la sfârșitul acestui an pe GooglePlay, iar complexitatea lor este mai mult decât suficientă pentru pretențiile pe care un utilizator le poate avea de la un echipament mobil.
iOS: Apple dotează iPhone-urile, iPad-urile și iPod-urile Touch cu aplicații destul de complexe – cum ar fi iTunes, dar deși lista aplicațiilor din AppStore este la fel de mare ca și cea din GooglePlay, și ofertele pentru aplicațiile alternative sunt virtual nelimitate, integrarea lor în iOS nu este atât de reușită ca și aplicațiilor native printre care se numără:
Siri – managerul de recunoaștere vocală a ridicat destule probleme la lansare, fiind mai ridiculizat decât a fost apreciat. Asta poate și din cauza reclamei disproporționate (relativ la utilitatea lui în forma actuală) care i s-a făcut. Maps – aplicație proprie a celor de la Apple, începând cu iOS 6. Ei bine, această aplicație a fost atât de greșit concepută, încât la un moment dat Apple chiar a retras-o din sistemul de operare. A înlocuit-o cu GoogleMaps. Am încercat să caut detalii despre cum funcționează aplicația acum, după ce a fost reparată, însă eu personal nu am descoperit erori, iar pe unde am încercat să investighez, am descoperit că utilizatorii fie și-au instalat GoogleMaps, fie au ales o variantă comercială, cum ar fi iGo. Pentru distribuție, iOS beneficiază de integrare Facebook. Astfel se poate da like și share direct din interfața sistemului. Nu același lucru se poate spune și despre Google+. În ceea ce privește funcțiile camerelor video și foto și aplicațiile aferente, iOS se poate lăuda cu ce e mai bun: Shared Photo Stream, utilizat împreună cu iCloud permite contactelor selectate din agendă să acceseze pozele și clipurile video distribuite. FaceTime, aplicația de telefonie video, funcționează ireproșabil. Clientul de mail este îmbunătățit față de variantele anterioare, care oricum erau cu mult mai avansate decât clienții de mail incluși în general în sistemele de operare. În ceea ce privește Safari, browser-ul de internet de la Apple, acesta are o caracteristică interesantă: se poate face sincronizare via iCloud pentru tab-urile deschise, astfel că pot fi vizualizate pe toate echipamentele iOS conectate. Chiar și managerul de apeluri este extrem de complex, ceea ce nu se poate spune și despre Android. Printre alte caracteristici interesante se numără și răspunsurile șablon ce pot fi înregistrate pentru a fi rulate în cazul în care un apel nu poate fi preluat. Lista de aplicații native pentru iOS este lungă, dar mă voi opri aici. După cum am mai spus însă, alternativele nu sunt la fel de apreciate de către utilizatori.
1. "Android Code Analysis". Retrieved June 6, 2012.
2. http://source.android.com/compatibility/index.html
3. Kirsner, Scott (September 2, 2007) - "Introducing the Google Phone”
3 . Tim Bray - "What Android Is"
4. "Android Code Analysis". Retrieved June 6, 2012.
5. "Philosophy and Goals". Android Open Source Project. Google. Retrieved 2012-04-21.
6. "Announcing the Android 1.0 SDK, release 1". September 9, 2008. Retrieved September 21, 2012.
7 http://en.wikipedia.org/wiki/Main_Page
9. Honan, Matthew (January 9, 2007). "Apple unveils iPhone". Macworld.
Craciun George
1) Stabilitatea aplicațiilor
Primele aprecieri cu privire la dezvoltarea aplicatiilor pentru platforma Android au fost amestecate[1] . Problemele citate includeau bug-uri, lipsa de documentatie, infrastructura de testare inadecvata, si lipsa unui system de gestionare a problemelor public.(Google a anuntat un system de gestionare a problemelor la data de 18 ianuarie 2008.) [2] In decembrie 2007, fondatorul startup-ului mobil MergeLab Adam MacBeth a declarat “Functionalitatea lipseste, este prost documentata sau pur si simplu nu functioneaza … Este clar ca nu este gata pentru prim-time.” [2] In ciuda acestui fapt, aplicatiile pentru android au inceput sa apara deja in saptamana urmatoare celei in care a fost anuntata platform.
Intr-un studiu realizat de catre compania Crittercism, se remarca faptul ca se intampla mult mai multe accidente la aplicatiile iOS decat la rivalii lor Android. Rezultatele se pot vedea in imaginea de mai jos, cele mai multe aplicatii care s-au prabusit au fost pe iOS 5.0.1, in timp ce aplicatiile Android par a fi mai stabile. [3]
Cu toate acestea trebuie sa notam greselile cu privire la iOS 5.0.1care a avut o rata a accidentelor destul de mare 28,64%, acest sistem de operare fiind relativ nou la acea data, este probabil ca dezvoltatorii sa nu fi facut propriile aplicatii de la baza si de aici sa apara prabusirea lor. Pe de alta parte, versiunea mai vheche iOS 4.3.3 care a fost disponibil ceva timp, a avut o prabusire a aplicatiilor de aproximativ 10,66% si iOS 4.1 a avut 8.24%.
Android dupa cum se vede, este destul de stabil avand un procent mult mai mic de prabusire a aplicatiilor, de aproximativ 1.04% pentru versiunea Android 4.0.1.
Aplicatiile iOS s-au prabusit in numar atat de mare dintr-o serie de motive cum ar fi din cauza problemelor hardware, probleme de memorie in cazul in care aplicatia utilizeaza prea multa , serviciului de localizare GPS,camera foto a dispozitivului, a conexiunii la internet, sau atunci cand se comuta intre 3G si WiFi.
Dezvoltatorii creeaza in mod constant noi actualizari pentru aplicatiile lor pentru a rezolva deverse bug-uri. Oameni de multe ori nu actualizeaza aplicatiile deoarece acestea nu sunt actualizate de sistemul de operare. Android spre deosebire de iOS, permite actualizarea automata a aplicatiilor lor, care poate elimina unele dintre probleme. In special, cand apare o noua versiune a unui sistem de operare, dezvoltatorii trebuie sa testeze aplicatiile lor sa vada daca mai functioneaza si pe noua versiune.
Cu toate acestea, trebuie mentionat ca Android permite dezvoltatorilor de a face actualizari mai rapide decat Apple. Dezvoltatorii Android poate trimite doar un update la codul sau, care poate aparea aproape chiar in timp real. Pentru iOS actualizarile se fac mult mai lent si poate dura cateva zile sau o saptamana, timp in care se pot intampla mai multe accidente in timp ce se asteapta o actualizare.
2)Stabilitatea sistemului de operare
Android consta dintr-un kernel bazat pe Linux, versiunea de kernel 2.6, iar de la Android 4.0 Ice Cream Sandwich incepe cu versiunea 3.x, cu middleware, biblioteci si API-uri scrise in C, si aplicatiile software include biblioteci Java bazate pe Apache Harmony. Platforma hardware principala pentru Android este arhitectura ARM. [4]
Kernel-ul Linux al Androidului are modificari de arhitectura facute de catre Google in afara ciclului tipic de dezvoltare[5].Android nu are un sistem nativ si implicit nici nu sustine un set complet de biblioteci standandard GNU[6].Software-ul de baze de date SQLite este utilizat in scopul stocarii datelor.Software-ul scris in Java poate ficompilat in cod masina Dalvik si executat de masina virtuala Dalvik, care este o implementare specializata de masina virtuala conceputa pentru utilizarea in dispositive mobile desi teoretic nu este o Masina Virtuala Java standard[7].
Arhitectura android:
Anumite caracteristici la care Google a contribuit a fost in special o functie de management "wakelocks" care a fost respinsa de catre dezvoltatorii kernel deoarece au simtit ca Google nu are nici o intentie de a mentine propriul sau cod.
iOS este un sistem de operare de tip Unix, initial lansat in 2007, care contine elemente din Mac OS X, tot un sistem de operare de tip Unix de la Apple. Stabilitatea sistemului de operare este data de faptul ca fara jailbreak nu se mai poate instala orice doreste utilizatorul astfel fiind gandit sa nu complice inutil lucrul in el[8].
iOS –ul este un sistem de operare inchis, pe cand Androidul deschis expune utilizatori la malware care ii poate costa furtul anumitor date. Acest lucru conteaza destul de mult pentru utilizatori, de unde rezulta ca iOS-ul este mai stabil decat Androidul prin prisma sistemului inchis pe care Apple il utilizeaza.
Un alt criteriu de stabilitate a celor doua sisteme de operare este dat si de stabilitatea aplicatiilor si configuratia hardware. Astfel Androidul tinde sa inghete de multe ori cand este suprasolicitat, sau cand o aplicatie da rateuri, pe cand iOS ruleaza la fel pe toate telefoanele si sunt putine situatii in care acesta se blocheaza.
3) Gestionarea memoriei la Android
Dispozitivele Android sunt, de obicei, alimentate cu baterii, Android este proiectat pentru a gestiona memoria RAM astfel incat consumul de energies a fie la un nivel minim, in contrast cu sistemele de operare desktop care, in general, sunt alimentate la reteaua electrica nelimitat. Cand o aplicatie Android nu mai este in uz, sistemul o va suspenda automat in memorie, in timp ce aplicatia este inca din punct de vedere tehnic “deschisa”, ea nu mai consumand resurse. Acest lucru are un avantaj mare deoarece aplicatia nutrebuie sa fie incgisa si redeschisa de la zero de fiecare data si nu mai avemun consum de energie inutil[9].
Android foloseste pentru gestionarea memoriei propria masina virtuala si propriul “run-time” pentru a gestiona aplicatiile de memorie. De asemenea gestioneaza si timpul de viata al proceselor. El opreste procesele care nu mai sunt necesare pentru a elibera resurse pentru aplicatiile cu prioritate mai ridicata.
Dalvik si “run-time-ul” Androidului sunt cap de lista al kernelelor Linux care folosesc hardware low-level, incluzand driver si managementul memoriei.
Aceasta masina virtuala a fost optimizata pentru a rula mai multe procese in acelasi timp ea asigurand totodata si un grad de securitate si protective al datelor.
Masina virtuala Dalvik este optimizată pentru dispozitive mobile. Fisierele executate de Dalvik VM au formatul Dalvik Executable (.dex), optimizat pentru un nivel mic de ocupare a memoriei. Spre deosebire de Java (care este stack-based), Dalvik este register-based, pentru a ocupa un spatiu mic de memorie. De asemenea, desi fiecare proces ruleaza intr-o masina virtuala proprie, toate procesele partajeaza o singura copie a portiunilor read-only ale masinii virtuale. [10]
Formatul fisierului .dex :
Procesele sunt oprite si distruse in fuctie de prioritatea aplicatiilor, iar daca au aceeasi prioritate la un moment date va fi distrusa cea care a fost mai mult timp la un nivel de prioritate mai scazut.
Nivelul de prioritate mai este afectat si de dependintele inter-proces. Daca o aplicatie are dependinte la un anumit serviciu, atunci acea aplicatie va avea cel putin nivelul de prioritate ca serviciul pe care il determina[11].
Tipuririle proceselor sunt:
- Active Processes – sun acele procese care gazduiesc aplicatii cu component care interactioneaza la acel moment cu utilizatorul. Aceste procese sunt cele mai importante si vor fi distruse ultimele.
- Visible Processes – sunt inactive, dar gazduiesc activitatile vizibile de catreutilizator
- Started Service Processes – sunt procesele care gazduiesc servicii care au inceput, dar procesele care ruleaza nu sunt vizivile de interfata. Acestea au un nivel de prioritate mai scazut dar sunt esentiale.
- Background Processes – sunt procese care gazduiesc activitati care nu sunt vizibile si nici nu folosesc vrunui serviciu, sunt in numar mare si pot fi distruse cu usurinta de sistem.
- Empty Processe – sunt procese retinute in memorie pentru a optimiza performantele globale
4) Gestionarea memoriei la iOS
Gestiune memoriei la iOS se face combinind doua tehnici: swapping-ul cu paginarea la cerere, pentru a evita situatii in care algoritmul de paginare ar duce la scaderea performantelor.
Schema pentru paginarea la cerere, unde fiecare proces are un spatiu de adrese format din trei segmente : text (cod), date si stiva[12].
Segmentul de text contine codul executabil al programului (instructiuni masina). Este de tip read-only. Este partajat de catre toate procesele care executa acelasi cod (procesele fii). Segmentul de text nu-si modifica dimensiunea in timpul executiei (nu creste, nu se micsoreaza).
Segmentul de date contine variabilele programului, siruri de caractere, tablouri si alte date. Este de tip read-write. Are doua parti : date initializate si date neinitializate (BSS). Datele initializate sunt datele ce primesc valori la compilare. Programul executabil contine datele initializate, textul (codul) si un header care ii spune SO-ului numarul de octeti ce trebuie alocata pentru datele neinitializate (astfel se evita pastrarea efectiva în programul executabil a spatiului necesar datelor neinitializate). Segmentul de date isi modifica, in timpul executiei, nu numai continutul (modificarea valorilor variabilelor) ci si dimensiunea (alocare si dezalocare pentru variabile dinamice).
Segmentul de stiva incepe, de obicei, de la adresa cea mai mare a spatiului de adrese virtuale a procesului si creste spre adresele inferioare. Contine stiva nucleului in spatial procesului, argumentele programului, pointer spre ambianta, stiva procesului si zona de heap.
Deoarece memoria principala este o resursa limitata, apare necesitatea ca aceasta sa fie extinsa cu o zona pe disc in care urmeaza sa fie transferate temporar procese sau parti ale acestora, prin swapping. Pentru alocarea de spatiu aici se foloseste tehnica first-fit. De transfer se ocupa procesul numit Swapper ce se gaseste intr-o bucla infinita la dispozitia nucleului SO, el avind prioritate maxima in mod nucleu[13].
Swapping-ul presupune faptul ca exista permanent un dute-vino intre programele care exista in memoria interna si cele care exista pe disc, primele fiind transferate pe disc, pentru ca ultimele sa poate fi incarcate in memoria interna spre a fi executate.
Cind un proces cere o pagina care nu exista in memorie, nucleul SO suspenda executia procesului respectiv pina cind reuseste incarcarea paginii respective, dupa care va relua procesul. Algoritmul de paginare folosit este LRU. In cazurile in care continuarea aplicarii tehnicii de paginare ar conduce la scaderea performantelor, nucleul SO activeaza swapper-ul, care intrerupe procesul curent si il pune pe disc in stare gata de rulare si va continua sa transfere pe disc procese in intregime, pina cind se elibereaza suficienta memorie[14].
Referinte:
1. Paul, Ryan (19 decembrie 2007). „Developing apps for Google Android: it's a mixed bag”
2. Morrison, Scott (19 decembrie 2007). „Glitches Bug Google's Android Software”
3. https://www.crittercism.com
4. Tim Bray (November 24, 2010). "What Android Is"
5. Androidology – Part 1 of 3 – Architecture Overview (Video). YouTube.
6. Paul, Ryan (February 23, 2009). "Dream(sheep++): A developer's introduction to Google Android"
7. http://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
8. http://ro.wikipedia.org/wiki/IOS_(Apple)
9. Paul, Ryan "The truth about Android task killers and why you don't need them”
10. http://cs.curs.pub.ro/wiki/si/lab/lab10
11. http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/
12. Sisteme de operare moderne Editia a doua, Andrew S.Tanenbaum
13. http://tips.dataexpedition.com/memory.html
14. Radu Radescu “Arhitectura sistemelor de calcul”
Ion Alexandru
1) Principii de securizare a datelor la Android:
Android este o platforma moderna, open source, iar protectia datelor necesita o arhitectura solida de securitate. Platforma Android a fost construita cu sistem de securitate pe mai multe nivele care permite o flexibilitate specifica sistemelor open source in timp ce ofera protectie a datelor pentru toti utilizatorii platformei.
Arhitectura de securitate a platformei Android:
Sistemul de operare Android cauta sa imbunatateasca securizarea datelor avand in vedere urmatoarele obiective: protejarea datelor utilizatorului, protejarea resurselor sistemului si izolarea aplicatiilor. Pentru a atinge aceste obiective este nevoie de: o securizare la nivel de sistem de operare prin intermediul kernel-ului Linux, un mediu izolat pentru rularea aplicatiilor, comunicare intre procese sigura, permisiuni acordate de utilizator pentru rularea aplicatiilor.
Schema bloc a platformei Android:
La nivelul sistemului de operare platforma Android prezinta securitatea oferita de kernel-ul Linux dar si o securitate la nivel inter-proces, pentru a asigura comunicare intre aplicatiile ce se afla in procese separate. Aceste metode de securitate la nivel de sistem de operare asigura ca pana si codul nativ este constrans de principiile de izolare a aplicatiilor. Chiar daca acel cod este rezultat de o aplicatie instalata sau este o exploatare a unei aplicatii, sistemul va prevenii acea aplicatie sa afecteaze alte aplicatii, sistemul de operare sau dispozitivul pe care ruleaza platforma.
Fiind o platforma ce permite accesarea de catre utilizatori multiplii filosofia Linux se bazeaza pe separarea datelor ce apartin unui utilizator de ceilalti potentiali utilizatori.
Platforma Android indentifica si izoleaza resursele aplicatiilor atribuind un user ID unic fiecarei aplicatii si ruland-o intr-un proces separat. Aceasta abordare este diferita fata de multe alte sisteme de operare unde aplicatiile ruleaza cu aceeasi permisiune la nivel de user. Astfel in mod normal aplicatiile nu pot interactiona una cu cealalta si in acelasi timp au acces limitat la sistemul de operare. De exemplu daca aplicatia X incearca sa citeasca datele aplicatiei Y sau sa apeleze un numar de telefon sistemul intervine deoarece aplicatia A nu are privilegiile necesare. Izolarea aplicatiilor (sau sandbox) este simpla, intuitive si are la baza modul de abordare al UNIX pentru separarea proceselor si acordarea permisiunilor.
Din moment ce izolarea aplicatiilor se realizeaza la nivel de kernel acest mod de securitate se extinde la codul nativ si aplicatiile sistemului de operare, acest lucru obsevandu-se si in figura de mai sus.
In unele sisteme de operare erorile la nivel de corupere a memoriei duc de obicei la compromiterea totala a securitatii dispozitivului. Acest lucru nu se intampla la Android datorita izolarii aplicatiilor la nivel de sistem de operare, erorile la nivel de corupere a memoriei fiind constranse particular la executarea unei aplicatii prin gradul de permisiune alocat de sistemul de operare.
Ca toate modalitatile de securitate izolarea aplicatiilor nu este perfecta, dar pentru a putea fi combatuta trebuie compromisa securitatea kernel-ului Linux.
Alte metode de protejare a datelor folosite de Android sunt reprezentate de criptarea fisierelor sistemului si folosirea unei parole pentru a putea accesa dispozitivul pe care este instalat.
2) Principii de securizare a datelor la iOS:
Spre deosebire de Android platforma iOS conceputa de cei de la Apple nu este open source acest lucru fiind un plus in domeniul securizarii datelor.
Principalele modalitati folosite de iOS pentru a maximize securitatea datelor sunt:
-
Protectia la executarea datelor: reprezinta un mod de securitate la nivelul sistemului de operare care marcheaza locatiile de memorie ca non-executabile. Acest lucru reduce oportunitatea atacurilor de corupere a memoriei.
-
Aranjamentul in mod aleator a spatiului de adrese: presupune alegerea in mod aleator a locatiilor de memorie atribuite componentelor sistemului pentru a fi extreme de dificil pentru un atacator sa exploateze sistemul si sa execute codul propriu chiar daca gaseste o vulnerabilitate.
-
Izolarea aplicatiilor: toate aplicatiile sunt compartimentizate in asa fel incat nu se pot influenta una pe cealalta si nici nu pot face schimb de date decat in cazul in care ambele aplicatii permit acest lucru in mod explicit.
-
Magazinul online de aplicatii: doar aplicatiile preluate prin App Store pot fi instalate pe platforma iOS. Tuturor aplicatiilor din App Store le este verificat codul sursa de catre Apple pentru a detecta posibile implementari ale unor atacuri asupra sistemului.
Pentru protectia datelor in cadrul iOS se folosesc tehnici atat hardware cat si software cum ar fi:
-
Criptarea hardware: presupune in cazul unui atac stergerea datelor in locul incercarii de a opri atacul. In locul stergerii lente a memoriei flash, se distruge cheia de criptare ce face ca datele utilizatorului sa devina inaccesibile. Criptarea se face cu o cheie la care sistemul de operare are acces complet, ceea ce inseamna ca pana si informatiile criptate ar putea fi expuse unui atac daca dispozitivul este accesat direct.
-
Protectia datelor printr-un cod introdus de utilizator care este folosit la criptarea datelor drept cheie.
-
Backup-ul criptat. Toate dispozitivele iOS isi fac backup automat cand se conecteaza la iTunes si se sincronizeaza cu un calculator. Daca aceasta functie este activata toate datele de pe dispozitv sunt criptate cu o parola inainte sa fie transferate pe calculator.
Pe langa metodele de securitate implementate in platforma iOS mai sunt si metode optionale ce pot fi configurate de utilizator:
-
Cod PIN sau parola a dispozitivului: daca nu se introduce corect parola sau codul PIN de un anumit numar de ori toate informatiile de pe dispozitiv sunt sterse.
-
Stergerea de la distanta: iOS suporta stergerea de la distanta a informatiilor de pe un dispozitiv ce a fost furat sau pierdut prin intermediul internetului.
Dostları ilə paylaş: |