49
Android overview From a system design perspective Xiao-Feng Li [email protected] 2012-09-21 2012/9/21 Android Overview - Xiao-Feng Li 1 Disclaimer: The contents in this document are only my personal opinions, do not reflect the opinions of my employer or anyone else.

Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

  • Upload
    lamtruc

  • View
    214

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android overview From a system design perspective

Xiao-Feng Li [email protected]

2012-09-21

2012/9/21 Android Overview - Xiao-Feng Li 1

Disclaimer: The contents in this document are only my personal opinions, do not reflect the opinions of my employer or anyone else.

Page 2: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android overview From a system design perspective

PART I

Design principles

2012/9/21 Android Overview - Xiao-Feng Li 2

Page 3: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 1

• Q: What do you expect from a mobile phone?

2012/9/21 Android Overview - Xiao-Feng Li 3

Page 4: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q1

• Q: What do you expect from a mobile phone?

• A: (no correct answer, but reasonable answer)

– Easy communications

– Long battery life

– Fast boot-up/shutdown

– Smooth operations

– Delicate industry design

– Applications

– … … Could be a close environment

2012/9/21 Android Overview - Xiao-Feng Li 4

Page 5: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 2

• Q: What do you expect from a smart-phone?

2012/9/21 Android Overview - Xiao-Feng Li 5

Page 6: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q2

• Q: What do you expect from a smart-phone?

• A: (no correct answer, but reasonable answer)

– All of those features with a mobile phone, plus

– PC features • Programming environment

• Portal to Internet

• And security risks

– Gaming station features • Sensors, 3D

– … …

Must be an open environment

2012/9/21 Android Overview - Xiao-Feng Li 6

Page 7: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 3

• Q: What build an open pleasant environment?

2012/9/21 Android Overview - Xiao-Feng Li 7

Page 8: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q3

• Q: What build an open pleasant environment?

• A: (no correct answer, but reasonable answer)

– Favorable APIs to developers

– Choices of applications to users

– Seamless access to Internet/Cloud services

– Pleasant user experience

Maximize information flow

2012/9/21 Android Overview - Xiao-Feng Li 8

Page 9: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 4

• Q: What prevent an open environment?

2012/9/21 Android Overview - Xiao-Feng Li 9

Page 10: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q4

• Q: What prevent an open environment?

• A: (no correct answer, but reasonable answer)

– Openness vs. Security

– User experience vs. Battery life

– Cloud readiness vs. Local computation

Law of conservation of energy

ITJ paper: Mobile OS Architecture Trends, Xiao-Feng Li, et. al. 16(4), 2012 2012/9/21 Android Overview - Xiao-Feng Li 10

Page 11: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 5

• Q: What does Android do?

– APIs

– Applications

– Internet/Cloud

– Security

– User experience

– Battery life

2012/9/21 Android Overview - Xiao-Feng Li 11

Page 12: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q5

• Q: What does Android do?

• A: (no correct answer, but reasonable answer)

– APIs: SDK, NDK, RS, HTML/JS

– Applications: Google Play, web apps

– Internet/Cloud: Chrome/webview/HTML5

– Security: Java, Permission, Linux security, sig

– User experience: touch, mem, perf

– Battery life: Linux PM, wake lock

2012/9/21 Android Overview - Xiao-Feng Li 12

Feature list does not tell the truth

Page 13: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 6

• Q: How does Android put them together?

2012/9/21 Android Overview - Xiao-Feng Li 13

Page 14: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q6

• Q: How does Android put them together?

• A: (no correct answer, but reasonable answer)

– 1. Java as the primary API language • Top popularity is not without rationality

– 2. Application framework • Service-oriented, component-based

– 3. Applications are wired into framework

– 4. Hardware abstraction layer (HAL)

– 5. Linux kernel

2012/9/21 Android Overview - Xiao-Feng Li 14

Holistic design makes the cathedral

Page 15: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Stack

• Layers make the holistic design possible

2012/9/21 Android Overview - Xiao-Feng Li 15

Page 16: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 7

• Q: What does a common OS distribution do?

– APIs

– Applications

– Internet/Cloud

– Security

– User experience

– Battery life

2012/9/21 Android Overview - Xiao-Feng Li 16

