== Windows 电脑的四种运行状态 ==

这四种运行状态(或称电源状态)是:

  1. 工作状态 (Working), S0
  2. 睡眠状态 (Sleep), S1 或 S3
  3. 休眠状态 (Hibernate), S4
  4. 关机状态 (Shutdown), S5

请注意:以上四种状态中,并没有一种被我叫作“待机状态”,因为“待机”这个词是有歧义的,因此我避免使用它。

[一个提示] 在 Windows 2000 和 Windows XP 中,『开始』菜单→关机选项中确实有一项被叫作“待机(Standby)”,它的效果实际上等同于睡眠(Sleep)。微软后来应该是也觉得 Standby 这个提法有歧义,因此从 Vista 起就将其改名为“睡眠(Sleep)”。由于 Windows XP 的影响很深远,有些软硬件厂商一直用 Standby 来指代 Sleep ,直到今天。现在,请暂时忘掉“待机”这个提法,本文最后一部分回头再讨论这个词。

【工作状态】 工作状态就是一个系统的全功能状态,用户让它干什么它马上就干什么,只要是这个系统的软硬件能力范围之内。形象地说,用户敲一个按键或移动一下鼠标,屏幕上立即就有相应的反馈。

现在有一个问题,我不敲键盘也不按鼠标,电脑屏幕上一片寂静,那它还是处在工作状态吗?当然是,你应该将工作状态与否的实质理解为 CPU 有没有执行代码。虽然你觉得电脑是一片安静,但 CPU 可没闲着,因为系统中总是有一些后台程序在活动,比如,后台有个程序在帮你下载电影,操作系统自身的安全防护程序在扫描病毒。

没有人直接参与的这种工作状态,常常也被称作“空闲状态(Idle)”。空闲状态跟睡眠、休眠的区别在于,空闲状态下的系统仍旧是全功能运作的,有任何外部事件的发生,系统都会立即处理。比如:有个 QQ 好友突然发消息给你,你的 QQ 程序就会立即收到并弹出提示,即使你当时人不在电脑旁;反之,进入睡眠状态的 Windows 电脑是无法收到新的 QQ 消息的。

了解了工作状态的关键特征,现在可以说非工作状态了。拿 Windows 7 举例,开始菜单,关机选项能够呈现睡眠、休眠、关机这三种选择,全了。下面给出中英文界面对照图。

【睡眠状态】 睡眠状态的特征是: CPU 停止执行指令,内存中的东西原样留在内存中。

睡眠状态意味着:

  1. 你的未存盘文档没有丢失,它留在你的内存中。
  2. 后台的所有程序暂停执行,比如,后台的下载程序暂停下载动作,QQ 也不再能收到好友消息。
  3. 你可以敲一下键盘将系统唤醒。(点击或移动鼠标不一定能唤醒系统,看具体情况)
  4. 在系统被唤醒前,如果断电,内存中的信息将全部丢失,因为内存中的信息需要少量电力来维持。换言之,你的未存盘文档的未存盘部分将丢失。
  5. 系统唤醒后,所有的系统状态恢复成睡眠前的样子。你之前打开的所有应用程序窗口都留在原处,里头的内容也没变,你可以继续编辑未存盘的文档,就好像系统并未经历过睡眠那般。

【休眠状态】 休眠状态和睡眠状态的大部分特征是相同的,区别之处在于:原先睡眠状态下留在内存中的信息被原样写入硬盘,休眠完成后系统自身进入零耗电状态;唤醒系统时,硬盘中的内存镜像被原样装入内存,系统恢复运行。

这意味着:

  • 系统执行“进入休眠”这个操作,所花费的时间比“进入睡眠”要长很多,毕竟多了个“写硬盘”的动作。如果电脑上的硬盘是机械硬盘,写入速度算 100MB/s,内存大小是 4GB,那么,写硬盘时间可长达 40 秒。Windows 7 起有个改进,会将内存数据压缩后再写入硬盘,通常会节省一半的时间,即 20 秒,另外,当前没用到的内存块也不会被写入硬盘,又能再节省一些时间。
  • 休眠完成后,即使你拔掉电源线,未存盘的文档也不会丢失,因为数据已经存在硬盘上了。

一点点小结:由于睡眠和休眠并不丢失内存中的数据,因此 Windows 并不会提示你保存未存盘的文件。

【关机状态】 在 Windows 7 及之前版本的 Windows 上,开始菜单→关机,就是进入这种状态。关机将导致内存中的数据全部被清空,因此,应用程序会提示你保存未存盘的文档;如果你发现文档还需要修改修改才值得保存,你可以趁此机会取消刚才的关机请求。

这里提一下“重启(Restart/Reboot)”这个词,进入关机状态后再开机,被称为重启;如果是睡眠或休眠后再唤醒(Wakeup/Resume),则不叫重启。

