Arhitectura sistemului de operare pentru Iphone



Yüklə 47,92 Kb.
tarix07.01.2018
ölçüsü47,92 Kb.
#37350

Croitor Alina-Cristina – master IISC, anul 1

Arhitectura sistemului de operare pentru Iphone

Sumar


  1. Introducere

  2. Arhitectura OS pentru Iphone

  3. Comparatie cu alte OS

  4. Bibliografie




  1. Introducere

    1. IPHONE

Iphone este linia de echipamente de tip smartphone construita si distribuita de firma Apple Inc. Printre functiile pe care le indeplineste cea mai noua versiune de Iphone se numara: telefon cu camera (inclusiv mesagerie text si mesagerie vocala vizuala), media player portabil (echivalentul unui iPod), client Internet (cu e-mail, browser, si conectivitate Wi-Fi), GPS si ,mai nou, Microsoft Exchange pentru Outlook- toate acestea folosind ecranul multi-touch care pune la dispozitia utilizatorului o tastatura fizica.

Sistemul de operare care ruleaza pe Iphone (si pe iPod Touch) se numeste iPhone OS. Acesta este bazat pe o varianta a sistemului de operare Darwin care se gaseste si in sistemul de operare Mac OS X. De asemenea, este inclusa si componeneta software „Core Animation” de la MAC OS v10.5 Leopard. Interfata grafica in miscare este oferita cu ajutorul componentei OpenGL ES 2.0. Sistemul de operare ocupa mai putin de o jumatate de GB din capacitatea totala de stocare a aparatului, care e de 4 pana la 32 de Gb si e capabil sa suporte mai multe aplicatii atat de la Apple cat si de la alti vendori (aplicatii „third-party”). Desi iPhone OS este considerat a fi versiunea mobila a sistemului de operare Mac OS X, de mentionat este ca aplicatiile software nu pot fi direct copiate de pe Mac OS X ci trebuie rescrise si compilate specific pentru iPhone OS.

Una din caracteristicile unice ale sistemului de operare iPhone comparativ cu sistemul de operare de la Blackberry, Microsoft Mobile, Symbian si Android este faptul ca aproapte toate interactiunile cu telefonul se fac prin intermediul touchscreenului. Sistemul de operare face o translatie a atingerilor in comenzi, fara a utiliza traditionala tastatura sau a butoanelor. O alta caracteristica exclusiva este functia de mesagerie vocala care permite ca mesajele vocale sa fie ascultate in orice ordine (nu neaparat in cea in care au fost receptionate).

Desi exista mai foarte multe aplicatii „third-party” disponibile pentru iPhone, cele incluse sunt iTunes, Stocks, Weather, Notes, harti cu GPS, calendar, calculator, un player de muzica de tip iPod, o aplicatieYouTube si desigur aplicatii specifice oricarui telefon cum ar fi organizator de contacte si mesagerie vocala. Ca browser web se foloseste o aplicatie Safari (versiunea mobila) care e compatibila cu tehnologiile 3G, EDGE si WiFi. Sistemul de operare iPhone suporta cele mai multe tipuri de mail cum ar fi IMAP sau POP inclusiv MobileMe, Microsoft Exchange, Yahoo!, Gmail si AOL.



1.2 Limitari ale iPhone OS

Sistemul de operare al iPhoneului este destul de capabil desi ii lipsesc anumite caracteristici pe care multi utilizatori de telefoane mobile le doresc cum ar fi Multi Media Messaging (MMS). Imaginile trebuie trimise printr-un cont de mail iar imaginile primite prin MMS trebuiesc vizualizate printr-o aplicatie web. In plus sistemul de operare iPhone nu suporta Flash; insa se preconizeaza ca Adobe va rezolva aceasta problema in viitor.



  1. Arhitectura OS pentru Iphone

iPhone OS cuprinde sistemul de operare si tehnologiile care se folosesc pentru a rula aplicatii pe iPhone si iPod de tip „touch”. Desi imparte o mostenire comuna cu Mac OS X, iPhone OS a fost proiectat sa pentru a intruni toate cerintele unui mediu mobil, unde nevoile utilizatorului sunt diferite. Fata de Mac OS X exista insa si tehnologii dispinibile numai pe iPhone OS cum ar fi de exemplu intrefata „multitouch” si suportul accelerometrului.



