S2R

1.Linux内核的suspend状态

Linux内核支持多种类型睡眠状态,目前存在四种模式:suspend to idle(freeze)、power-on standby(standb)、suspend to ram(memory;STR)和suspend to disk(hibernate),分别对应ACPI状态的S0、S1、S3和S4状态。
State in Linux     Label     state     ACPI      备注
#define  PM_SUSPEND_ON         ((__force suspend_state_t) 0)                       正常
#define  PM_SUSPEND_FREEZE      ((__force suspend_state_t) 1)     freeze     suspend-to-idle     S0     冻结进程+挂起设备+CPU空闲
#define  PM_SUSPEND_STANDBY    ((__force suspend_state_t) 2)     standby     power-on suspend     S1     冻结进程+挂起设备+关闭nonbootCPU
#define  PM_SUSPEND_MEM     ((__force suspend_state_t) 3)     mem     suspend-to-ram     S3     仅保留RAM自刷新
#define  PM_SUSPEND_MAX      ((__force suspend_state_t) 4)     disk     suspend-to-disk     S4     关闭所有设备包括RAM,也被称为Hibernate

    Suspend-To-Idle

        此状态包括frozen processes+suspended devices+idle processors,具有轻量化的特点;并且相对于相对于Idle状态能节省更多的功耗,因为此时的用户空间被冻结且I/O设备进入了低功耗状态。

        相对于Suspend-To-RAM它具有低延时的优势。

    Power-On Suspend

        此状态简称standby状态,包括frozen processes+suspended devices+offline nonboot CPUs+suspend low-level system,对CPU的处理更近一步。所以相对于Suspend-To-Idle节省了更多的功耗,但是由于需要恢复CPU和一些底层功能也花费了更多的时间。

    Suspend-to-RAM

        挂起到内存,简称待机。计算机将目前的运行状态等数据存放在内存,关闭硬 盘、外设等设备,进入等待状态。此时内存仍然需要电力维持其数据,但整机耗电很少。恢复时计算机从内存读出数据,回到挂起前的状态,恢复速度较快。对 DDR的耗电情况进行优化是S3性能的关键,大多数手持设备都是用S3待机。此状态下计算机会冻结所有的活动并将当前工作状态保存到RAM中,然后关闭屏幕进入低功耗模式,通常睡眠和唤醒需要几秒。此状态使所有的设备进入低功耗状态,仅保留RAM自刷新。所有的设备和系统状态都保存在RAM中,所有外设被挂起。

    Suspend-to-disk

         此状态是最省功耗的模式,简称休眠。相对Suspend-to-RAM能节省更多功耗的原因是数据会被写入磁盘中,RAM也可以被关闭。但是这也导致了,更多的恢复延时,在resume的时候读回到RAM,然后在进行系统和设备状态恢复工作。把运行状态等数据存放在硬盘上某个文件或者某个特定的区域,关闭硬盘、外设等设备,进入关机状态。此时计算机完全关闭,不耗电。恢复时计算机从休眠文件/分区中读出数据,回到休眠前的状态,恢复速度较慢。电子书项目中,见过一款索尼的电子书,没有定义关机状态,只定义了S4,从而提高开机速度。一般在window系统中常见到。此状态下计算机将所有活动的状态保存到磁盘中,然后处于关机状态,此模式下是不耗电的,而相比之前的模式,休眠和唤醒的速度都比较慢。但是在一般的嵌入式设备上,此种状态不支持。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章