Matlab 如何在windows上强制一个应用程序在一个内核中运行,而没有其他应用程序在该内核中运行?

Matlab 如何在windows上强制一个应用程序在一个内核中运行,而没有其他应用程序在该内核中运行?,matlab,interrupt,core,simulink,xpc-target,Matlab,Interrupt,Core,Simulink,Xpc Target,我认为我的问题是不寻常的,但我想在MatlabSimulink中进行实时目标定位,但我不想使用XPC目标。我只想在程序(simulink)运行时不中断,以便有一个实时无中断控制系统。按照这个顺序,我可以在没有目标系统的情况下使用我的控制模块。 首先,请不要理我的英语不好。我有一些问题: 1.我们是否可以强制核心仅由simulink使用,而不使用其他功能? 2.一个中断通常需要多少时间(最多需要多少时间)? 3.在simulink中还有其他方法可以使用吗 谢谢你。如果您有多核平台:远离核心0。Wi

我认为我的问题是不寻常的,但我想在MatlabSimulink中进行实时目标定位,但我不想使用XPC目标。我只想在程序(simulink)运行时不中断,以便有一个实时无中断控制系统。按照这个顺序,我可以在没有目标系统的情况下使用我的控制模块。 首先,请不要理我的英语不好。我有一些问题: 1.我们是否可以强制核心仅由simulink使用,而不使用其他功能? 2.一个中断通常需要多少时间(最多需要多少时间)? 3.在simulink中还有其他方法可以使用吗


谢谢你。如果您有多核平台:远离
核心0
。Windows专门将某些任务分配给
核心0
。有关如何在特定内核上运行线程的信息,请参阅

b。可能会提高线程/进程优先级。有关设置优先级的详细信息以及有关优先级范围的详细信息,请参见和


优先级类REALTIME\u Priority\u class with thread Priority thread\u Priority\u TIME\u CRITICAL将在线程准备运行时以最高优先级运行线程。请注意,这样的优先级设置将禁止任何其他进程/线程在线程运行时获得该内核上的CPU。

好的,Simulink本质上是一个单线程应用程序。在快速加速器模式下运行时,有一些方法可以使用第二个内核(请参阅),但总的来说,所有操作都在一个内核上运行。我猜它在未来可能会改变,因为很多人希望将单个大型模型的执行拆分为多个内核,但就我所知,目前这是不可能的


但是,Simulink不是实时应用程序,因为它运行在Windows或其他非实时O/S上。为什么不想使用xPC目标?当您正在处理实时目标时,这将是最佳选择。如果您可以访问实时目标硬件,其他选项将是使用实时Windows目标、SIL甚至PIL。看看这个例子。我认为您可以将代码生成过程配置为仅在一个内核上执行,但最好让MathWorks确定。

使用imageCFG可以预设程序的关联性。它修改exe文件以在所需的内核上运行。
你在做什么平台?不确定它是否适合这个站点,或者它是否更适合超级用户。这可能是个愚蠢的问题,但是如果其他进程处于某个中间,会发生什么?它能简单地暂停吗?或者你必须等到子任务完成吗?@DennisJaheruddin:不傻,高优先级的线程将被安排在CPU准备运行时获取CPU。此时,该内核上的其他线程/进程在优先级较低时停止。但是,当调度程序再次选择它们时,它们可能会在另一个线程上继续。在特定的核心上修复高优先级线程/进程(亲和性)基本上会将该核心“锁定”为高优先级进程/线程。谢谢您的回答,但我感到困惑。请解释在MATLAB上更改此设置的方法。你是不是打算用C++代码来实现这个目标?如果是,我们如何将其与MATLAB simulink集成。thx@adeldarbandi:您可以使用任务管理器更改进程优先级和/或关联性。你也可以使用matlab工具,比如.thx作为你的答案,我想忽略xpc,因为它需要另一个硬件,而且我缺乏资金。我认为实时windows target也需要另一个硬件?你能告诉我更多关于SIL和PIL的信息吗?不,实时Windows目标不需要任何额外的硬件,它在Windows内核模式下使用实时引擎。查看更多详细信息。您需要Simulink Coder的许可证才能从Simulink模型生成C代码,还需要实时Windows目标的许可证。SIL基本上将生成的C代码封装到一个DLL中,该DLL用于打算在目标上运行的模型部分,而模型的其余部分在普通Simulink中运行。PIL与之类似,只是在实际目标硬件上运行生成的代码,该硬件通过串行通信与PC上的Simulink模型的其余部分进行通信。