浅谈Android4.4和Android L中的trim技术

本文探讨了Android 4.4和Android L中引入的Trim技术,该技术通过ATA指令增强操作系统与SSD主控制器的交互,提高闪存垃圾回收效率,保持设备的高速度和延长SSD寿命。介绍了两种调用Trim整理NAND碎片的方法:系统自我检测触发和手动命令触发,并详细阐述了系统自我检测触发的功能流程。
摘要由CSDN通过智能技术生成
1、trim是什么?

        一条ATA指令,由操作系统发送给SSD主控制器,告诉它哪些数据占有的地址是“无效的”。 其实就是操作系统将一部分的控制权交给了SSD主控制器,让操作系统与SSD主控制器有一个互动。因为闪存需要先擦除才能再次写入数据,要得到空闲的闪存空间,SSD必须复制所有“有效”页到新的“空白页”里,并且擦除旧块,即垃圾回收;避免了在操作系统要重新写入数据时, SSD才会知道哪些地址是无效的情况。这样就可以在适当的时机做最好的优化。 简而言之,这是一种能够让闪存长期工作后,也能维持高速度的技术。不少人长期使用安卓机后表示,安卓怎么就越用越卡,无论怎么刷系统清数据也没法回到刚买时的流畅度。这往往是由于长期使用后,闪存的垃圾回收效率大大降低,使得安卓机的I/O性能大跌造成的。安卓4.3支持Trim技术,能够大幅提升闪存垃圾回收效率,让闪存始终保持接近原始状态的高速度。  这样做既提高了“硬盘速度”, 同时也延长了SSD的使用寿命,垃圾回收!!!

2、调用trim整理NAND上碎片的两种方法

    1、挂载ext4分区时加上discard选项, 可以在fstab.qcom文件中查看相关定义。
        eg:fstab.qcom中有如下定义,
            /dev/block/bootdevice/by-name/system         /system      ext4    ro,barrier=1,discard                                wait
        其中的discard选项表示使用trim整理功能。
    2、使用fstrim命令,当设备各传感器满足一定条件下就会从MountService.java中调用语句 — — > mConnector.execute("fstrim", "dotrim")启动trim整理功能,该语句将直接调用到vold层执行fstrim 命令。
3、fstrim命令实现流程简单介绍

   3.1 Java Framework层
        Framework层启动fstrim整理磁盘anroid L 和android4.4版本有所不同,将分别介绍两种方案。
        
   3.1.1 android 4.4   

        可以分为两种方式,一是系统自我检测触发功能,二是手动输入命令直接触发功能。手动触发功能是USB连上手机后输入adb shell am idle-maintenance直接启动,frame

works/base/cmds/am/src/com/android/commands/am/Am.java中将注册com.android.server.IdleMaintenanceService.action.FORCE_IDLE_MAINTENANCE广播,在IdleMain

tenanceService.java下onReceive(...)将监听到广播,从而实现手动触发。下面重点介绍系统自我检测触发功能的相关流程,主流程如下:

        SystemServer.java -----> IdleMaintenanceService.java ----> MountService.java ----> NativeDaemonConnector.java
        1)SystemService.java中启动注册IdleMaintenaceServi
           
         try {
             Slog.i(TAG, "IdleMaintenanceService");
                     new IdleMaintenanceService(context, battery);
         } catch (Throwable e) {
             reportWtf("starting IdleMaintenanceService", e);
         }

    
        2)IdleMaintenanceService.java中注册各种广播和触发条件,register(Handler handler)中注册各种广播,如电量变化,屏幕开关等。在onReceive中监听广播,当收到Intent.ACTION_BATTERY_CHANGED,Intent.ACTION_SCREEN_ON,Intent.ACTION_DREAMING_STOPPED等广播时
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值