细说XP中的关机,待机和休眠
单击"开始-关闭计算机"的时候,系统内部到底发生了一些什么事情呢???
系统内部的操作流程
第一步 调用
第二步 ExitWindowsEx()函数向系统进程CSRSS.EXE发送消息
第三步 CSRSS.EXE以调用者身份给隐藏的WinLogon窗口发消息
第四步 检测发送请求者是否有足够的权限并进入等待关机状态
第五步 再次调用Exit WindowsEx()函数,并改变系统内部标志
第六步 CSRSS.EXE开始给所有顶层的应用程序发送WM_QUERYENDSESSION和WM_ENDSESSION消息,通知他们将要关闭计算机,如果某个程 序超时(5000毫秒)没回应,则弹出"立即结束"对话框要求手动结束它.
第七步 应用程序全部关闭后WinLogon继续调用函数开始关闭一些系统进程和服务
第八步 接下来根据ExitWindowsEx()请求时的参数,判断是注销,重启还是关机,再做出相应的后期处理.如果选择关机,WinLogon将给SMSS发出 "InitiateSystemShutdown"请求,SMSS再将这个请求发给每个环境子系统,释放所有的资源(内存,进程等),退出系统.
第九步 最后SMSS调用NtShutdownSystem()来完成扫尾工作,真正执行关机操作.
待机与休眠
在"关闭计算机"的对话框里.还有"待机","重启"按钮.单击不同的按钮,将会传递不同的参数(类似1,2,3等不同的数字),并在上述流程中的第八步系统将根据这些参数来判断下一步的操作,是关机,重启还是待机.
在"关闭计算机"对话框状态,如果按下Shift键,会发现"待机"变成了"休眠"...这是支持ACPI电源管理的电脑中的两种挂机省电状态.
ACPI一般有六种状态,分别是S0到S5:
S0 也就是我们平常工作的状态,所有设备都打开了
S1 也称作POS(Power on Suspend),这时除了通过CPU时钟控制器将CPU关闭之外,其他部件仍正常工作
S2 CPU处于停止运行状态,总线时钟也被关闭,但其他设备仍然运转
S3 也称作STR(Suspend to RAM),挂起到内存
S4 也称作STD(Suspend to Disk),这时系统主电源关闭,但硬盘仍然带电并可被唤醒
S5 连电源在内的所有设备全部关闭,功耗为0,也就是关机.
待机即是进入S3状态,把当前运行状态的数据保存在内存内,只给内存供电,硬盘,屏幕和CPU等部件则停止供电.休眠即是S4状态,靶当前运行状态的数据保存到硬盘中,然后整机完全停止供电.
当移动鼠标或敲击键盘时,可以将电脑从挂起状态唤醒,"待机"的数据时保存在内存中的,所以机器恢复较快,而"休眠"是从硬盘恢复,所以恢复速度慢一些
[ 本帖最后由 YoYo 于 2007-9-2 15:23 编辑 ] |