【一个有趣的问题,既然休眠是零耗电,你愿不愿意用休眠来代替关机呢?】

就我个人而言,当我发现 Windows 2000 开始提供休眠功能时,我就爱上它了,我默认的关电脑方式就改为了休眠。我喜欢给电脑配大内存(总是将主板的内存槽都插满),同时打开多个程序,休眠带来的巨大好处是,从休眠中唤醒后,我昨天遗留的工作环境、软件状态就原原本本地在那里了,我的工作思路马上就能接上。

感谢 Windows NT 内核的高稳定性,一次 Windows 开机后一般能运行一两个月才需要重启。需要重启的场合有下面这么几种:

  • 升级了一个软件,升级过程被要求重启,不重启的话,有一些旧文件无法被删除。
  • 原因一般是系统组件或驱动程序出了问题,不重启无法解决故障。
  • Windows 自身有 bug,导致内存消耗太大的情况下无法进入休眠。微软陆续出过一些补丁来修正,但似乎一直没有彻底解决,该问题到 Windows 8.1 时还一直存在。

那休眠和唤醒的速度,比起关机再开机的速度,是否真的更快了呢?我的亲身体会是,如果内存没超过 8GB,休眠唤醒的速度体验确实比较快,而且,内存越小越快。想想看,Windows 一次开机过程,时间都消耗到哪里去了?如果是安装一份全新的 Windows ,不装任何第三方软件,它的开机速度是相当快的,大约 20 秒即可;随着你安装越来越多的第三方软件,开机速度将越来越慢,为什么呢?因为很多第三方软件会在系统中安插后台进程,那些后台进程是一开机就要执行的,是它们拖慢了开机速度。第三方软件的进程做完初始化动作后,如果你没有明确去使用它们,它们一般处于安静状态,只是消耗着少量的内存。现在你采用休眠策略,休眠和唤醒的过程,那些第三方程序是不需要重新初始化的,这部分时间就被活生生省下来了。

很可惜啊,休眠这么好的功能,很多人其实并不懂得使用,也许他们听说过这个功能,但是不敢使用。毕竟很多人对陌生的事物总是抱有一丝恐惧的。

~~~~

休眠是个好功能,但微软从 Vista 起的一个设计让我蛮痛恨的:休眠过程不再显示进度条了。

Windows XP 和 Windows 2000 的休眠过程会显示一个进度条,用于表示内存数据写入硬盘的进度。Windows XP 的显示如下:

刚才说过,这个操作通常需要几十秒时间,内存越大休眠越费时,因此有个进度条是很好的设计。然而,从 Vista 起,这个休眠进度条被微软砍掉了,那屏幕上显示什么呢?屏幕上什么都不显示,就是个黑屏。这就很让人讨厌了。想想以下两种场景。

  • 假设我用台式电脑,我希望休眠完毕后切断电源。我如何直观判断休眠是否完成了呢?
  • 我出差用笔记本电脑,我希望休眠完成后再将电脑塞到包里。需要判定的理由是,有某些情况休眠会失败,休眠失败意味着,虽然我向 Windows 下达了休眠请求,但 Windows 一直卡在工作状态,我的电脑还在大量地发热。冒然将还在工作状态的电脑憋在电脑包里,电脑有可能会因为过热而损坏。

没有了休眠进度条,休眠是否完成的判断方法还是有的,只不过比较费神,我得盯住电脑的电源指示灯,电源指示灯熄灭我才能确认休眠完成了。如果黑屏持续的时间比以往的经验要长很多,我只能判定休眠失败了,此时只好强制关机。

微软为什么要把这样有用的一个反馈界面给砍掉呢?我不相信这是技术难题,既然 Windows XP 都做到了,Vista 为什么做不到?两个字总结:犯懒。当然,微软会在其他方面找一些冠冕堂皇的理由来辩解,但根本站不住脚。下头讲“混合睡眠”时就会有这样一个理由。

【四种运行状态的总结表】

在 Sleep 状态下,除了键盘以外的哪些外设可以唤醒系统,不同软硬件的系统有不同的表现。比如,有些机器的 BIOS 设置中允许 USB 鼠标唤醒系统;使用 Intel 的网卡,通过网卡的驱动程序可以设置是否被特定的数据包唤醒。

下图是一个 Intel 网卡的驱动程序配置界面,可以配置 Windows 被什么样的网络数据包唤醒。图中所谓的“待命”,显然是沿用了 Windows XP 时代的 Standby 用语,其实它是 Sleep 的意思。

