Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Computer science 当我们点击关机选项时,计算机如何在内部关机?也有二进制的东西吗?_Computer Science - Fatal编程技术网

Computer science 当我们点击关机选项时,计算机如何在内部关机?也有二进制的东西吗?

Computer science 当我们点击关机选项时,计算机如何在内部关机?也有二进制的东西吗?,computer-science,Computer Science,例如,打印机如何打印页面? CPU将二进制8位代码传输到打印机,而不是。。。就像这样,当我们启动或关闭计算机时,计算机内部会发生什么情况?最初使用的是,它只有一个机械开关来打开和关闭电源: 早期的微机电源要么完全打开,要么完全关闭,由机械线路电压开关[…]控制。这些电源通常不具备待机或“软关闭”或定时开启电源控制等节能模式 因此没有被软件关闭 在1994年,PSU开始流行,例如引入了一个称为Power ON(此后为PWON)的引脚,该引脚被拉至+5V,并且必须由主板拉下才能激活PSU1 由于PW

例如,打印机如何打印页面? CPU将二进制8位代码传输到打印机,而不是。。。就像这样,当我们启动或关闭计算机时,计算机内部会发生什么情况?

最初使用的是,它只有一个机械开关来打开和关闭电源:

早期的微机电源要么完全打开,要么完全关闭,由机械线路电压开关[…]控制。这些电源通常不具备待机或“软关闭”或定时开启电源控制等节能模式

因此没有被软件关闭

在1994年,PSU开始流行,例如引入了一个称为Power ON(此后为PWON)的引脚,该引脚被拉至+5V,并且必须由主板拉下才能激活PSU1

由于PWON是一个电信号,主板可以实现不同类型的逻辑来打开和关闭电源

首先引入了前面板开关,这是打开/关闭电脑的唯一方法

然后引入了“软关闭”模式,该模式使一些低功耗的导轨保持开启状态,以便不同的设备保持活动状态,并通过向下拉动PWON触发唤醒。
例如:

在该软件推出之前,无法以标准方式关闭电脑

然而,APM最近被一个非常复杂的系统所取代

不难想象,由于PWON信号,关闭PC需要什么,所需的只是告诉连接到它的芯片将其释放回+5V。
目前还没有一种标准的方法可以做到这一点,但ACPI的真正目的是克服制造商之间的差异

特别是,ACPI规定,为了关闭系统电源,使其进入状态S5,软件需要执行固定的步骤序列。
所有信息都可以在和ACPI公开的表中找到

第一步是调用名为
\\u S5.\u PTS
的方法,该方法在我的系统中不起任何作用:

Method (PTS, 1, NotSerialized)
{
    If (Arg0) {}
}
这使主板设计者有机会执行复杂的操作,因为这个方法是由他们编写的

另一个步骤是固定的,它是关闭PC的实际步骤,它包括将值写入寄存器
感兴趣的寄存器(实际上有两个,但我们这里不讨论它)是
PM1a\u CNT
,在我的系统中,它被宣传为

[0ACh 0172  12]           PM1A Control Block : [Generic Address Structure]
[0ACh 0172   1]                     Space ID : 01 [SystemIO]
[0ADh 0173   1]                    Bit Width : 10
[0AEh 0174   1]                   Bit Offset : 00
[0AFh 0175   1]         Encoded Access Width : 02 [Word Access:16]
[0B0h 0176   8]                      Address : 0000000000001804
这告诉我们它位于IO空间2中的
1804h

写入该寄存器的值称为
SLP\u TYPa
,它位于
\u S5
对象中,对于我的系统:

Name (_S5, Package (0x04)  // _S5_: S5 System State
{
    0x07, 
    Zero, 
    Zero, 
    Zero
})
SLP\u TYPa
是第一个数字,
07h

在将该数字写入
PM1a\u CNT
之前,我们需要将其左移10并设置其位13,因此实际写入值为
3c00h

要关闭电源,我只需将
3c00h
写入端口
1804h
3:


1您可以使用回形针将PWON(绿色)短接至GND(黑色),并在未连接到PC时打开PSU。
2我的系统是x86,x86有两个地址空间:IO和内存。

3已启用已授予的ACPI(将0a0h写入0b2h将在我的系统中启用ACPI)

神奇的回答。那个“安全关机”屏幕唤起了扫雷舰和局域网各方(以及扫雷舰各方)的许多记忆。。谢谢你的怀旧之情!您的代码实际上将2007h写入端口1804h,而不是如描述所述的3c00h。2007包含未移位的值7。
mov ax, 3c00h
mov dx, 1804h
out dx, ax