Figură 1 - Aplicatii care ruleaza peste iPhone OS

La nivel inalt iPhone OS se comporta ca un intermediar intre partea hardware a iPhone si aplicatii (dupa cum se observa si din figura). Aplicatiile nu interactioneaza niciodata direct cu partea hardware ci trec prin interfetele de sistem care comunica prin driverele potrivite. Acest nivel de abstractizare protejeaza aplicatia de schimbarile din partea hardware de nivel scazut.

iPhone OS utilizeaza o stiva soft destul de intuitiva. La baza acesteia este kernelul Mach si driverele hardware care gestioneaza executia de ansamblu a programelor in aparat. Deasupra acestui nivel se gasesc nivele aditionale care contin tehnologiile „core” si interfetele utilizate pentru dezvoltare. Desi iPhone OS nu expune niciuna dintre interfetele de kernel sau de nivel de driver acesta expune totusi interfete de nivel mai inalt a stivei.

Nivelele tehnologice ale iPhone OS

In iPhone OS, arhitectura de sistem de baza precum si multe dintre tehnologii sunt foarte asemanatoare cu cele de la Mac OS X. Kernel-ul din iPhone OS este bazat pe o varianta a aceluiasi kernel de baza Mach care se gaseste si in Mac OS X. Deasupra acestui kernel se gasesc nivelele de servicii care sunt utilizate pentru a implementa aplicatii pe aceasta platforma. Figura 2 evidentiaza o viziune de nivel inalt a acestor nivele.



Figure 2  Nivelele tehnologice ale iPhone OS


Nivelul Cocoa Touch Layer

Nivelul Cocoa Touch este unul dintre cele mai importante nivele in iPhone OS. Acesta cuprinde „framework”-urile cheie care pun la dispozitie infrastructura necesara pentru implementarea aplicatiilor in iPhone OS. De exemplu framework-ul Foundation asigura suportul orientat pe obiecte pentru colectii de date, gestionarea fisierelor, operatii de retea si altele. Framework-ul UIKit asigura infrastructura vizuala pentru aplicatii inclusiv clasele pentru ferestre, vizualizari, comenzi si controlerele care gestioneaza aceste obiecte. Alte frameworkuri de la acest nivel ofera acces la contactele si fotografiile utilizatorului precum si la accelerometru si alte insusiri hardware ale telefonului.



Nivelul Media

In nivelul Media se gasesc tehnologiile grafice audio si video folosite. De exemplu, nivelul Media contine tehnologii fundamentale folosite pentru suportul graficii 2D si 3D, audio, video. Acest nivel include tehnologii OpenGL ES, Quartz, and Core Audio bazate pe limbajul C. Contine de asemenea Core Animation care este un motor de animatie avansat bazat pe limbajul C orientat pe obiecte.


Nivelele Core Services si Core OS
Nivelul Core Services pune la dispozitie serviciile de sistem fundamentale pe care il folosesc toate aplicatiile. Desi utilizatorul nu folsoeste aceste servicii direct multe parti din sistem sunt construite deasupra acestora.
Aceasta stratificare ofera posibiltati variate cand vine vorba de implementarea codului pentru dezvoltarea de noi aplicatii. De exemplu, nivelele Core OS si Core Services contin interfete fundamentale pentru iPhone OS, inclusiv cele utilizate pentru a accesa fisiere, tipuri de date de nivel scazut, servicii Bonjour, socket-uri de retea s.a.m.d. Aceste interfete sunt cel mai adesea bazate pe limbajul C si includ tehnologii cum ar fi Core Foundation, CFNetwork, SQLite precum si acces la fire POSIX si socketuri UNIX.

EXEMPLE

Diagrama de mai jos prezinta intregul proces al felului de interactionare a partii hardware asa cum este pus la dispozitie de si catre partea software a iPhone.



Figură 2-Diagrama arhitecturii Iphone

