分类: Android平台
2014-01-10 09:46:29
进程沙箱隔离机制。Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。
应用程序签名机制。应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不同的应用程序共享UID,进而运行于同一进程空间,共享资源。使用相同数字签名的不同应用程序可以相互授予权限来访问基于签名的API。如果应用程序共享UID,则可以运行在同一进程中,从而允许彼此访问对方的代码和数据。
权限声明机制。应用程序需要显式声明权限、名称、权限组与保护级别。不同的级别要求应用程序行使此权限时的认证方式不同:Normal级申请即可用;Dangerous级需在安装时由用户确认才可用;Signature与Signatureorsystem则必须是系统用户才可用。
访问控制机制。传统的Linux访问控制机制确保系统文件与用户数据不受非法访问。
进程通信机制。Binder进程通信机制提供基于共享内存的高效进程通信;Binder基于Client-Server模式,提供类似COM与CORBA的轻量级远程进程调用(RPC);通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,污染进程空间。
内存管理机制。基于标准Linux的低内存管理机制(OOM),设计实现了独特的低内存清理(LMK)机制,将进程按重要性分级、分组,当内存不足时,自动清理最低级别进程所占用的内存空间;同时,引入不同于传统Linux共享内存机制的Android共享内存机制Ashmem,具备清理不再使用共享内存区域的能力。
参考书目:《Android安全机制解析与应用实践 》