系统锁定或无限循环是否会导致重启?

System lock or infinite loop is able to cause reboot?

我的问题是关于嵌入式的知识Linux。

我刚刚观察到我的嵌入式项目发生了奇怪的重启,这很容易重现。

当触发某些条件时,系统会点赞"freezing"。我的意思是,它就像遇到一些无限循环或被锁定。持续几秒钟后,系统将安静地 重启。甚至没有核心转储!!

我对原因一无所知。一般会不会是锁或者死循环真的能触发Linux重启?或者有没有什么东西可以冻结系统并导致重启而没有发生核心转储?

您的问题有点难以理解,但是是的,任何平台(包括 Linux)上的任何应用程序中的 "infinite loop"(正确的术语是)都可能导致系统崩溃。发生这种情况显然是因为无限循环会不断占用内存和资源,直到剩下 none 为止。您提到您正在进行嵌入式开发(这可能意味着很多不同的事情),但通常意味着您正在开发内置于 Linux 本身的低级应用程序;与一般的编程冒险相比,这些更容易导致 OS 崩溃。

在嵌入式系统上有一个 hardware watchdog 是很常见的;一个在硬件中实现的计时器,如果允许它过期,它会重置处理器。

通常一些 software monitoring task 会不断验证系统的完整性并重新启动硬件看门狗定时器。如果监控任务失败运行,看门狗定时器超时,看门狗直接触发处理器复位。