18
Odsek za računarsku tehniku i računarske komunikacije Projektovanje namenskih ra čunarskih struktura 1 Linux sloj u Androidu

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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