让Windows休息的几个解决办法(转)

本文详细介绍了Windows系统中的休眠与待机功能的区别及其工作原理,包括如何设置及利用这些功能提高工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

让Windows休息的几个解决办法(转)[@more@]

  待机、休眠究竟是咋回事?它们之间究竟有何区别?

  

  如何进入待机和休眠

  

  按下“开始→关机”,在弹出窗口中,你会看到最后一项就是“待机”。怎么没有“休眠”呢?原来,系统默认是不启用休眠的,需要我们自己设置,在控制面板中双击“电源选项”,切换到“休眠”标签,勾选“启用休眠”(见图1 ),就可以在关机菜单中看到“休眠”了。

  
 2005.5.25.17.21.14.1.jpg

  

  电脑的高级电源管理

  

  要掌握待机和休眠,必须先了解下面两个知识:ACPI和APM。

  

  1.什么是ACPI

  

  ACPI是Advanced Configuration and Power Interface的缩写,中文意为“高级配置与电源接口”,这是微软、英特尔和东芝共同开发的一种工业标准。

  

  ACPI主要可实现以下功能:

  

  ①用户可以使电脑在指定时间开、关;

  

  ②即插即用设备在插入时能够由ACPI来控制,并为其供电;

  

  ③在无人使用电脑时可以使电脑进入休眠状态,但保证一些通信设备打开;

  

  ④操作系统可以根据外设和主板具体需求为它分配能源;

  

  ⑤操作系统可以在应用程序对时间要求不高的情况下降低时钟频率;

  

  ⑥使用笔记本电脑的用户可以指定电脑在低电压情况下进入低功耗状态,以保证重要应用程序运行。

  

  同时,可将ACPI分为六种不同的工作状态,分别是S0到S5,它们代表的含义分别是:

  

  S0:电脑正常工作,所有硬件设备全部处于打开或正常工作的状态;

  

  S1:也称为POS(Power on Suspend,CPU停止工作),其他的硬件设备仍然正常工作;

  

  S2:将CPU关闭,但其余的硬件设备仍然运转;

  

  S3:通常称为STR(Suspend to RAM,挂起到内存),将运行中的数据写入内存后关闭硬盘;

  

  S4:也称为STD(Suspend to Disk,挂起到硬盘),内存信息写入硬盘,然后所有部件停止工作;

  

  S5:所有硬件设备(包括电源)全部都关闭,也就是关机。

  

  2.什么是APM

  

  APM其实是Advanced Power Manager(高级电源管理)的缩写,这是通过操作系统来控制、管理电脑硬件电源的一种管理模式,其实也是一套电脑电源管理程序(软件),版本不同,功能也有所不同,比如APM V1.0&V1.1,这两个版本都是直接由BIOS执行电源管理,而APM V1.2则是可以先通过操作系统定义电源管理,然后再由BIOS负责执行。

  

  在如今流行的操作系统中,都内置了APM,而在以前的DOS时代,APM并未真正被引入操作系统,所以无法执行待机、休眠等操作,重启也只能用Ctrl+Alt+Delete组合键或电源的Reset键。

  

  3.BIOS中的电源管理设置

  

  一般而言,主板产商定义BIOS的默认设置都是启动了“高级电源管理”这个功能的,大多数情况下不需要我们自己设置,只需采用其默认设置即可。如果碰到以前能使用“高级电源管理”,但后来又不行了,排除系统或其他硬件可能外,才会考虑BIOS中的设置是否有问题。遇到这种情况,可以将BIOS设置还原到默认状态即可,方法为:启动电脑,用DEL键进入BIOS,用键盘上方向键定位到“Load Optimized Defaults”,然后按F10保存并退出BIOS设置即可。这里以Intel845PE主板为例,其他类型主板大致相同,这里仅作为参考。

  

  “Power Management Setup”常见设置举例

  

  ACPI Function:是否允许ACPI功能

  

  ACPI Suspend Type:ACPI的挂起类型,通常这里只有一个选择,即S1(POS)状态,其实这个就包含了其他的挂起状态(S2、S3、S4)

  

  Power Management:电能管理方式,默认为User Define(用户自定义),还有就是Min Saving(最小)和Max Saving(最大)

  

  Video Off Method:显示器开关

  

  可以设置的值:Blank Screen表示显示器不发射电子光束,即可减少耗电;V/H SYNC+Blank表示除Blank Screen外,还可由BIOS来控制显示器水平与垂直同步信号,达到省电目的,此项为默认设置;DPMS Support,DPMS是显示器与显卡之间的电源管理协定。在两者都支持DPMS的状态下,只要BIOS支持,显卡即可通过信号通知显示器进入省电模式。

  

  HDD Power Down:设置IDE硬盘在多长时间内完全没有读写操作时,便可进入省电状态,切断硬盘电源以省电,缺省值为Disabled。

  

  Modem Use IRQ:该选项说明Modem使用的端口所占用的IRQ编号,让系统在省电状态下仍可以监视。Modem是否有活动,可以设置的值:N/A、3、4、5、7、9、11。其中N/A表示不对Modem进行监测;

  

  USB KB Wake-Up Drom S3:是否采用USB键盘唤醒,缺省值为“Disabled”。

  

  Soft-Off by PWR-Button:这是机箱电源开关的功能设置,在开机状态下,按住开机电源按键超过四秒钟,系统就一定会关机,如果不超过4秒,系统就会按此设置操作。可以设置的值:Delay 4 Sec表示超过4秒关机,如果不超过4秒则进入Suspend模式,此项为默认设置;Instant-Off表示不需要等待4秒,只要按下关机按钮立刻关机。

  

  待机、休眠是怎样工作的

  

  1.为什么需要待机、休眠

  

  尽管电脑硬件运行速度越来越快,但操作系统的体积也在不断膨胀,使得电脑开、关机时,启动、关闭的程序越来越多,花费时间也越来越漫长。因此如何让电脑能够快速启动、一开机就进入Windows,就成为用户关心的问题。

  

  于是,随着硬件和软件的升级,操作系统开始引入了高级电源管理,其作用就是在电脑闲置时关闭部分设备,将电脑进入等待休息状态,这样当需要重新使用电脑时,能够直接从等待休息状态尽快恢复到原先的工作状态,起到类似于快速启动的效果;同时,不用电脑时还能节省不少电能。

  

  2.把数据存到内存中――待机

  

  我们都知道,从硬盘读取数据的速度远低于从内存读取的速度。因此,电脑运行时首先是将硬盘中的数据提出并存到内存中,然后再由内存将数据发送到CPU中进行处理,接着处理后的数据将先返回内存,再写进硬盘。正在运行的数据几乎都保存在内存中。然而,进入待机状态也就是将当前数据保存在内存中,然后将硬盘关闭,也就是挂起到内存(Suspend to RAM,简称STR)。

  

  这时除硬盘外,其他设备还是处于加电等待状态(也就是说唤醒时无须重新加电,通俗地说就是原地待命),所以电源、CPU、显卡等设备的风扇还是处于工作中,键盘指示灯也是亮着的。我们可以通过按键盘任意键或动一下鼠标来唤醒电脑,这时硬盘就会重新加电并启动,然后和内存、CPU等设备交换数据,从而完成返回到原来工作状态的任务。

  

  3.将内存装进硬盘――休眠

  

  休眠,在广义上包括挂起到内存(STR,也就是待机)和挂起到硬盘(Suspend to Disk,简称STD)两种,而我们通常所指的休眠其实是STD。当电脑进入休眠状态时,电脑首先将内存中的状态复制到硬盘,然后关闭电源。此时电脑几乎和通常关机一样“安静”,你完全可以切断电源,因为保存到硬盘里面的数据不会由于断电而丢失!它和Ghost给系统做镜像的道理一样,不过与Ghost不同的是:Ghost保存并恢复的是整个系统信息,而休眠保存并恢复的是系统运行的信息。与待机相比,休眠是不能通过外部设备来唤醒的,它和正常开机一样启动电脑;不过和开机相比,休眠后启动电脑无需一个一个进程地来启动,只须要将硬盘中的内存镜像读取到内存中即可。

  

  由于内存中的资料就是电脑当前的“状态”,为保持这个状态不变(可理解为不能压缩),系统必须在硬盘中开辟一个和内存容量大小相等的空间以保证能装下整个内存的“当前状态”,而这个空间的名字就叫hiberfil.sys,它的体积一般为物理内存的大小(比如电脑的内存是256MB,这个文件的体积也将是256MB,如图1),和我们管虚拟内存叫做pagefile.sys道理是一样的。

  

  你知道吗?

  

  为什么Windows 98中不要启用休眠?

  

  原因有两个:①在刚推出Windows 98时,很多硬件对ACPI支持不是很好,所以Windows 98不能自动识别ACPI规范,不过可以在安装时用“Setup /PJ”命令来安装Windows 98,或升级Windows 98“高级电源管理”的驱动,让其支持ACPI。②由于Windows 98的内核对内存管理上的缺陷,很多时候Windows 98需要将电脑重启,清空内存后才能保证系统正常高效地运行。休眠正好是不清空内存信息而将其存储到硬盘里面,所以休眠对Windows 98系统而言,也就失去了原来的意义。相比之下,NT内核的系统在内存管理方面要优秀得多,可以连续使用很多天而无须重启,系统照样能高效运行。

  

  巧用待机、休眠,助你事半功倍

  

  实例1:一键待机,一键关机

  

  在控制面板中打开“电源选项”,切换到“高级”标签,将“在按下计算机电源按钮时”设置为“关机”,将“在按下计算机睡眠按钮时”设置为“待机”(见图2),这样按键盘上的“Power”键就是“关机”,按“Sleep”键就是“待机”,是不是方便了不少?

  
 2005.5.25.17.21.25.2.jpg

  如果你的键盘没有“Sleep”键,可以在桌面右击并选择“新建→快捷方式”,在弹出对话框的“请键入项目的位置”中输入“rundll32.exe powrprof.dll,SetSuspendState”,完成后再给它设置一个快捷键组合,比如:Ctrl+F12。这个快捷方式的功能与“在按下计算机睡眠按钮时”的设置有很大关系,如果你将这里改为“休眠”,那么它就成了休眠的快捷方式了。

  

  实例2:让鼠标别来打搅爱机休息

  

  有不少朋友都碰上过由于鼠标太灵敏了,待机时,稍微震动一下电脑


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8403220/viewspace-940944/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8403220/viewspace-940944/

