android vs linux,Android vs Linux

大家都知道Android是基于Linux的开放软件平台,它的系统构架图如下所示:

2bfea7427a065831933c6b8688e4459c.png

那么它使用的linux和普通的 linux 有什么区别呢?下面我稍微总结一下:

1.  Ashmem - Anonymous shared memory subsystem (匿名共享内存子系统)

- mm/ashmem.c

- 允许进程共享命名的内存block

- 内核在其不使用时可以对其回收

- 更加适合小内存设备

- 使用open /dev/ashmem打开该设备,用mmap()之后,可以使用以下iocts:

. ASHMEM_SET_NAME

. ASHMEM_GET_NAME

. ASHMEM_SET_SIZE

. ASHMEM_GET_SIZE

. ASHMEM_SET_PROT_MASK

. ASHMEM_GET_PROT_MASK

. ASHMEM_PIN

. ASHMEM_UNPIN

. ASHMEM_GET_PIN_STATUS

. ASHMEM_PURGE_ALL_CACHES

2. Pmem - Process Memory Allocator

- drivers/misc/pmem.c

- pmem是用来管理用户空间和内核驱动之间(dsp, gpu, etc)较大块的连续共享物理内存(1-16+MB)

3.  Binder IPC - 类似corba的IPC

- drivers/staging/android/binder.c

- 用以替代System-V IPC进行进程间通讯

- 减少进程间通信开销,解决安全漏洞问题

- 进程/线程池间通讯

- 面向系统的组件结构

- 提供面向对象的操作系统环境

4. Logger - 日志功能 (kernel support for 'logcat' command)

- drivers/staging/android/logger.c

. 提供给用户进程读写系统日志信息

- drivers/staging/android/ram_console.c

. 在RAM buffer中存储内核日志

- 如果发生kernel panic,下次启动后,可以通过/proc/last_kmsg查看内核信息

4. Low Memory Killer

- drivers/staging/android/lowmemorykiller.c

- 扫描所有运行的进程然后杀死其中的一个进程

5. Yaffs2

- Yet another flash file system 2nd edition

- fs/yaffs2/*

- 专门针对NAND flash特性设计的文件系统

359f91018a77ffe21787645ebde84b13.png

- Yaffs2具有以下特点:

. 日志系统:Yaffs2是一个日志型文件系统,因此具有掉电保护功能。它需要一定的额外RAM空间来存储日志

. 垃圾回收:Yaffs2具有高度优化和可预测的垃圾回收策略,因此该文件系统具有高性能以及deterministic。当可用的内存太少时,Yaffs2会执行垃圾回收。一个有dirty page和good page的block将会被选择,Yaffs会把好的页面考到另外的block,然后把当前的block标记为dirty,并且擦出,使之能够再次被使用。

. 较少的额外内存需求:它比其他的大部分文件系统都需要更少的额外内存,因此具有更高的扩展性

. 灵活性,可移植性,健壮性。

6. Frame Buffer

- 需要double buffering aka panning 功能

-  分配实际frame大小两倍的内存

- Pan 功能选择实际输出到屏幕的buffer

7. Power Management

- 基于linux的电源管理

- More aggressive 的策略- “没有说要用,就关掉“

- 使用wakelock(唤醒锁)来管理电源

8. Bionic

- Andriod 版的Libc

- glibc 和 uclibc 都是基于LGPL版权

- 为了避免版权的纠纷,Android自己开发了仅有200k的BSD版权的bionic,除此之外,bionic更加适合小型移动设备

- Bionic不支持c++异常

- Bionic不与glibc或者uclibc兼容

- Bionic有意不提供System-V IPCs机制(semget(), shmget(), msgget()等)

- 不支持System-V IPC 的原因是“they lead to global kernel resource leakage" (会导致全局资源泄漏)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值