projektovanje namenskih računarskih struktura 1 sistemi ... · sigurnosni sistem zasnovan na...
TRANSCRIPT
Univerzitet u Novom Sadu
Fakultet tehničkih nauka
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje NamenskihRačunarskih Struktura 1
Sistemi zasnovani na Androidu
Arhitektura Androida – Linux sloj
Osnovne karakteristike Androida
Opšte karakteristike sa stanovišta upotrebe
Aplikativno radno okruženje
Virtuelna mašina
Integrisan internet pretraživač
Optimizovana grafička sprega
Širok ekosistem aplikacija
Sa stanovišta razvoja
Proširivost
Mrežne sprege
Konzistentna aplikativna programska sprega (API)
Zamenljivost komponenata
Bogato razvojno okruženje2019 PNRS1 2
Arhitektura Androida
2019 PNRS1 3
App0 App1 App2 App3 App4
Application layer
Activity manager
Frameworks layerWindow manager
Content providers
View systemNotification
manager
Package manager
Resource manager
XMPP service
Surface manager
Runtime layer
OpenGL/ES
SGL
Media framework
Freetype
SSL
SQLite
Webkit
libc
Libraries Android runtime
CoreLibraries
Dalvik Virtual Machine (DVM)
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Hardware
Java
C, C
++, n
ativ
e co
de
Ass
emb
ler,
C
Graphics Audio Camera GPS ...
Hardware Abstraction Layer (HAL)
Linux Kernel (1/3)
Do 2011. godine: Android linux kernel = Linux kernel + patch list
Krenulo se od Linux Kernel 2.6.24
Razvoj Androida prati i razvoj Kernela
Od verzije Linux kernel-a: v3.x.x, Android Linux kernel poboljšanja su dodati na mainline
Nove verzije Androida koriste noviji Kernel
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Linux Kernel (2/3)
Najlakši način za dobijanje Linux kernel-a?
Android? Velika Linux user-space aplikacija
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Linux Kernel (3/3)
Android koristi Linux Kernel
!!! Ali Android nije Linux (distribucija) !!!
Ne poseduje odgovarajući sistemski proces koji kontroliše uređenje prozora
Ne podržava standardnu biblioteku glibc => bionic
Ne podržava standardni komplet pomoćnih alata za Linux, toolbox umesto busybox-a.
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Zašto Linux Kernel? (1/2)
Odlično rukovanje procesima i memorijom
Sigurnosni sistem zasnovan na ovlašćenjima
Dokazan model sistemskih rukovalaca
Najkorišćeniji apstrakcioni nivo između hardvera i programske podrške
Postojeći sistemski rukovaoci
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Zašto Linux Kernel? (2/2)
Podrška za deljene biblioteke
Robusna infrastruktura operativnog sistema
Industrijski dokazan, stabilan, pod stalnim razvojem
Otvoreni izvorni kod!!!
Cena
Minimalna konfiguracija: 100MHz, 2 MB RAM, 4 MB ROM
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Kernel dodaci
Ashmem
Binder
Logger
Low Memory
Killer
Power Manager
Kernel Debugger
Alarm
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Binder: Problem
Uslužioci i aplikacije su obično pokrenuti u posebnim Android procesima.
Postoji jasna potreba za razmenom poruka i podataka.
Komunikacija između procesa pomoću IPC mehanizma može dovesti do uvođenja sigurnosnih propusta i značajnog povećanja opterećenosti sistema.
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Binder: Rešenje
Rukovalac IPC mehanizmom: /dev/binder Character based driver, IOCTL
Postiže visoke performanse korišćenjem deljene memorije
Sinhroni pozivi između procesa
Brojanje referenci i mapiranje objektnih referenci kroz procese
Formiranje grupa niti za obradu IPC zahteva za svaki proces
AIDL
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
Ashmem
2019 PNRS1 14
P r v i p r o c e s
Region deljene memorije
ashmem
Binder
Proces A Proces B
Proces C
Deskriptor
Deskriptor
Deskriptor
Linux kernel
Izvorni kod Android kernela za pojedine platforme je na sledećim git:
http://source.android.com/source/building-kernels.html#downloading-sources
https://kernel.googlesource.com/
https://www.kernel.org/
2019 PNRS1
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management