• Linux C++工程师2小时了解Android记录


    (一)Android?

    Andoid是一个在linux上的,多用于移动终端的操作系统,不是类似redhat的服务器OS,也不是类似Windows的标准桌面OS,只是一种手持设备的较为简单的图形OS,Android应用程序使用Java开发。Android从linux kernel开出的分支,比如我的华为手机android是4.3,使用的linux kernel是3.4。

    android代码已经被linux kernel社区剔除。android由于继承了linux kernel代码,根据linux GPL规定即对开源代码的任何修改,都必须开源,所以android开源了。同时android属于ASL许可证,ASL许可证规定可以随意使用代码不用开源,所以android上的应用程序和驱动程序都似乎闭源的,这也满足了很多硬件厂商的要求。

    与Liinux嵌入式开发使用系统调用和glibc接口不同的是,Android没有glibc的支持,自己使用BionicLibc库。并且,按照移动终端OS的需求提炼出了自己的一套接口,开发人员在Android接口上开发,Android接口就是我们下面提到的一系列java基础类库。

    额外的一个问题:为什么android使用了linux内核:

    答:回答这个问题需要先了解内核的作用,内核提供了进程管理/文件网络管理/系统安全权限管理等。内核对上层操作者是不可见的,只能针对提供出来的操作接口进行操作。所以内核对整个系统来说是基础性的,不是功能性的。

    借用知乎上的话,开发一个内核不难,难在成千上万的设备为他做驱动。Apple和Windows有独立的自有硬件或者有能力说服硬件厂商为之作驱动,但是android开发之初,只能选择Linux。

    (二)Android的应用组件

    Android应用程序没有为应用准备一个单独的程序入口(比如说,没有main方法),而是为系统依照需求实例化提供了基本的组件。共有四种类型的组件:

    Activity:一个应用程序可以有一个或多个activity,每个用户界面都是以activity为基类的子类。Activity生命周期包含active/pause/stop,android会对组件的生命周期作管理,会在系统需要内存时候自动销毁stop的Activity组件。

    Service:后台服务可以在后台做一些文件处理网络处理等,将结果提供给需要的activity使用,每个服务都继承Service类。服务运行于应用进程的主线程内,耗时服务会使用新县城执行。

    BroadcastRecvice:广播消息接收类,用于接收广播消息并作出处理的组件,很多广播消息源于系统代码比如时区的改变,电池电量低,拍摄了照片或者改变了语言选项。

    Intent:消息组件,用于各个组件之间的消息传递。

    Android的线程是以标准的Java Thread对象创建的。

    Android有一个轻量级的远端过程调用(RPC)机制,既在本地调用一个方法,在远程处理然后将结果返回。

    (三)Android对Linux kernel的增强

    android对kernel的增强主要体现在对Linux kernel驱动的增强。Android将设备驱动提到Userspace中,不继承在内核中。

    1)OpenBinder框架的驱动,用于提供Android平台的进程间通信IPC功能,代码在drivers/staging/android/binder.c

    2)Android电源管理,一个基于标准Linux电源管理系统的轻量级Android电源管理系统。

    3)低内存管理器:比OOM机制更加灵活,可以根据需要杀死进程以释放需要的内存。drivers/staging/android/lowmemkiller.c

    4)匿名共享内存(Ashmem)为进程提供大块的共享内存,同时也提供管理和回收这个内存的机制。

    5)Physical MEM:向用户提供连续的物理内存空间。

    6)Android Logger:轻量级的日志设备

    7)Android Alarm:定时器的android定制/

    8)Yaffs2文件系统。

  • 相关阅读:
    explicit for ctors taking more than one argument
    Python 的 encode 和 decode
    Tripwire配置和运行
    man twadmin
    Tripwire策略说明
    Tripwire安装
    [部分翻译] tripwire(8)
    snort-2.9.3.1安装
    [转载] snort中文手册
    wireshark_1.2.11安装
  • 原文地址:https://www.cnblogs.com/minihaohao/p/5209322.html
Copyright © 2020-2023  润新知