由什么决定在冻结计算机时Caps Lock是否响应?


15

当计算机没有以某种方式响应时,会有不同级别的“冻结”。

例如,假设我正在PC上浏览网页...

  1. 如果当前浏览器选项卡停止响应(单击/键入不执行任何操作),则浏览器可能仍会响应。

  2. 如果整个浏览器都被锁定,则操作系统可能仍在响应。

  3. 如果OS GUI没有响应,通常我仍然可以切换Caps LockLED。

  4. 如果Caps Lock不再响应,则必须假定“最大冻结”。但是有时,如果我等待,一段时间后整个计算机可能仍会恢复正常。


  • 如果Caps Lock不再切换,是否表示计算机“比步骤3更冻结”?

  • Caps Lock用作“冻结”的最终测试是否有意义?

  • ...如果是这样,Caps Lock切换和不切换之间有什么区别?什么决定了是否Caps Lock响应?


10
对Caps Lock,Num Lock和Scroll Lock的响应要求OS仍然能够处理(键盘)中断。LED响应AFAIK是在ISR中生成的,不需要用户空间处理。因此,无法执行此操作确实表明情况很严重。当这种情况持续超过几秒钟并且Ctrl-Alt-Del也无响应时,我将其视为不可恢复,并击中重置或电源开关
锯末

有些程序使用CapsLock键执行时髦的操作,从而使CapsLock键的可靠性降低。在这种情况下,我将使用Numlock,也许作为第二次测试。例如,在Music Tracker软件(例如Milky Tracker,Fast Tracker甚至OpenMPT)中,CapsLock用于插入音符,因此CapsLock键的状态被捕获。因此,一旦按下,LED将不会打开,给人一种错误的冻结感。
LPChip

@LPChip-时髦的东西会要求音乐软件仍然响应吗?
BORT

@Bort取决于。操作系统仍必须放置程序的键,但这取决于程序的编程方式和程序的挂起方式。程序可能没有崩溃,但对按键和鼠标单击没有反应,但仍可以正常运行。在这种情况下,大写锁定不会更改状态,程序也不会响应。但是激活其他程序将正常工作。
LPChip '16

Answers:


2

您基本上是在回答问题时回答自己的问题,但是为了获得答案,我将尽我所能尽力回答。

有不同的方法,某些东西可能会变得无响应。

假设您正在使用Windows,尽管此过程与其他操作系统没有什么不同。

与程序交互时,可以通过在程序具有焦点时单击或键入来进行交互。

单击或键入通过鼠标或键盘进入主板。操作系统将查询正在键入的内容以及如何移动鼠标。它解释信号并相应地与程序进行交互。

除非按下具有全局状态的热键,否则键盘快捷键将发送到活动的应用程序。在这种情况下,操作系统将执行不同的操作。

操作系统还将使该程序与其他程序一起运行,而无需任何交互。例如,当您将文件从位置1复制到位置2时,如果您未键入任何内容或不移动鼠标,则文件复制操作仍将继续。

现代操作系统具有一个称为“ 多任务处理”的功能,该功能基本上意味着它可以非常快地循环浏览所有程序,从而为每个程序提供时间来执行其编程中的循环。这样看来,所有程序都可以流畅地同时运行。在此周期中,操作系统本身还将获得CPU时间。

当程序执行大量计算时,CPU的利用率更高。使用的CPU越多,系统其余部分(包括循环所有其他程序)的可用功率就越少。当CPU达到100%利用率时,计算机将变得非常缓慢,因为它正在等待CPU时间来处理所有打开的程序的所有活动。如果发生这种情况,操作系统通常会阻止计算机冻结,但是在这些情况下,计算机可能会冻结。

在创建程序时,可能存在一个错误,当执行一系列任务时,该错误会导致程序崩溃或变得无响应。

在谈论程序错误时,无响应的程度不同。程序可能会暂停执行,等待某个按钮被按下,但是该按钮出现在屏幕外部。该程序正常工作,只是不接受用户输入,因此在技术上似乎不起作用。