Aceasta diagrama prezinta intregul proces de intrare/iesire. Exista atat un nivel hardware cat si un nivel procesor iar motivul este ca partea hardware se refera la cipurile propriu-zise ale perifericelor telefonului (ex: gyros sau display) in timp ce partea de procesor se ocupa mai mult cu setul e instructiuni ARM la nivel de asamblare.

Mai jos sunt descrise fiecare nivel din arhitectura sistemului de operare al iPhoneului:


  • Aplicatie: Acesta reprezinta aplicatia care ruleaza in mod curent in iPhone, proprietara Apple. Aceasta a fost compilata in cod proprietar de compilatorul iPhone distribuit de Apple si s-au facut legaturile cu rutina orientata pe obiecte in C si biblioteca C de catre „linker”. Aceasta aplicatie ruleaza in intregime in interiorul mediului de lucru pentru utilizator creat de sistemul de operare al iPhoneului.

  • Frameworks/API: Cocoa Touch, apeluri OpenGL de nivel inalt, etc. Aceste apeluri API sunt antete distribuite de Apple odata cu SDK (Software Developement Kit). Acestea se gasesc deasupra rutinei orientate pe obiecte C

  • Objective-C runtime: Acest nivel este compus atat din biblioteci de rutine orientate pe obiecte cu legaturi dinamice cat si din bibliotecile C de baza.

  • iPhone OS: Acesta reprezinta kernelul, driverele si serviciile care compun sistemul de oprerare al iPhoneului.

  • Processor: Nu se refera atat de mult la cipul ARM fizic (continut in nivelul de hardware) ci mai mult la setul de instructiuni ARM si tabelul descriptorilor de intreruperi asa cum este el alcatuit de sistemul de operare al iPhoneului atunci cand acesta porneste si face initializare de drivere.

  • Firmware: Acest nivel face referire la codul specific cipului care fie este continut cu memorie in interiorul perifericei in sine, fie in cadrul driverului pentru acel periferic(de ex: touchscreen sau giroscop)

  • Hardware: Se refera la cipurile din circuitele iPhoneului. Procesorul in sine se gaseste sub acest nivel dar setul de instructiuni si tabelul de descriptori sunt continute de nivelul „Procesor”.

Examplu 1: Hardware spre Aplicatie: Giroscop

Giroscopul este utilizat pentru a detecta atunci cand iPhone-ul este intors pe o parte. Vom descrie exemplul acesta pornind de la hardware:



  1. Atunci cand giroscopul detecteaza o schimbare de pozitie, modifica un registru pentru a indica schimbarea.

  2. Nivelul de Firmware detecteaza schimbarea si noteaza ca valoarea indica faptul ca starea iPhoneului este acum diferita (fata de valoarea eronata) si trimite o intrerupere procesorului prin magistrala de sistem.

  3. Procesorul ARM al iPhoneului primeste intreruperea si cheama o rutina de deservire a intreruperii (ISR) pe care sistemul de operare al iPhoneului o pregateste in timpul initializarii driverelor.

  4. ISR este o functie (subrutina) localizata in codul pentru iPhone OS . Aceasta recunoaste intreruperea si incepe sa o proceseze prin intermediul driverului corespunzator. Sistemul de operare in sine trimite un semnal aplicatiei curente active (daca exista vreuna) sub forma unui semnal de tip Unix.

  5. Acest semnal este manevrat in concordanta cu specificatiile rutinelor C/C-orientat pe obiecte, deoarece atat compilatorul cat si linkerul de aplicatii al iPhoneului construiesc aplicatia specific sa faca asta decat sa manevreze direct semnalul. Rutina orientata pe obiecte inainteaza semnalul ca mesaj specific planului (framework) aplicatiei, mai intai verificand daca aplicatia curenta a fost conceputa sa se ocupe de respectivul mesaj.

  6. Daca mesajul poate fi procesat printr-o metoda (subrutina) in cadrul unei aplicatii, atunci mesajul este primit si procesat. In cazul exempluilui cu gyro, aplicatia isi va ajusta interfata pentru a putea fi afisata pe intreg ecranul in formatul panoramic al afisajului (display). In functie de tipul mesajului, planul (framework) ar putea de asemenea verifica daca aplicatia indica o eroare in procesarea de mesaje, si in caz ca da ar putea sa faca actiuni suplimentare.

