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本地调用

关于android和Linux的一些问题的更多相关文章

  1. Android和Linux应用综合对比分析

    原文地址:http://www.cnblogs.com/beer/p/3325242.html 免责声明: 当时写完这篇调查报告,给同事看了后,他觉得蛮喜欢,然后想把这篇文章修改一下,然后往期刊上发表 ...

  2. Android中Linux suspend/resume流程

    Android中Linux suspend/resume流程首先我们从linux kernel 的suspend说起,不管你是使用echo mem > /sys/power/state 或者使用 ...

  3. android sdk linux 文本 64 位置

    android sdk linux 64 之前获得模.现在补上一,然后,小伙伴们下载 版权声明:本文博主原创文章,博客,未经同意不得转载.

  4. React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+

    "C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...

  5. 八一八android与Linux的关系

    Linux与Androld的关系 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序.下面我们就来分析一 ...

  6. Android 运行 Linux 可执行程序

    /**************************************************************************** * Android 运行 Linux 可执行 ...

  7. android与linux之间的关系

    篇一(system/core/init/init.c): 对Android感兴趣的朋友都知道,Android系统是建立在Linux内核之上的.那么Linux内核和Android什么关系?Linux内核 ...

  8. 如何在Android 或Linux 下,做Suspend /Resume 的Debug【转】

    转自:http://blog.csdn.net/jacobywu/article/details/24735521 目录(?)[-] Question Answer 加boot 參數 no_conso ...

  9. Linux下搭建Android NDK , Linux 驱动开发环境

    Eclispe Luna(4.4):http://www.eclipse.org/downloads/ CDT :http://www.eclipse.org/cdt/downloads.php AD ...

随机推荐

  1. Java获取CPU序列号

    获取CPU序列号 /** * 获取CPU序列号 * @return */ public static String getCpuId() throws IOException { Process pr ...

  2. javascript面试题(一)

    1. var bar = null; console.log(typeof bar === 'object'); //logs true! 尽管 typeof bar === "object ...

  3. Java实现随机生成由字母、数字组合的N位随机数

    通过Math.random函数生成所需的字符所有序列,通过判断当前字符是否属于大小写.数字,符合者加入数组内,直到数组存储N位为止,最后把当前数组转为字符串返回调用处. /** * 随机生成由数字.字 ...

  4. Vue cli4 图片地址引入的几种方式

    五种图片地址引入方式 @开头,它也会作为一个模块请求被解析.它的用处在于Vue CLI默认会设置一个指向项目根目录/src的别名@

  5. time模块:时间戳和格式化好的时间表示方法及互相转换方法

    1.导入time模块   import time 2.获取当前时间的时间戳   time.time() 3.获取当前格式化好的时间   time.strftime(想要获取的格式) 4.时间戳和格式化 ...

  6. 关于java基础_数组的学习

    数组的学习 1.数组的概念?作用是什么? 系统中存储多个值, 2.数组的定义? 数据类型[] 数组名; 3.定义好数组以后需要对其进行初始化 数组初始化有两种: 第一种动态初始化,指定数组的长度,长度 ...

  7. yum管理——linux字符界面安装图形化及两种界面的切换(3)

    1.查看yum软件包组 yum groups list 2.选择安装带 GUI 的服务器 yum groups install "带 GUI 的服务器" 3.字符界面切换为图形化界 ...

  8. golang slice学习

    关于获取slice相关内存地址操作 s := make([]int, 1) t.Log(unsafe.Pointer(&s))// 获取当前slice 结构体实例的内存地址 t.Log(uns ...

  9. selenium执行js--并绕过webdriver监测常见方法

    目录 selenium执行js 常见的selenium监测手段 常用绕过selenium监测1 常用绕过selenium监测2 常用绕过selenium监测3 selenium执行js 优点:直接调用 ...

  10. 龙芯3A4000-Debian 10上常用软件记录

    所用平台 硬件:龙芯3a4000 (MIPS64el) 操作系统:Debian 10(buster)+ MATE桌面 内核版本:4.19.90 以下所有软件同样适用于x86体系结构的Linux发行版. ...