![Page 1: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/1.jpg)
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Linux sloj u Androidu
![Page 2: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/2.jpg)
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
![Page 3: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/3.jpg)
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
![Page 4: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/4.jpg)
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
![Page 5: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/5.jpg)
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
![Page 6: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/6.jpg)
Promena konteksta tokom pristupa funkcijama niskog nivoa
2020 6
![Page 7: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/7.jpg)
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
![Page 8: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/8.jpg)
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
![Page 9: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/9.jpg)
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
![Page 10: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/10.jpg)
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
![Page 11: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/11.jpg)
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
![Page 12: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/12.jpg)
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
![Page 13: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/13.jpg)
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
![Page 14: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/14.jpg)
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
![Page 15: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/15.jpg)
Podrška razvoju u sistemu za pokretanje
2020 15
![Page 16: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/16.jpg)
Proces pokretanja sistema
2020 16
![Page 17: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/17.jpg)
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
![Page 18: Projektovanje namenskih računarskih struktura 1 · 2020-06-28 · Binder: Namena Uslužiocii aplikacije su obično pokrenuti u posebnim Android procesima. Postoji jasna potreba za](https://reader033.vdocuments.mx/reader033/viewer/2022050312/5f7496a8fae88042cd10dc94/html5/thumbnails/18.jpg)
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