Page 17: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer To Q7

• Q: What does a common Linux distro do?

• A: (no correct answer, but reasonable answer)

– APIs: open choices

– Applications: abundant

– Internet/Cloud: Mozilla Firefox, etc.

– Security: Linux security

– User experience: Gnome, KDE, etc.

– Battery life: Linux PM

2012/9/21 Android Overview - Xiao-Feng Li 17

More features may not always excel

Page 18: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 8

• Q: How does a common Linux distro put them together?

2012/9/21 Android Overview - Xiao-Feng Li 18

Page 19: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer to Q8

• Q: How does a common Linux distro put them together?

• A: (no correct answer, but reasonable answer)

– APIs: open choices

– Applications: abundant

– Internet/Cloud: Mozilla Firefox, etc.

– Security: Linux security

– User experience: Gnome, KDE, etc.

– Battery life: Linux PM

2012/9/21 Android Overview - Xiao-Feng Li 19

Bazar is still bazar

Page 20: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 9

• Q: What does J2ME do?

2012/9/21 Android Overview - Xiao-Feng Li 20

Page 21: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer to Q9

• Q: What does J2ME do?

• A: (no correct answer, but reasonable answer)

– APIs: roughly ok

– Applications: roughly ok

– Internet/Cloud: roughly ok

– Security: roughly ok

– User experience: roughly ok

– Battery life: roughly ok

2012/9/21 Android Overview - Xiao-Feng Li 21

Roughly ok is not ok

Page 22: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 10

• Q: How does J2ME put them together?

2012/9/21 Android Overview - Xiao-Feng Li 22

Page 23: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer to Q10

• Q: How does J2ME put them together?

• A: (no correct answer, but reasonable answer)

– APIs: ok + OS

– Applications: ok + OS

– Internet/Cloud: ok + OS

– Security: ok + OS

– User experience: ok + OS

– Battery life: ok + OS

2012/9/21 Android Overview - Xiao-Feng Li 23

Who are you, J2ME or OS?

Page 24: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 11

• Q: What does Windows desktop do?

• A: (no correct answer, but reasonable answer)

– APIs

– Applications

– Internet/Cloud

– Security

– User experience

– Battery life

2012/9/21 Android Overview - Xiao-Feng Li 24

Page 25: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer to Q11

• Q: What does Windows desktop do?

• A: (no correct answer, but reasonable answer)

– APIs: Win API in C++

– Applications: abundant

– Internet/Cloud: IE

– Security: oops!

– User experience: “(Not responding)”

– Battery life: …

2012/9/21 Android Overview - Xiao-Feng Li 25

Time does not solve all problems

Page 26: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Question 12

• Q: How does Windows put them together?

2012/9/21 Android Overview - Xiao-Feng Li 26

Page 27: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Answer to Q12

• Q: How does Windows put them together?

• A: (no correct answer, but reasonable answer)

– Win API

– Kernel

2012/9/21 Android Overview - Xiao-Feng Li 27

Time freezes at 80s

Page 28: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Windows Stack

2012/9/21 Android Overview - Xiao-Feng Li 28

Services built on top of API

Page 29: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Bonus Slide: Windows 8 Stack

2012/9/21 Android Overview - Xiao-Feng Li 29

• Much better as a smartphone OS as I expected

API built on top of services

Page 30: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Design Explained

• Complete, consistent, modular

– API: Full sets of high level APIs for all the tasks

– Apps: components to be wired into the system

– App framework: rich set of services/abstractions

– Security: every application is a Linux user

– User experience: mem/power/perf, smoothness/responsiveness

2012/9/21 Android Overview - Xiao-Feng Li 30

Page 31: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android overview From a system design perspective

PART II

Runtime model

2012/9/21 Android Overview - Xiao-Feng Li 31

Page 32: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Application

• Not a standalone application, but components of the system

2012/9/21 Android Overview - Xiao-Feng Li 32

Page 33: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Activity Lifecycle

• Activity is integrated with Activity Manager Service through binder

2012/9/21 Android Overview - Xiao-Feng Li 33

Page 34: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Service

• Android is service-oriented design

2012/9/21 Android Overview - Xiao-Feng Li 34

Page 35: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Startup

• Launch all the system services