Acest exemplu infatiseaza procesul prin care o actiune hardware este procesata de software. Acelasi proces este utilizat pentru intrarile de tip touchscreen, sunet sau camera. Butoanele de sus si de jos sunt specifice sistemelor de operare, totusi butoanele de meniu nu fac decat sa trimita un semnal de incheiere aplicatiei pentru a putea efectua orice sarcini de terminare (cum ar fi scrierea fiserelor , etc.), in timp ce butoanele cele mai de sus vizeaza o rutina a organizatorului (scheduler) de alimentare care suspenda aplicatia curenta si inchide touchscreenul pentru a conserva viata bateriei.

Examplu 2: Aplicatie catre Hardware: Afisaj

Dupa expunerea exemplului in care e descris cum aplicatia iPhone primeste mesaje cauzate de hardware, voi prezenta un exemplu in care aplicatia cere o anumita actiune de la hardware



  1. Aplicatia, odata incarcata in memorie si pornita in executie doreste sa afiseze o imagine pe ecran. Presupunem ca procesul de incarcare al imaginii din discul de depozitare este terminat si acum nu mai trebuie decat sa se afiseze imaginea pe ecranul touchscreen (componenta hardware).

  2. Aplicatia creeaza un apel API (framework), trimitand o referinta imaginii din cadrul apelului (care este, la nivelul cel mai de baza adresa de inceput din memorie sau referinta hard driveului unde este stocata imaginea, tipul imaginii si dimensiunea imaginii)

  3. API /framework-ul primeste apelul de functie si face translatia intre interfata de procesare de imagini de nivel inalt si o colectie de apeluri catre rutine orientate pe obiecte C, care la randul lor, vor face apelurile necesare catre biblioteca C.

  4. Biblioteca C (cu legaturi dinamice), dupa ce a primit o serie de apeluri de functii de la rutinele orientate pe obiecte in C si frameworkurile si API-urile corespunzatoare va prelucra mai departe functiile in apeluri de sistem la nivel de asamblare (prin intreruperi software) pe care kernelul iPhone OS le poate procesa.

  5. Kernelul iPhone OS dupa ce a primit apelurile de sistem in format assembler de la biblioteca C, va apela driverele potrivite (cele de afisaj pe touchscreen in acest caz) pentru a interactiona cu partea hardware. La nivelul cel mai de baza drverele vor seta registrii cipurilor afisajului touchscreenului pentru a afisa culorile la coordonatele potrivite astfel incat sa afiseze imaginea dupa cum cere aplicatia.

  6. La nivelul hardware, unde afisajul ecranului fizic este schimbat astfel incat sa afiseze imaginea pentru utilizator.

Se observa ca sunt necesare trei apeluri diferite (API/framework/ biblioteca) doar pentru a spune kernelului sa inceapa comunicarea cu partea hardware. Acesta este specific lucrului cu un sistem Unix de baza care pune la dispozitie o interfata prietenoasa, de nivel inalt.

Framework-urile/API-urile sunt un set de functii de care dezvoltatorul are nevoie pentru a-si face aplicatia sa interactioneze cu aparatul si sistemul de operare al iPhone-ului. Framework-ul, care face parte din rutina generala orientata pe obiecte in C este o serie de apeluri de functii de nivel inalt (si extensii C in cazul unor rutine C orientate pe obiecte) pentru a permite o interfata mai prietenoasa bibliotecii C.



Biblioteca C se gaseste sub rutina C orientata pe obiecte si, de fapt, este cea care alcatuieste rutina punand la dispozitie extensii de tip dinamic in limbajul C (spre deosebire de C++ care arata obiect-orientata). Biblioteca C care are legaturi dinamice translateaza mesaje care necesita o interventie de nivel mai de baza in apeluri de sistem de tip UNIX, unde

Organizatorul/Scheduler

Organizatorul iPhone se bazeaza pe cel al MAC OS. Acest tip de organizator este derivat din cel folosit in OSFMK 7.3. Planificarea proceselor pentru acest scheduler se bazeaza pe un sistem de cozi de asteptare cu diferite prioritati care sunt gestionate in diferite moduri. Nivelele de prioritate saunt impartite in patru categorii in functie de caracteristici si sunt evidentiate in tabelul de mai jos:


Banda de Prioritati


Caracteristici

Normal

Aplicatii cu threaduri de prioritati normale


Prioritate inalta de sistem

Threaduri a caror prioritate a fost ridicata peste cea normala

Doar mod kernel

Rezervata threadurilor create in interiorul kernelului care trebuie sa ruleze cu o prioritate mai mare decat cele folosite de catre utilizator (ex: I/O Kit workloops)

Threaduri in timp real

Threaduri a caror prioritate e bazata pe obtinerea unei fractiuni bine definite de cicluri de ceas totale, indiferent de alte activitati (ex: intr-o aplicatie audio)

Threadurile pot migra intre nivelele de prioritate din mai multe motive, in principal in functie de algoritmul de impartire al benzii folosit. Totusi migratia se face in cadrul unei benzi date.

Threadurile marcate ca fiind de prioritate in timp real sunt tratate special de catre organizator. Un thread in timp real spune oranizatorului ca trebuie sa ruleze A cicluri in urmatoarele B cicluri. De exemplu, trebuie sa ruleze 3000 de cicluri de ceas din urmatoarele 7000 pentru a putea fi sincronizat. De asemenea anunta daca aceste cicluri trebuie sa fie contigue. Desi in general nu este recomandata utilizarea unor cuante mari de cicluri contigue, totusi uneori este necesara mai ales pentru aplicatii in timp real.

Kernelul va face toate eforturile sa onoreze cererea, dar cum softul este in timp real, nu poate ofeti niciun fel de garantii. In particular, daca un thread in timp real face o cerere relativ rezonabila, prioritatea acestuia va ramane in banda de timp real, daca insa „minte” in mod flagrant in legatura cu cerintele sale ar putea fi redusa la o prioritate normala.

Exista mai multe cauze pentru schimbarea unei prioritati. Dupa cum am mentionat si mai devreme, un thread in timp real este penalizat (si poate fi chiar degradat pana la o prioritate normala) daca isi depaseste cuanta de timp in mod repetat fara blocare. Threadurile care cer timp mare de calcul primesc o prioriate mai scazuta pentru a minimiza timpul de raspuns pentru aplicatiile interactive astfel incat threadurile cu cerinte mari si prioritate inalta sa nu monopolizeze sistemul si sa impiedice functionarea threadurilor de tip I/O cu prioritate scazuta. Chiar si cu o prioritate scazuta threadurile cu timp mare de procesare tot ruleaza frecvent deoarece threadurile I/O de prioritate inalta necesita un timp scurt de procesare.

Toate aceste procedee opereaza continuu in organizator. De aceea threadurile se misca mereu de sus in jos in prioritate in functie de comportamentul lor in sistem.

Organizatorul in iPhone este capabil sa ruleze un proces intreg (aplicatie) in fundal dar pana la varianta Iphone OS 3.0 beta acest lucru a fost restrictionat pentru aplicatii Apple cum ar fi cea de mail. Organizatorul/kernelul tine cont de care ID de proces este in mod activ cel curent pentru a trimite semnale (primite ca mesaje prin intermediul bibliotecilor), catre procesul potrivit. Odata cu noua versiune aplicatiile proprietare sunt capabile sa ruleze in fundal. Organizatorul este capabil suspende aplicatia care ruleaza in mod curent pentru a intra intr-o stare de putere joasa iar asta demonstreaza atat caracteristicile speciale de gestionare a alimentarii ale iPhoneului pentru a conserva viata bateriei, la fel si capacitatea organizatorului de a opri programul care ruleaza in mod curent pentru a-l relua mai tarziu.




  1. Comparatie cu alte sisteme de operare

Kernelul iPhone

Dupa spuneam si mai devreme kernelul iPhone este de tip Mach. In ceea ce priveste extensiile kernelului, iPhoneul foloseste aceelasi kit I/O de arhitectura ca Mac OS X, permitand Apple sa refoloseasca mult cod gata facut care deja era functional pentru Mac. Kitul I/O din Mach foloseste extensii ale kernelului sau kexts pentru a adauga suport hardware de nivel scazut.