程序可能正在执行存储操作,但是该存储操作引用了另一段内存,该段又引用了另一段内存,并最终引用了第一段内存。结果,形成了永无止境的循环。该程序认为其执行的是简单操作,并期望在几纳秒内得到结果,但会导致缓冲区不足或溢出。Windows 7和更高版本具有多种保护,并且将给出严重错误:“程序停止响应并崩溃。发送错误报告”。在早期版本的Windows中,根据内存循环的严重程度,可能会导致蓝屏死机。

操作系统本身在本质上也是程序,并且具有相同的问题。编程中的错误可能会导致整个操作系统无响应。

最后,操作系统的一部分是用于与硬件通信的程序。这些称为驱动程序。与普通程序一样,驱动程序也可能崩溃并变得无响应,尽管发生这种情况的可能性较小。鼠标仍然可以工作时,键盘驱动程序可能崩溃并导致键盘停止响应。

操作系统通常会检测驱动程序问题,并尝试重新启动驱动程序。取决于对驱动程序进行编程的程度,可以确定用户发现撞车事故的程度。有时可能会导致显示闪烁,仅此而已,有时会显示一个弹出窗口,指示驱动程序已崩溃并重新启动。

即插即用驱动程序通常稳定且不会崩溃。特定硬件的自定义驱动程序可能更容易崩溃,因为未发现某些错误的可能性更高。

有了上面的解释,就该回答问题了。

如图所示,崩溃可能由于不同的原因和严重程度而发生。如果CapsLock键将触发LED灯,则需要两件事。它要求驱动程序正常运行,并且要求操作系统给予时间来处理驱动程序的编程周期(我之前提到的多任务处理部分)

如果两个都成立,请按Capslock键将执行以下操作:

按下键盘上的键,其信号发送到主板。操作系统的驱动程序向操作系统解释发生了什么,并且驱动程序将一条消息发送回键盘,指示LED状态应更改为新状态。操作系统将使用此信息在大写字母中键入文本。但是,某些程序会通过向驱动器发送第二个Capslock信号来关闭LED键。在这种情况下,取决于键盘,CapsLock指示灯可能永远不会点亮。

如果按下大写锁定键后驾驶员没有立即得到骑行,则LED不会改变。但是由于某些原因,系统可能很慢,并且周期被延迟。在这种情况下,按下大写锁定键或数字锁定键不会立即更改LED的状态,而是在一两秒钟后会发生这种情况。

最后,由于某种原因,在操作系统级别上,它可能会等待驱动程序编程周期,因为它正在等待某些东西。在这种情况下,可能仍可以移动鼠标,但其他所有内容似乎都被冻结了。

如果经过5秒钟的时间后正常的键盘LED功能无法正常工作,则电脑将出现严重故障,可以安全地认为系统已严重崩溃且无法恢复。

还有另外两个键,即“滚动锁定”和“数字锁定”。在这三个键中,由于该键的性质,Numlock是其他程序可能不会滥用的唯一键。使用数字锁来测试系统是否响应,比使用大写锁定或滚动锁更为可靠,因为某些程序倾向于使用这些键来触发其他功能,因此,它们通常会使LED状态变为熄灭,从而使系统处于关闭状态。使用Capslock或滚动锁测试时可靠性较低,而使用Numlock进行测试时可靠性较高。


我的最终问题是[由什么决定Caps Lock LED是否响应]。其次是[如果使用大写锁定来测试“无返回点”是合适的]。我不确定您以什么方式暗示我回答了我自己的问题。我的问题仅包含一个推测性假设,没有涉及实际数据或真实理论。我相信您的回答将通过解释较低级别的机制来加强我建议使用的Caps Lock。
BORT

@Bort我编辑了我的问题,希望可以使它更清楚。我确实尝试回答了您的问题,但感到有必要解释一切工作原理,以便为事物为何如此打下基础。否则,这被视为我的观点,而不是事实。
LPChip '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.