注:从概念上说,休眠是比睡眠更深度的节能状态,意思是,

  • 在休眠状态下,更多的外设会被系统置于“非活动”状态以节省电力消耗。举个例子,一台 2005 年左右的 PC 台式机,进入睡眠时我们会发现它的硬盘仍在旋转(能听到旋转的嗡嗡声),而进入休眠时,硬盘肯定是不转的。
  • 休眠状态下能够主动唤醒主机的外设也更少。睡眠和休眠状态下具体哪些外设能够唤醒主机,跟当前系统的软硬件配置有很大关系。

Windows 电脑的四种运行状态工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), S4 关机状态 (Shutdown), S5的更多相关文章

  1. windows线程池四种情形(win核心读书笔记)

    windows线程池四种情形(win核心读书笔记) Mircosoft从Windows2000引入线程池API,并在Vista后对线程池重新构架,引入新的线程池API.以下所有线程池函数均适用于Vis ...

  2. 把 Console 部署成 Windows 服务,四种方式总有一款适合你!

    一:背景 1. 讲故事 上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署. 程序: netcore 2.0,操作系统: windows server 2012,坑爹的事情就来了, net ...

  3. 输入/输出系统的四种不同工作方式对CPU利用率比较

    程序控制工作方式:输入/输出完全由CPU控制,整个I/O过程中CPU必须等待其完成,因此对CPU的能力限制很大,利用率较低 程序中断工作方式:CPU不再定期查询I/O系统状态,而是当需要I/O处理时再 ...

  4. 给电脑C盘系统盘瘦身的四种方法

    进入后XP时代,又有很多朋友选择了Win 7系统,很多朋友在使用时可能会发现一个问题.电脑刚被买回来时,我们往往都把C盘(系统盘)预留几十个G左右的空间,而且可能装的东西并不是太多,但是磁盘却显示,可 ...

  5. jvm锁的四种状态 无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态

    一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? --->synchronized是在jvm层面实现同步的一种机制.  jvm规范中可以看到synchronized在jvm里 ...

  6. android 四种堆状态

    总结下: ====> 建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/a ...

  7. Java虚拟机15:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

  8. C++线程同步的四种方式(Windows)

    为什么要进行线程同步? 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解.正常情况下对这种处理结果的 ...

  9. Java虚拟机19:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

随机推荐

  1. [Fundamental of Power Electronics]-PART I-6.变换器电路-6.4 变换器评估与设计/6.5 重点与小结

    6.4 变换器评估与设计 没有完美适用于所有可能应用场合的统一变换器.对于给定的应用和规格,应该进行折中设计来选择变换器的拓扑.应该考虑几种符合规格的拓扑,对于每种拓扑方法,对比较重要的量进行计算,比 ...

  2. spring-cloud-gateway 服务网关

    Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关.网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发.权限校验.限流控制等 ...

  3. Spring Boot XSS 攻击过滤插件使用

    XSS 是什么 XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与 CSS(Cascading Style Sheets)名词混淆,故将跨站脚本攻击简称为 XSS,XSS ...

  4. 【笔记】《Redis设计与实现》chapter15 复制

    15.1 旧版复制功能的实现 同步 命令传播 旧版复制功能的缺陷 15.3 新版复制功能的实现 Redis2.8开始,使用PSYNC命令替代SYNC命令来执行复制时的同步操作 PSYNC命令具有完整重 ...

  5. NumPy之:NumPy简介教程

    目录 简介 安装NumPy Array和List 创建Array Array操作 sort concatenate 统计信息 reshape 增加维度 index和切片 从现有数据中创建Array 算 ...

  6. java连接数据库(jdbc)的标准规范

    java连接数据库的标准规范 JDBC全称:java database connectivity ,是sun公司提供的Java连接数据库的标准规范. localhost和127.0.0.1 都是表示当 ...

  7. 使用numba加速python科学计算

    技术背景 python作为一门编程语言,有非常大的生态优势,但是其执行效率一直被人诟病.纯粹的python代码跑起来速度会非常的缓慢,因此很多对性能要求比较高的python库,需要用C++或者Fort ...

  8. 『政善治』Postman工具 — 1、Postman介绍与安装

    目录 一.Postman介绍 二.Postman下载与安装 1.Postman下载 2.Postman安装 3.为什么要注册Postman账号 一.Postman介绍 Postman是一款非常流行的H ...

  9. hdu4861 找规律了

    题意:      给你k个球和一个整数p,每个球的价值是 1^i+2^i+...+(p-1)^i (mod p),两个人轮流取球,最后谁的总价值也大谁就赢,问你先手能不能赢. 思路:      一开始 ...

  10. Intel汇编语言程序设计学习-第四章 数据传送、寻址和算术运算-下

    4.3  和数据相关的操作符和伪指令 操作符和伪指令并非机器可执行的指令,相反,它们是由汇编器进行解释的.开发者可以使用一系列的MASM操作符或伪指令获取数据的地址以及大小等特征信息: OFFSET操 ...