系统进入S3,S4,S5的最后一步

本文详细解释了在不同操作系统中,计算机如何通过设置SLP_TYPx和SLP_EN寄存器来通知硬件进行正确的关机流程。在Windows系统中,操作系统会调用特定的ACPI方法,并设置寄存器来触发关机过程。而在DOS系统中,则由BIOS接管并完成关机操作。

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

   一直都不怎么懂,在我们关机的时候,(如在dos下按了power button,在Windows下按了shutdown),计算机最后是怎么关机的呢?肯定有一个通知硬件断电的动作,后来问HW工程师,知道硬件上有S3,S5和S4(intel chipset)的信号,当其中某个信号被拉低的时候,HW上会有相应的power sequence也就是断电时序。

    而s3,s4和s5信号一般是由南桥发出来的,按照ACPI spec,chipset都有SLP_TYPx和SLP_EN这两个寄存器字段来控制HW进入相应的电源模式(Sx)。

    所以,当我们在Windows下按了shutdown后,OS和driver会做进入s5的一些动作,然后OS执行_BTS,_PTS和_GTS(如果都有)三个ACPI规定的方法,最后将5填入SLP_TYPx寄存器,设置SLP_EN想让HW执行S5的sequence.

    就这样结束了吗?那在dos系统下关机有时谁来填的SLP_TYPx和SLP_EN呢? 只有是BIOS。

    BIOS会设两个SMI,一个是由power button触发(当按power button时),一个是由sleep event触发(当填SLP_TYPx或SLP_EN??时)。所以在dos系统下,按power button时BIOS会在处理其SMI时填SLP_TYPx和SLP_EN这两个寄存器;在Windows系统关机或进入睡眠时,OS填SLP_TYPx或SLP_EN时触发sleep event SMI,BIOS会保存一些寄存器,然后填SLP_TYPx或SLP_EN。

    那么这里就又有两个问题啦?1.BIOS填SLP_TYPx或SLP_EN不会触发sleep event SMI么?2.ACPI模式下可以产生SMI么?

1.因为两次BIOS填SLP_TYPx或SLP_EN都是在处理SMI里面,而同时只会有一个SMI被触发,也就是SMI不会存在嵌套,所以在SMI处理时不会再触发SMI.

2.ACPI模式下是可以产生SMI的,只要相应的Status和Enable bit被置位。

ASL代表操作系统自举语言(ACPI Source Language),SMI代表系统管理模式(System Management Mode),而BIOS则是基本输入输出系统(Basic Input/Output System)的缩写。 ASL是一种高级编程语言,用于编写ACPI(高级配置与电源管理接口) BIOS的定义和实现。ACPI定义了电源管理方案,以便操作系统和硬件之间能够通信并有效地管理系统资源。ASL语言用于编写ACPI描述表和方法,这些表和方法包含了关于系统硬件设备的信息和管理规则。ASL文件可以被ASL编译器编译为AML(ACPI机器语言),然后通过BIOS加载到计算机系统中。 SMI是一种处理器工作模式,在此模式下,处理器的执行被暂时中断,转而执行SMI中断服务例程。SMI模式通常是由系统上的特殊硬件或软件触发的,用于执行一些敏感的系统管理任务,如电源管理、温度监测、异常处理等。SMI模式受到硬件和操作系统的限制,只能在特定条件下运行。 BIOS是计算机系统的固件,负责在计算机启动时初始化硬件设备,并提供一些基本的输入输出功能。BIOS包含了一系列预定义的程序和数据,用于管理计算机的底层硬件设备,如磁盘驱动器、键盘、显示器等。BIOS也提供了一些系统和硬件配置选项,以供用户设置和修改。 综上所述,ASL是一种用于编写ACPI BIOS的高级编程语言,SMI是一种特殊的处理器工作模式,而BIOS则是负责管理计算机硬件设备和提供基本输入输出功能的固件。它们合作,使得计算机系统能够进行有效的电源管理和资源分配。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值