WPAM W4 Mobilny system operacyjny C-BY-SA Piotr Gawrysiak Piotr Gawrysiak pgawrysiak@supermedia.pl Politechnika Warszawska Instytut Informatyki Zakład Systemów Informacyjnych 2012
Software co to znaczy mobilny system operacyjny??? Czy można zastosować system operacyjny przeznaczony dla urządzeń stacjonarnych w urządzeniach mobilnych?
Software co to znaczy mobilny system operacyjny??? Czy można zastosować system operacyjny przeznaczony dla urządzeń stacjonarnych w urządzeniach mobilnych? Oczywiście że można co nie znaczy że będzie to rozwiązanie optymalne
System operacyjny - funkcje Oczywiście funkcjonalność systemu operacyjnego bywa definiowana różnie, podstawowe funkcje zwykle jednak obejmują: - Kernel Zarządzanie procesami Zarządzanie pamięcią Zapewnienie abstrakcji sprzętu (API, HAL) Komunikacja międzyprocesowa Userland System plików Zarządzanie użytkownikami Usługi współdzielone (services) Interfejs użytkownika
Zarządzanie procesami i pamięcią Współczesne systemy operacyjne to zwykle systemy wielozadaniowe (multitasking) zorientowane na wykonywanie monolitycznych aplikacji. To wymaga: Jądra z mechanizmami typu preemptive multitasking (planista czasu CPU, mechanizm wywłaszczania procesów itp.) Dużej ilości pamięci operacyjnej = mechanizm pamięci wirtualnej Pytanie czy urządzenie mobilne wyposażone jest (zwykle) w dużą ilość pamięci operacyjnej? Pytanie pomocnicze czy łatwo w takim urządzeniu
Zarządzanie procesami i pamięcią W większości przypadków w systemach mobilnych będziemy mieć do czynienia z ograniczonymi możliwościami wieloprocesowości. Na przykład - PalmOS
Zarządzanie procesami i pamięcią Oraz Android
Efekty uboczne Oczywiście z punktu widzenia użytkownika operacje przełączania aplikacji powinny odbywać się w taki sam sposób niezależnie od zachodzącego w tle zarządzania zasobami pamięci. Właściwe (tj. dokładnie w tym stanie w jakim została porzucona) odtworzenie stanu aplikacji zależy jednak w większości przypadków od programisty ios (>=6)
Oczywiście można i pooszukiwać Because users are likely to switch among apps frequently, you should make every effort to cut launch time to a minimum, and you should design a launch image that downplays the experience rather than drawing attention to it. Generally, design a launch image that is identical to the first screen of the app. ios Human Interface Guidelines
Ale zaraz Przecież jądra współczesnych mobilnych systemów operacyjnych to (w większości przypadków) klasyczne monolityczne jądra wielozadaniowe? Istotnie, np.: - Android > Linux (2.6 -> 3.5 ->3.8) - ios > BSD - Windows Phone > Win (Windows CE -> Windows NT) - Blackberry 10 > QNX (RTOS) Jednakże, jak brzmi stare przysłowie, Linux is
Wirtualizacja aplikacji W praktyce większość aplikacji jakie działać będą na urządzeniu mobilnym (czy też raczej będą prezentowane użytkownikowi) będzie tworzona w kodzie zarządzanym. Np. Windows Phone 7:
Jeszcze o wielozadaniowości Praktyczna realizacja wielozadaniowości może także sprawiać problemy od strony UI
System plików System plików wydaje się być niezbędnym elementem systemu operacyjnego Czy jednak rzeczywiście??? Implementacja pełnego systemu plików to często same kłopoty: Bezpieczeństwo (kłopoty z izolacją danych, problemy z przypisaniem danych do aplikacji itp.) Wydajność Licencjonowanie technologii (np. FAT / FAT32) Pierwsze mobilne systemy operacyjne (PalmOS/NewtonOS) nie posiadały w ogóle systemu plików w klasycznym tego rozumieniu, składując
Bezpieczeństwo / sandboxing Współczesne mobilne systemy operacyjne często ukrywają zaś system plików przed użytkownikiem Klasyczny przykład ios: mamy tu do dyspozycji dość klasyczny system operacyjny typu POSIX, poszczególne aplikacje działają jednak w wydzielonych sandboxach nie ma możliwości wymiany informacji poprzez system plików (mozliwości wymiany poprzez mechanizm dzielenia danych istnieją, ale ograniczone) Nb. warto zwrócić uwagę iż właściwie
Bezpieczeństwo / sandboxing
Komunikacja międzyprocesowa Oczywiście system operacyjny zapewniać powinien mechanizmy komunikacji międzyprocesowej (co może być realizowane w różny sposób via system plików, binder, pamięć dzieloną etc.) ale z racji faktycznej jednozadaniowości na plan pierwszy wysuwają się mechanizmy dzielenia danych pomiędzy aplikacjami niedziałającymi współbieżnie. Właściwie to nic innego jak przekazywanie parametrów i schowek (clipboard) Może być to implementowane w bardziej (np.
Komunikacja międzyprocesowa
Zarządzanie energią Klasyczny system operacyjny oczywiście także musi zarządzań energią w szczególności zasilaniem urządzeń peryferyjnych. Główna różnica wynikać będzie ze scenariuszy użytkowania. Pytanie jaki jest naturalny stan pracy dla mobilnego i klasycznego systemu operacyjnego? Przykładowe tryby pracy: active, user idle, suspend, (off), (media playback) Oczywiście niezbędny jest system, dzięki któremu aplikacje userspace będą mogły poinformować system operacyjny iż
PM locks Jeśli dopuszczamy możliwość pracy (tj. działania aplikacji w trybie innym niż active to mechanizm PM locks może (powinień ) być dość Wake Lock Description rozbudowany. Np. (Android).: ACQUIRE_CAUSES_WAKEUP FULL_WAKE_LOCK ON_AFTER_RELEASE PARTIAL_WAKE_LOCK SCREEN_BRIGHT_WAKE_LOCK SCREEN_DIM_WAKE_LOCK Normally wake locks don't actually wake the device, they just cause it to remain on once it's already on. Think of the video player app as the normal behavior. Notifications that pop up and want the device to be on are the exception; use this flag to be like them. Wake lock that ensures that the screen and keyboard are on at full brightness. When this wake lock is released, poke the user activity timer so the screen stays on for a little longer. Wake lock that ensures that the CPU is running. The screen might not be on. Wake lock that ensures that the screen is on at full brightness; the keyboard backlight will be allowed to go off. Wake lock that ensures that the screen is on, but the keyboard backlight will be allowed to go off, and the screen backlight will be allowed to go dim. Dodatkowo jeszcze może być potrzebne kontrolowanie urządzeń zewnętrznych (np. WifiLock). Wreszcie co zrobić, jak już system został wyłączony a aplikacja powinna coś zrobić? Do tego też potrzebujemy usługi systemowej
Interfejs użytkownika Dla większości użytkowników jednak to nie funkcjonalne aspekty systemu operacyjnego będą miały znaczenie, a interfejs użytkownika. System operacyjny zapewnia tu sporo: Komponenty ( widgety ) Sposób budowania interfejsu ( layout management ) statyczny lub dynamiczny Mechanizm wyświetlania interfejsu ( compositing engine ) Standardowe elementy interfejsu użytkownika, współdzielone pomiędzy aplikacjami oraz należące do wbudowanych aplikacji systemu ( stock ) Pytanie oczywiście o to, czym jest standardowy komponent
Widgety & HIG & navigation patterns To w dużej mierze decyduje o postrzeganiu systemu operacyjnego jako spójnej całości choć w klasycznym rozumieniu nie jest nawet częścią systemu operacyjnego
Interfejs użytkownika Np.: http://gadgetsteria.com
Rynek mobilnych systemów operacyjnych 2012 90 s??? Penpoint SIBO (16bit) PSION / Teklogix EPOC ER3/ER5 Symbian (PSION / NOKIA) ios (Apple) NewtonO S PalmOS WebOS Android Maemo Meego Mer / Jolla Windows Mobile WP 7 / 7.5 BlackBerry OS to są tylko te najważniejsze WP 8 QNX BADA Tizen
Firmy i ekosystemy
Popularność, fragmentacja
Popularność, fragmentacja
Cdn.