关于Linux操作系统睡眠和休眠

关于Linux操作系统睡眠和休眠
2009-02-16 16:25


  在作之前,先检查一下你的内核能支持哪些方式:
 
  # cat /sys/power/state
 
  standby disk
 
  1. 睡眠 (sleep)
 
  睡眠可能有两种方式:mem和standby,这两种方式都是suspend to RAM,简称STR,只是standby耗电更多一些,返回到正常工作方式时间更短一些而已。
 
  只需要
 
  # echo standby > /sys/power/state
 
  就可以了。
 
  2. 休眠 (hibernation)
 
  休眠也有两种方式:shutdown和platform.shutdown是通常的方式,比较可靠一些。如果你的系统上ACPI支持非常好,那就有机会支持platform方式。激活的方式稍有不同:
 
  # echo platform > /sys/power/disk; echo disk > /sys/power/state
 
  or
 
  # echo shutdown > /sys/power/disk; echo disk > /sys/power/state
 
  注意休眠有一个前提,就是在系统启动时需要指定resume设备,也就是休眠的镜像需要保存的分区。一般都用swap分区来做。
 
  指定方式是:
 
  kernel /boot/vmlinuz root=/dev/sda1 resume=/dev/sda2 vga=0x314 ……
 
  这样在系统启动时,内核会检查resume中的内容,如果存在上次休眠的镜像,那内核便会将镜像读入

内存,恢复正常工作状态。

echo -n ram > /sys/power/state # 待机
echo -n disk > /sys/power/state # 休眠

系统挂起(Suspend)是电源管理(APM&ACPI)的一个特性,给用户带来了很大的方便。Linux在2.6系列核心中对电源管理有了较好的支持,下面就谈谈Linux对系统挂起的支持情况。 Linux对系统挂起的支持 Linux同时提供了对APM和ACPI的支持,当时两者是不兼容的,同一时刻只能有一种机制工作。由于ACPI的优越性,所以现在Linux将ACPI设为缺省的电源管理方案。对于一些比较旧的主板,如果其BIOS中ACPI的实现在2000年以前,那么Linux自动启用APM(可以通过核心命令行参数acpi=force来强制启用ACPI)。如果你下主板BIOS中对ACPI的支持有些问题导致Linux工作不正常,那么还可以使用核心命令行参数acpi=off来强制禁用ACPI,这样Linux会自动启用APM电源管理。
Linux现在主要支持三种ACPI的节电方式:
S1:Stopgrant,即待机(standby)模式。显示屏自动断电,只是主机通电。这时敲任意键即可恢复原来状态。
S2 S3:STR(Suspend To Ram),即挂起到内存。系统把当前信息储存在内存中,只有内存等几个关键部件通电,这时计算机处在高度节电状态。此时系统不能从键盘唤醒。手工唤醒的方法只能是按前面板上的电源按钮。唤醒后,计算机从内存中读取信息很快恢复到原来状态。
S4:STD(Suspend To Disk),即挂起到硬盘,也即休眠。计算机自动关机,关机前将当前数据存储在硬盘上,用户下次按开关键开机时计算机将无须启动操作系统,直接从硬盘读取数据,恢复原来状态。
在Linux下查看核心支持ACPI情况的方法如下:
2.4核心下: # cat /proc/acpi/sleep S0 S1 S3 S4 S5
2.6核心下: # cat /sys/power/state standby mem disk 上面的输出可知,我们系统中核心同时支持三种节电模式。
在/sys/power目录下还有一个文件:disk,文件的内容可以如下: shutdown: 将系统状态保存到磁盘,让BIOS关闭计算机; platform: 将系统状态保存到磁盘,让BIOS关闭计算机,并且点亮挂起指示灯; firmware: 让BIOS自己将系统状态保存,并且关闭计算机,需要BIOS自己有挂起磁盘。大部分工作都由BIOS完成,对操作系统是透明的; 进入这三种节电模式的方法如下: #echo standby > /sys/power/state ---->挂起(S1) #echo mem > /sys/power/state ---->挂起到内存(S3) #echo shutdown > /sys/power/disk; echo disk > /sys/power/state ---->挂起到磁盘(S4) #echo platform > /sys/power/disk; echo disk > /sys/power/state Linux下的磁盘挂起(STD)是通过swsusp机制实现的:将系统当前状态保存的内存后,再把内存内容写入交换分区(swap)。这里要求交换分区容量最好大于内存容量。系统挂起到磁盘后,下次启动的时候需要向核心传递命令行参数resume=/dev/hdaX(/dev/hdaX是系统中的交换分区),这样系统就能够很快恢复到关机时的状态。 还有一个非正式的核心补丁可以实现STD:Software Suspend 2。该项目是一个快速发展的项目,设计上教swsusp有一些优势,但是还没有集成到核心正式发布中,实现方式与swsusp基本相同。 虽然Linux提供了系统挂起的机制,但是执行上面的挂起操作不一定能够成功。一方面,这些操作除了需要BIOS支持以外,还需要外围硬件设备能够兼容,即设备支持节电状态,支持从节电状态或断电状态恢复;另一方面,这些设备驱动必须能够接收电源管理指令。目前,系统挂起的主要障碍就是那些还不太完善的驱动程序,如USB、显卡、声卡驱动等。 当然,现在Linux核心对系统挂起的支持还有待改进,主要表现在: 不支持SMP系统。 不支持大内存(>4G)。 核心中许多模块需要增加电源管理的支持。 缺少上层配置程序。 不过可以放心,所有的问题内核黑客们都能够解决!
参考阅读: http://www.acpi.info:ACPI的官方网站,在上面可以免费获得最新的ACPI规范。 http://acpi.sourceforge.net:Linux下支持ACPI项目网站。
官方Linux内核中ACPI的版本实际上已经远远落后于最新的版本,因为linux稳定版中对任何新特性的加入都是非常小心谨慎的。你可以从这里下载最新的ACPI补丁。
Linux核心源代码目录:Documentation/power/,里面有开发人员写的一些关于电源管理在Linux上实现的文档。
http://www.suspend2.net:Software Suspend 2的官方网站,STD的另一个解决方案。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux操作系统中的待机、休眠睡眠是三种不同的电源管理模式。它们的区别主要在于系统的状态和功耗。 待机模式是指将电脑关闭显示屏、硬盘等不必要的设备,进入低功耗状态,但仍然保留内存中的数据和运行状态。此时,CPU处于较低的频率和电压,节省了电能,但系统仍处于活动状态,可以快速恢复到之前的工作状态。 休眠模式又称为挂起模式,是将系统状态保存到硬盘上,除了CPU之外的其他硬件设备都被关闭。在休眠模式下,将所有内存中的数据存储到磁盘上,CPU停止运行,并降低系统的功耗。通过这种模式,可以关闭电源而不丢失未保存的工作,系统可以在恢复时恢复到以前的状态。 睡眠模式是指将操作系统和硬件设备都置于低功耗状态,关闭显示屏、硬盘,同时将内存中的数据保留在RAM中。在睡眠模式下,系统会进一步降低功耗,但仍然保持部分硬件设备(如内存)的供电。通过这种模式,可以快速恢复到之前的状态,但它相比于休眠模式消耗的电源更多。 总的来说,待机模式是系统仍然保持活动状态,不会保存当前状态;休眠模式是将状态保存到硬盘上,电源关闭,可以快速恢复;睡眠模式是将状态保存在内存中,保持部分硬件供电且功耗更低,也可以快速恢复。选择适合自己需求和电源管理的模式可以更有效地管理电脑的电能消耗。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值