Android系统架构
文章平均质量分 87
宋宝华
这个作者很懒,什么都没留下…
展开
-
宋宝华ABC
新浪微博:@宋宝华Barry 编写出版《Linux设备驱动开发详解》, 互动出版网2008年度IT图书风云榜“十大畅销经典”、“十佳原创”、畅销榜操作系统类排名第1;51CTO、中国图书商报、China-pub联合评比 “2008年度最佳技术图书”;本书繁体中文版一直位于畅销版。 主持翻译《Essential Linux Devic原创 2010-03-11 23:28:00 · 25158 阅读 · 16 评论 -
Android架构纵横谈之二——基于性能的考虑(1)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by @宋宝华Barry《Android架构纵横谈之一——软件自愈能力》已经谈地告了一个段落。接下来这个系列二我们谈Android性能方面的考虑。Android系统组件繁杂,盘根错节,若非在性能上进行充分的考虑,恐怕会慢如蜗牛。Android有独具特色的Dalvik虚拟机,启动过程中即加载许多资源以便子进程进行继承的Z原创 2012-07-26 22:36:26 · 14271 阅读 · 8 评论 -
Android架构纵横谈之——软件自愈能力 (3)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by @宋宝华Barry最近马不停蹄往返进行Linux技术讲座,所以本回delay了一周。上回书说到Android中生死与共的Zygote和SystemServer,今回书我们讲SystemServer的watchdog,也为软件架构自愈系列的终结篇。第三只狗:朝廷鹰犬2012年7月,网名为“吴法天”、人称原创 2012-07-15 15:12:23 · 11679 阅读 · 7 评论 -
Service与Android系统设计(3)-- ActivityManager的实现
通过Remote Service实现Android系统对于应用程序编程来说,aidl只是一种可选项,绝大部分的应用程序,其实只是关注于图形界面与交互,所以大部分情况下只是在写Activity,用到S原创 2012-10-18 22:55:08 · 15692 阅读 · 4 评论 -
Service与Android系统设计(4)-- ServiceManager
System Service的驱动形式 --- ServiceManager对于ServiceManager的使用,我们在应用程序编程时也会经常使用到,比如我们需要使用Sensor时,我们一般会做如下的调用:原创 2012-10-19 20:36:59 · 21291 阅读 · 3 评论 -
Service与Android系统设计(5)-- libbinder
libbinder – Binder的Native实现出于性能和代码统一性的角度考虑,Binder IPC并不Java和Native环境里各实现一次,而只是分别在不同的执行环境里提供使用的接口。使用原创 2012-10-19 20:37:47 · 14188 阅读 · 1 评论 -
Service与Android系统设计(6)--- Native Service
Native ServiceNative Service,这是Android系统里的一种特色,就是通过C++或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C++代码生成的是N原创 2012-10-19 20:38:25 · 20411 阅读 · 1 评论 -
Service与Android系统设计(7)--- Binder驱动
Service与Android系统实现(1)-- 应用程序里的ServiceService与Android系统设计(2)-- ParcelService与Android系统设计(3)--原创 2012-10-30 18:11:04 · 15086 阅读 · 4 评论 -
Service与Android系统设计(2)-- Parcel
Parcel与Parcelable当我们在调用远程方法时,需要在进程间传递参数以及返回结果。这种类似的处理方式,原创 2012-10-18 22:50:17 · 13963 阅读 · 2 评论 -
Service与Android系统实现(1)-- 应用程序里的Service
讲述Android Service(JAVA Service、Native Service等)背后的实现原理,透析基于Binder的RPC以及Linux Binder驱动。Service与Android原创 2012-10-18 22:44:51 · 44165 阅读 · 11 评论 -
Android adb setuid提权漏洞的分析
作 者: Claud时 间: 2011-07-07,13:03:41链 接: http://bbs.pediy.com/showthread.php?t=136707去年的Android adb setuid提权漏洞被用于各类root刷机,漏洞发现人Sebastian Krahmer公布的利用工具RageAgainstTheCage(rageagainstthecage转载 2014-02-10 15:57:02 · 12838 阅读 · 0 评论 -
Android架构纵横谈之——软件自愈能力 (1)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by @宋宝华Barry 笔者决定,从今天开始,连载Android架构纵横谈系列。之所以叫纵横谈而不是叫别的题目,是因为整个系列是横着竖着乱弹琴,可以说是阴阳不分,黑白颠倒,望湘园里望湘园。我不谈任何一个小的点,比如启动过程、某个HAL移植、一个具体的native service或者Java s原创 2012-06-24 01:15:43 · 19681 阅读 · 18 评论 -
Android架构纵横谈之——软件自愈能力 (2)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。by @宋宝华Barry上回书我们说到Android里的init会监测init.rc中启动的service并根据情况重启之。今回书我们说Android中生死与共的Zygote和SystemServer。第二只狗:忠犬八公方今之世,正道不昌,邪魔丛生。撞伤不如撞死,因此各种难以理解之行为层出不穷,撞后用天原创 2012-07-01 15:46:48 · 12460 阅读 · 13 评论 -
Linux内核最新的连续内存分配器(CMA)——避免预留大块内存
Linux内核最新的连续内存分配器(CMA)——避免预留大块内存在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我们可以做到不预留内存,这些内存平时是可用的,只有当需要的时候才被分配给Camera,HDMI等设备。下面分析它的基本原创 2012-03-01 16:17:59 · 47071 阅读 · 5 评论 -
建立最简单的repo服务器实例讲解
repo是一个将多个git tree进行系统管理的工具,repo本身不是一个源代码版本管理系统,它只是联合manifest.git中project list xml的多个工程,统一管理。在运行repo sync的情况下,xml文件中指定的工程都统一被sync下来。下面用最简单的实例证明如何建议一个repo服务。1. 进入home目录,创建repo-server子目录,如/home/liha原创 2012-02-19 17:14:39 · 9611 阅读 · 1 评论 -
Tegra3 1080p高清播放时电源管理方式和功耗分析
此案例分析Tegra3(采用vSMP架构,4+1核心)在执行1080p播放时PM的运行情况,使用的平台是ASUA Eee Pad,运行Android 3.2。先播放少女时代1080p演唱会x264,Japan.First.Tour.Girls'Generation.2011.BluRay.1080p.DTS.x264-CHDNvidia 1080p硬件解码: 02-16 23:01原创 2012-02-17 11:27:15 · 6019 阅读 · 0 评论 -
Android编译时主要瓶颈分析
模拟2个用户同时登陆一个4核心处理器的电脑进行Android编译,编译选项make -j8,CPU配置如下:bhsong@SHA-IT-Lintester01:~/workspace/android/kernel$cat /proc/cpuinfoprocessor :0vendor_id :GenuineIntelcpu family原创 2012-02-17 11:19:23 · 7057 阅读 · 0 评论 -
tegra3 CPU auto hotplug和Big/little switch工作的基本原理
by 宋宝华在《Tegra3 vSMP架构Android运行时CPU热插拔及高低功耗CPU切换》一文中我们通过运行华硕平板电脑看出来tegra3的dvfs结合了CPU热插拔和G/LP core cluster之间的切换,本文从代码角度分析其运行机理。tegra3是典型的BIG/LITTLE模式,4个G core(高性能,高功耗)加上1个LP core(低性能,低功耗)。运行过程中,我们原创 2012-01-31 14:26:03 · 6869 阅读 · 2 评论 -
使用cpufreq-bench评估cpufreq策略对系统性能的影响
Linux 3.1已经将cpupower-utils中放入内核的tools目录,见:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=tools/power;h=f6a98ba17528ed7645f53bb8cb67f59112adf346;hb=c3b92c8787367a8bb53d57d9原创 2012-01-29 19:44:09 · 6723 阅读 · 0 评论 -
Android上运行QT项目Necessitas的基本原理
by 宋宝华 There is a project named Necessitas (by BogdanVatra)which implements a basic support of creating and running QT applications onAndroid. It also provides a user-friendly Qt Creator Integrati原创 2012-01-18 16:25:46 · 6339 阅读 · 0 评论 -
Jazelle DBX对Android是无用的
Jazelle DBX: Direct Bytecode eXecutionARMprocessors historically support two instruction sets: the ARM instruction set,in which allinstructionsare 32-bits long, and the Thumb® instruction set whic原创 2012-01-18 14:09:44 · 3481 阅读 · 0 评论 -
Android应用程序开发以及背后的设计思想深度剖析(5)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry紧接连载四,我们接下从功耗控制、功能接口和可移植性的角度分别分析Android系统为应用程序提供的支撑,本次连载为本系列文章的最后一篇。 前情回顾: Android应用程序开发以及背后的设计思想深度剖析(1)原创 2012-10-14 09:08:06 · 13957 阅读 · 7 评论 -
Android应用程序开发以及背后的设计思想深度剖析(4)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry紧接连载三,我们接下从性能的角度分别分析Android系统为应用程序提供的支撑。前情回顾:Android应用程序开发以及背后的设计思想深度剖析(1)Android应用程序开发以及背后的设计思想深度剖析(2)原创 2012-09-25 21:56:38 · 9794 阅读 · 4 评论 -
Android应用程序开发以及背后的设计思想深度剖析(1)
本文内容,主题是透过应用程序来分析Android系统的设计原理与构架。我们先会简单介绍一下Android里的应用程序编程,然后以这些应用程序在运行环境上的需求来分析出,为什么我们的Android系统需要今天这样的设计方案,这样的设计会有怎样的意义, Android究竟是基于怎样的考虑才变成今天的这个样子,所以本文更多的分析Android应用程序设计背后的思想,品味良好架构设计的魅力。分五次连载完成原创 2012-08-06 15:00:05 · 30922 阅读 · 9 评论 -
Android应用程序开发以及背后的设计思想深度剖析(2)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华BarryAndroid的系统设计,与别的智能手机操作系统有很大区别,甚至在以往的任何操作系统里,很难找到像Android这样进行全面地系统级创新的操作系统。从创新层面上来说,Android编程上的思想和支持这种应用程序运行环境的系原创 2012-08-28 20:35:22 · 11211 阅读 · 5 评论 -
Android应用程序开发以及背后的设计思想深度剖析(3)
特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry我们接下来从安全性,性能,功能,可移植性的角度分别分析Android系统为应用程序提供的支撑。回顾前情:Android应用程序开发以及背后的设计思想深度剖析(1)Android应用程序开发以及背后的设计原创 2012-09-14 21:07:44 · 16837 阅读 · 16 评论 -
在Android源码树中添加userspace I2C读写工具(i2c-util)
by @宋宝华Barry通过/dev/i2c-n节点,用户可以在userspace直接访问板上的i2c外设寄存器,主要是透过I2C_RDWR这个IO控制命令将i2c_msg数组传递给kernel去执行。下面的代码可以完成这个功能:[cpp] view plaincopy#include #include #include #include #in原创 2012-08-29 10:41:46 · 8919 阅读 · 11 评论 -
让Ubuntu和Android同时运行(Ubuntu on Android)
Ubuntu目前有个项目叫Ubuntu for Android(http://www.ubuntu.com/devices/android),看起来非常cool:它的原理在http://www.ubuntu.com/devices/android并无介绍。但是我们猜测可以用chroot配合实现一个最简单的Ubuntu for Android。我们为Andriod编写一个脚本Ubun原创 2012-05-03 13:59:38 · 10902 阅读 · 0 评论 -
让Android adb运行在ARM平台上
对android/system/core中的adb打上如下补丁:From e8853dc01a99fddd57b375c29489cd817ddebc2d Mon Sep 17 00:00:00 2001From: Barry Song Date: Wed, 2 May 2012 09:57:02 +0800Subject: [PATCH] adb: make adb support原创 2012-05-02 11:11:26 · 11560 阅读 · 8 评论 -
Tegra3 vSMP架构Android运行时CPU热插拔及高低功耗CPU切换
Tegra3采用vSMP(VariableSymmetric Multiprocessing)架构,共5个cortex-a9处理器,其中4个为高性能设计,1个为低功耗设计:在系统运行过程中,会根据CPU负载切换低功耗处理器和高功耗处理器:除此之外,4个高性能ARM核心也会根据运行情况,动态借用Linux kernel支持的CPU hotplug进行CPU的UP/DOWN操作原创 2012-01-18 15:59:41 · 6519 阅读 · 0 评论