### 阻塞型 `sleep()` 函数的实现与使用 #### 什么是阻塞型 `sleep()` 函数? `sleep()` 是一种常见的系统调用,用于使当前线程或进程暂停一段时间。根据定义,在标准库中的 `sleep()` 或者 `time.sleep()` 已经是以阻塞形式工作的[^2]。这意味着当程序执行到这个函数时,它会停止继续向下运行直到指定的时间过去。 如果需要自定义一个类似的阻塞功能或者确认其行为是否完全符合预期,则可以通过底层操作系统的机制来模拟这种效果。以下是几种可能的方式: --- #### 使用 Python 的内置 `time.sleep()` Python 中的标准库已经提供了基于操作系统层面的睡眠方法——即 `time.sleep(seconds)` 方法。此方法本质上是一个阻塞调用,因为它会使整个线程处于休眠状态而不会释放 CPU 资源给其他任务(除非多线程或多进程中)。因此可以直接利用这一特性完成需求[^1]: ```python import time def blocking_sleep(seconds): """ 实现一个简单的阻塞型 sleep """ start_time = time.time() while (time.time() - start_time) < seconds: pass # 占用CPU资源直至时间耗尽 blocking_sleep(5) # 测试:阻塞5秒 ``` 上述代码通过循环不断检测经过了多少时间,并保持占用处理器周期直到满足条件为止。不过需要注意的是这种方式效率较低且浪费能源,实际应用中推荐直接采用原生支持的高效版本如 `time.sleep()` 来代替手动轮询逻辑。 --- #### 利用 C/C++ 编写低级接口 对于某些特定场景下希望更加精细控制延迟过程的情况来说,可以考虑借助更接近硬件抽象层次的语言来进行开发工作。下面展示了一个简单例子说明如何在C语言里创建自己的延时期间: ```c #include <stdio.h> #include <unistd.h> void custom_block_sleep(unsigned int secs){ printf("Sleeping for %d second(s)\n",secs); usleep(secs * 1e6); // Convert to microseconds and call microsecond resolution function. } int main(){ custom_block_sleep(3); return 0; } ``` 这里我们选择了 POSIX 标准下的另一个更高精度的 API —— `usleep()` ,它可以接收微秒单位作为输入参数从而提供更为精准的结果。当然也可以替换为其它平台专属APIs, 比如 Windows 下面对应的 `_sleep()` 宏定义等等. 值得注意的一点在于这些外部依赖项往往都具备内在同步属性也就是天然表现为“阻塞性质”的动作模式[^4]. --- #### 关于信号处理期间的安全注意事项 尽管大多数情况下默认版次能满足基本要求,但在特殊场合比如涉及异步事件响应机制的时候则需格外小心对待潜在风险因素。例如当尝试混合运用定时唤醒(`alarm`) 和常规休息指令 (`sleep`) 结合起来构建复杂流程链路结构之时可能会引发竞态状况等问题发生[^3]. 此类情形建议优先选用那些被标记为可重入安全性的替代品以规避不必要的麻烦事端产生。 --- ### 总结 综上所述,无论是高级脚本环境还是传统编译型编程范式当中均存在多种途径达成目标设定好的定额间隔停顿目的。最简便快捷的办法莫过于沿用现有的成熟解决方案即可轻松搞定绝大多数日常遇到的实际难题情境啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值