1.Android为什么选择java?
由于java虚拟机,实现软件层的编程与硬件无关性(无需进行特定编译或平台配置)。
2.Android和Linux内核区别?
Android上的应用软件运行在dalvik虚拟机上的java软件,dalvik依赖Linux内核。可见Android运行在Linux之上的操作系统。主要差别如下:
- Android Binder:提供Android平台的进程间通信;Linux系统上层进程间通信主要是Desktop BUS,用消息总线的方式进行IPC。
- Android电源管理
- 低内存管理器(low Memory Killer)
- 匿名共享内存
- Android PMEM:用于向用户空间提供连续的物理内存区域
- Android logger:轻量级日志设备
- Android Alarm:定时器,用于把设备从睡眠状态唤醒。
- USB Gadget:USB设备驱动
- Android RAM Console:为了提供调试功能,Android允许将调试日志信息写入RAM Console设备中,是一个基于RAM的Buffer
- Android timed device:提供对设备进行定时控制功能,目前仅支持振动器和LED设备
- Yaffs2文件系统
3.Android系统移植的任务:
Android移植开发的工作由:核心库,Dalvik虚拟机,硬件抽象层,Linux内核层,硬件系统协同完成
- Linux中的相关设备驱动程序
- Android本地框架中的硬件抽象层
4.系统和硬件之间的交互方式:
- 系统调用
- 驱动程序
- 使用proc文件系统
- 使用虚拟文件系统
- 使用内存映像
5.HAL硬件抽象层目的:
把Android Framework与Linux kernel隔离,让Android不至于过度依赖Linux kernel,从而可以在不考虑驱动程序前提下进行Android Framework开发。
6.Goldfish基础:
Goldfish是一种虚拟的ARM处理器,在Android的仿真环境中使用,运行arm926t指令集
7.Ashmem驱动介绍
Ashmem是Android的内存分配/共享机制,基于mmap系统调用,和传统内存分配机制相比是提供了辅助内核内存回收算法的机制
8.Pmem:与Ashmem都是通过mmap实现共享,区别是Pmem的共享区域是一段连续的物理内存,而Ashmem在虚拟空间地址连续,物理空间不一定连续
9.MSM内核:MSM是美国高通公司的应用处理器,是Android系统最常用的处理器产品之一。
10.OMAP基础:OMAP是德州仪器公司的应用处理器
11.JNI:java Native Interface,java本地调用