Din cauza ca se utilizeaza in kernel este foate important ca acestea sa fie cat se poate de mature si solide. Cand un software cade in afara kernelului, de obicei poate fi restartat. Insa cand ceva de prabuseste in kernel se poate crea un blocaj si e nevoie de reboot.

Apple nu recomanda adaugarea de extensii la Mac OS X decat daca nu exista alta modalitate de a duce la capat cerinta respectiva deoarece poate duce la probleme de instabilitate.

Kextturile adaugate la Iphone se refera la inputul USB, specific unui aparat cu interfata pentru utilizatori umani, mai exact ecran multitouch:

• IOUSBDeviceFamily


• IOHIDFamily
• AppleMultitouchSPI

Perechea de mai jos se refera la extensii legate de VPN (Virtual Private Networks). Este o modalitate a stivei de retea de a asigura un tunel pentru trafic securizat peste o retea publica, cum ar fi internetul.

• L2TP.ppp
• PPTP.ppp

Comparatie intre kernelul iPhone Kernel si cel Mac

Kextsurile iPhoneului nu sunt identice cu cele ale Mac. De exemplu, calculatoarele Mac au kextsuri pentru camera iSight, hardware audio si video, gestiunea alimentarii si a temperaturii si interfete seriale. Iphone nu are echivalente pentru aceste optiuni.

Aparent tot suportul hardware din iPhone e construit in kernelul acestuia si nu e implementat in kext. La Mac, in schimb, diferite modele au diferite componente hardware si de aceea e necesara o sructura modulara de plugi-in-uri. Momentan nu exista varietate hardware la iPhone.

Printre acestea , de mentionat mai este faptul ca Mach ofera un sistem de gestiune al alimentarii foarte sofisticat. De aceea prima generatie de iPhoneuri s-a remarcat printr-o mare durabiliatate a bateriei , de obicei dubla fata de celelalte smartphoneuri.



RAM de sistem si RAM de tip Flash (comparatie)

O alta diferenta semnificativa intre iPhoneuri si alte softphoneuri se leaga de RAM de sistem si RAM-ul Flash. Pe iPhone nu exista discuri fizice ci doar imagini de discuri flash RAM. Un fisier desktop DMG contine o copie arhivata a continuturilor unui drive. Cand e montata pe Mac OS X acesta se comporta ca un disc fizic, desi e mai rapid deoarece se gaseste in intregime in memoria RAM.

IPhoneul poate monta si rula OS X din discul imagine direct din RAM Flash. Si alte sisteme mobile (cum ar fi Palm OS, Symbian si Windows Mobile) au o arhitectura similara de rulare direct din RAM Flash.





Figură 3

Diferenta majora dintre iPhone si sistemele mobile existente este aceea ca cele mai multe telefoane au 64 MB de RAM, 128 MB sau mai putin de Flash si consuma aproximativ 40 MB pentru sistemul lor de operare si pentru aplicatii, ramanand putin spatiu de stocare pentru utilizator. Acestea pun la dispozitie sloturi SD Flah RAM pentru a adauga spatiu dar acesta e limitat la 2 GB.

iPhoneul are fie 4096 MB (4 GB) fie 8192 MB (8 GB) de Flash RAM instalat. El consuma in jur de 700 MB cu OS X si aplicatiile sale. De asemenea contine 128 MB de RAM de sistem utilizat de aplicatiile care ruleaza, ceea ce inseamna dublul RAM-ului de sistem si de 64 pana la 128 de ori mai mault decat Flash RAM.

De aceea iPhone nu are nevoie de slot de card SD. Deja utilizeaza de 2-4 ori mai multa memorie Flash instalata decat poate fi adaugata potential pe alte telefoane folosind carduri Flash SD.

Astfel se explica de ce iPhone poate sa ofere aplicatii Internet reale in timp ce Palm, Windows Mobile sau Symbian nu au cum sa ofere aceasta functionalitate fara sa isi rescrie in totalitate sistemele de operare mobile.


  1. Bibliografie

www.wikipedia.com

www.roughlydrafted.com

lifehacker.com



developer.apple.com




Yüklə 47,92 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin