Pau*_*ugh 2 linux windows suspend
如何以编程方式使操作系统关闭,离开并停止执行任何操作,以便程序可以完全控制PC系统?
我有兴趣在MS Windows和Linux环境中这样做.考虑的任何语言或API.
我希望操作系统停止抢占我的程序,停止其虚拟内存管理,停止其设备驱动程序并中断服务程序运行,基本上只是消失.然后,当我的程序使用裸机时,我希望操作系统能够在没有重启的情况下再次返回.
这甚至可能吗?
bdo*_*lan 14
使用Linux,您可以使用kexec jump将控制权完全转移到另一个内核(即您的程序).当然,强大的功能带来了巨大的责任 - 完全取决于您服务中断,并避免破坏旧内核的内存.您最终必须编写自己的操作系统内核才能执行此操作.此外,控制转移需要相当长的时间,因为内核必须取消初始化所有硬件,然后在恢复时重新初始化它.由于kexec jump最初是为休眠支持而设计的,因此在原始环境中这不是问题,但根据您正在做的事情,它可能是一个问题.
你可能想考虑在操作系统给你的框架内工作 - 只需为你正在做的事情写一个普通的驱动程序.
最后,还有一个选项是使用linux Real-Time补丁集.这允许您为所有内容分配静态优先级,甚至是中断处理程序; 通过运行优先级高于其他任何进程的进程,您可以暂停/几乎/所有 - 系统仍将为中断服务一个小存根,以及某些无法延迟的中断,如时序中断,但最多部分繁重的工作将被推迟,直到你放弃对CPU的控制.
请注意,RT补丁集不会停止虚拟内存等 - mlockall会阻止有效页面上的页面错误,如果这对您来说足够了.
此外,请记住,无论您做什么,系统BIOS仍然可能导致SMM陷阱,除非通过主板型号特定的方法,否则无法禁用SMM陷阱.