projektovanje namenskih računarskih struktura 1 sistemi ... · sigurnosni sistem zasnovan na...

15
Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarsku tehniku i računarske komunikacije Projektovanje Namenskih Računarskih Struktura 1 Sistemi zasnovani na Androidu Arhitektura Androida – Linux sloj

Upload: others

Post on 10-Sep-2019

3 views

Category:

Documents


0 download

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

Binder

Inter Process Communication

Zasnovan na rukovaocu uređajem

2019 PNRS1 12

Binder: U akciji

2019 PNRS1

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