The number of questions and answers depends on whether you are logged in.
Windows itself is not a real-time system. In order to achieve real-time features, it is necessary to execute time-critical code in a real-time context (at kernel level). Due to the fact that in a .NET environment C# can not be executed in real-time, the behavior in time still depends on the Windows scheduler. But it is possible to assign the time-critical C# threads the absolute highest thread priority.
Previously this was not possible for programmers. For this reason, Kithara provides the respective mechanisms. At least, the mechanisms can ensure that the application takes priority over all other Windows applications. For true real-time behavior the essential code should be programmed in C++ or Delphi and moved into a DLL file, so that it can be loaded directly into the real-time context.
For communication between application and real-time context shared memory, data or messages pipes, events, or sockets are available. A number of example projects are included to show how "hard" real-time can be embedded in C# applications.
As long as no other real-time software or similar system-critical software is installed, (almost) nothing exists, which interrupts or delays the real-time task except:
CLI = general interrupt blocked through Windows and drivers.
Unfortunately, no software can do something against it. However, in Windows the blocking time is limited and almost certainly a driver is responsible for this. In this case the respective driver has to be replaced. Because it is difficult to determine it we offer payed help on such cases by our support team.
WBINVD = command to flush the entire internal cache.
According to experience, only Nvidia graphic drivers cause such and should be replaced with an ATI (AMD) graphics card.
C1E = Enhanced Power Save Mode of the CPU.
Especially, the overdeveloped Intel CPUSs (i7, Xeon, …) switch to idle mode after short breaks, delaying the wake up after a timer interrupt up to several milliseconds.
This can be switched off in the BIOS (see CIE or similar) or the PC is not real-time capable.
Ordinary Windows activities cannot replace real-time tasks.
Windows has the priority 0, whereas the RealTime tasks have priorities from 1 to 255. DPC has no influence.
- To achieve the best real-time behavior use the dedicated mode, which supports the exclusive use of single CPU cores in real-time. Without Windows influence the maximum jitter will be less than 1 us.