2012/9/21 Android Overview - Xiao-Feng Li 35

Page 36: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Running

• Sanboxed applications (and services)

2012/9/21 Android Overview - Xiao-Feng Li 36

Page 37: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Binder

• Core IPC mechanism that enables Android client/server modular design

– Like CORBA, but much simpler and more efficient

• Only for intra-OS IPC

– AIDL to define the service interface (stub, proxy)

• Support both C++ and Java binding

– Linux kernel modified to support binder

• Also for IPC performance and security

2012/9/21 Android Overview - Xiao-Feng Li 37

Page 38: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Binder Running

2012/9/21 Android Overview - Xiao-Feng Li 38

Page 39: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Example: Alarm Service

2012/9/21 Android Overview - Xiao-Feng Li 39

Page 40: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Binder Threads

2012/9/21 Android Overview - Xiao-Feng Li 40

• Binder threads exist invisibly for IPC

Binder threads created by system automatically

Page 41: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android Application Structure

• Role of binder thread

Android Overview - Xiao-Feng Li 41

Message Handling

Message queue

Binder interface implementation

Incoming binder call

Post a message to main thread queue

Activity main thread

Binder thread

2012/9/21

Page 42: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Binder Threads Running

2012/9/21 Android Overview - Xiao-Feng Li 42

Binder #1: IApplicationThread Activity lifecycle transition callback is triggered by the incoming call on binder IApplicationThread, that was initiated by AM service.

Binder #2: IWindow.stub UI events handling triggered by IWindow.stub binder calls

Page 43: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Start Activity (1/2)

Activity thread IAppThread Activity Manager Service

:startActivity (IAppThread ..)

startActivityLocked()

resumeTopActivityLocked ()

startSpecificActivityLocked ()

realStartActivityLocked ()

:scheduleLaunchActivity ()

startPausingLocked () :schedulePauseActivity ()

Post msg

Activity1.OnPause()

:activityPaused()

completePauseLocked ()

resumeTopActivityLocked ()

Queue the activity into stopping list

Post msg

Check permission, check if new task, change activities

sequence, new activity record and queue it into stack

If target process is not present, call startProcessLocked() to create the process and exit. Following steps will be triggered by the binder call attach() that is first thing main thread does.

2012/9/21 Android Overview - Xiao-Feng Li 43

Page 44: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Start Activity (2/2)

Activity thread IAppThread Activity Manager Service

processStoppingActivitiesLocked ()

stopActivityLocked() :scheduleStopActivity ()

Activity2.OnStart()

TIMEOUT

completeResumeLocked ()

ensureActivitiesVisibleLocked ()

activityIdleInternal ()

Post msg

Activity2.OnResume()

activityPause()

Activity1.OnStop() :activityStopped ()

Activity2.OnCreate()

Activity stop transition is executed at idle time.

Get all activities in stopping list and no long visible

If the finish flag is set in the activity record (in scenario of calling finish) , activityStopped() will continue the destroy transition.

2012/9/21 Android Overview - Xiao-Feng Li 44

Page 45: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Activities And Tasks (1/2)

Android Overview - Xiao-Feng Li 45 2012/9/21

Page 46: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Activities And Tasks (1/2)

5

4

2

3

1

Application A

Application B

Activity Manager Service

1

T1

T2

4 3

Activities Map Activity Records Stack

Task Stack

2

Activities Map

5

Application A

2012/9/21 Android Overview - Xiao-Feng Li 46

Page 47: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Android overview From a system design perspective

(Not yet put together here …)

PART III

Framework design

2012/9/21 Android Overview - Xiao-Feng Li 47

Page 48: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Summary

• Smartphone OS has to be open and elegant

– Comprehensive and consistent API

– Service oriented framework to back the API

– App components are wired into the framework

– HAL to hide hardware differences

– UID/process based security support to apps

– Traditional OS kernel for platform management

2012/9/21 Android Overview - Xiao-Feng Li 48

Page 49: Android overview -- from a system design perspectivepeople.apache.org/~xli/presentations/Android-design-overview.pdfFrom a system design perspective ... –Win API –Kernel 2012/9/21

Acknowledgements

• Some of the figures are taken from materials of their respective owners

2012/9/21 Android Overview - Xiao-Feng Li 49