Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Linux sloj u Androidu
Arhitektura Androida
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)
2020 2
Karakteristike Linux
1991. Linus Torvalds
Free Software Foundation – FSF
Karakteristike
o Prilagodljivost
o Širok skup besplatnih alata
o Stabilnost
o Cena
o Velika zajednica
Razvijen u C programskom jeziku
GPL licenca
2020 3
Linux u namenskim sistemima
Jezgro ili distribucija?
Tipovi namenskih Linux sistema
o Podela po složenosti sistema
Jednostavni
Srednje složenosti
Složeni
o Podela po vremenskim ograničenjima
Stroga
Blaga
o Podela po mogućnosti povezivanja
o Interakcija sistema sa korisnikom
2020 4
Raspodela i preslikavanje memorijskog prostora
Adresna magistrala i adresiranje
MMUProgram (Virtuelni adresni prostor)
Proces 1
Aplikativni
Tekst
Mapirana
memorija
Biblioteke
Stek
Proces 2 Proces N
JezgroRukovalac
sistemskim
pozivomUpravljački
program
uređaja
0x0000 0000 --0x0000 8000 --
0x4000 0000 --
0x8000 0000 --
0xBFFF FFFF --
CPU
Fizički adresni prostor
1
2
3
4 5
6
78
9
10
...
...
......
00000000-1fffffff : System RAM00008000-0044a18f : Kernel code00470000-005f33c7 : Kernel dataff000000-ff000fff : goldfish_interrupt_controllerff001000-ff001fff : goldfish_device_busff002000-ff002fff : goldfish_tty.0ff003000-ff003fff : goldfish_timerff004000-ff004fff : goldfish_audio.0ff006000-ff006fff : goldfish_memlog.0ff010000-ff010fff : goldfish_rtcff011000-ff011fff : goldfish_tty.1ff012000-ff012fff : goldfish_tty.2ff013000-ff013fff : smc91x.0ff013000-ff01300f : smc91xff014000-ff014fff : goldfish_fb.0ff015000-ff015fff : goldfish-battery.0ff016000-ff016fff : goldfish_events.0ff017000-ff017fff : goldfish_nand.0ff018000-ff019fff : qemu_pipeff01a000-ff01afff : goldfish-switch.0ff01b000-ff01bfff : goldfish-switch.1
Emulator (4.4/KitKat Android)
MM
U0xC000 0000 --
2020 5
Promena konteksta tokom pristupa funkcijama niskog nivoa
2020 6
Zašto je odabran Linux za jezgro?
Odlično rukovanje procesima i memorijom
Sigurnosni sistem zasnovan na ovlašćenjima
Dokazan model sistemskih rukovalacao Najkorišćeniji apstrakcioni nivo između hardvera i programske podrške
o Postojeći sistemski rukovaoci
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
2020 7
Uticaj Android na Linux (ali i obrnuto)
Android je dao jedan veliki podsticaj za širenje Linux
Android => Linux
o Roadmap
o Integracija namenskih mogućnosti
Linux => Android
o Način razvoja, sistem za generisanje programske slike
o Razvojni alati
o Upravljanje složenim softverom
o Razvoj namenskih sistema
2020 8
Linux Kernel u Android
Do 2011. godine: Android linux kernel = Linux kernel + patch list
o Krenulo se od Linux Kernel 2.6.24
o 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
Kernel layer
Display driver
USB driver
Mouse driver
Keyboard driver
Ethernet driver
WiFi driver
Flash memory driver
Audio drivers
Binder (IPC) driver
Power management
2020 9
Linux Kernel
Najlakši način za dobijanje Linux kernel-a? Kernel.org!
Android je velika Linux user-space aplikacija
Android koristi Linux Kernel, ali 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.
2020 10
Kernel dodaci
Ashmem
Binder
Logger
Low Memory Killer
Power Manager
Kernel Debugger
Alarm
2020 11
Linux je prilagođen Androidu
Uvedene su novine
Sa svakim novim Linuxom, potrebno je bilo uložiti puno napora u integraciju i testiranje
Međusobni uticaj Linux i Android - koevolucija
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: Namena
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.
Rukovalac IPC mehanizmom: /dev/binder (Character based driver, IOCTL)
Postiže visoke performanse korišćenjem deljene memorije
Asinhroni i sinhroni pozivi između procesa
Brojanje referenci i mapiranje objektnih referenci kroz procese
Formiranje grupa niti za obradu IPC zahteva za svaki proces
AIDL
2020 12
Ashmem
P r v i p r o c e s
Region deljene memorije
ashmem
Binder
Proces A Proces B
Proces C
Deskriptor
Deskriptor
Deskriptor
2020 13
Alati pokretanja namenskog sistema
Koraci pokretanja
o preLoader - obezbeđuje proizvođač, u ROM
o Boot loader - BIOS, UEFI, U-Boot
o Second stage loader - LILO, GRUB, NTLDR/BOOTMGR
Programske slike mogu biti
o Na kartici
o U flash memoriji
o Na disku
o Negde na mreži
2020 14
Podrška razvoju u sistemu za pokretanje
2020 15
Proces pokretanja sistema
2020 16
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/
2020 17
Rezime
Linux je zbog otvorenosti, modularnosti, besplatnosti odabran kao jezgro za Android
Postoji međusobni uticaj Androida i Linux
GPL licenca je zahtevala neke dorade (Bionic) i pojašnjenja, ali su ta pitanja uspešno rešena
2020 18