Does Windows XP allow threads and applications to be bound to specific individual processors?

  • Thread starter Thread starter zangnew
  • Start date Start date
Z

zangnew

I would appreciate any help/pointing in the right direction for
answers.

I am trying to evaluate the use of Windows XP as a soft real-time
solution for an application.

With Windows XP, can I guarantee that real-time threads are never
preempted by lower-priority threads? Does Windows XP allow threads and
applications to be bound to specific individual processors? In
addition, can processors within a system can be grouped together as a
processor set and dedicated to real-time tasks? Can the processor set
be sheltered from non-deterministic time-share and system processes as
well as unbound interrupts? Does Windows XP implement a full POSIX
1003.1b real-time operating environment and POSIX 1003.1c threaded
applications?

Thank You.
 
You need to setup a test PC with Windows XP,
install your application and monitor the results.

Hyper-Threading Technology
http://www.intel.com/technology/hyperthread/

Intel Dual-core processors
http://www.intel.com/business/bss/products/server/dual-core.htm

--
Carey Frisch
Microsoft MVP
Windows - Shell/User
Microsoft Community Newsgroups
news://msnews.microsoft.com/

-------------------------------------------------------------------------------------------

:

| I would appreciate any help/pointing in the right direction for
| answers.
|
| I am trying to evaluate the use of Windows XP as a soft real-time
| solution for an application.
|
| With Windows XP, can I guarantee that real-time threads are never
| preempted by lower-priority threads? Does Windows XP allow threads and
| applications to be bound to specific individual processors? In
| addition, can processors within a system can be grouped together as a
| processor set and dedicated to real-time tasks? Can the processor set
| be sheltered from non-deterministic time-share and system processes as
| well as unbound interrupts? Does Windows XP implement a full POSIX
| 1003.1b real-time operating environment and POSIX 1003.1c threaded
| applications?
|
| Thank You.
 
Windows XP does provide the ability to "tie" processes to a specific
processor; check out the "SetProcessAffinityMask" API (and related
APIs). I believe you can use this mask to effectively create a
dedicated "processor group" for a process & child processes.

You can use the REALTIME_PRIORITY_CLASS for your process and
THREAD_PRIORITY_TIME_CRITICAL for your thread to get the highest
possible priority. However, I'm not sure if this *guarantees* the the
thread will never be preempted.

Windows is not, by design, a "real-time" OS, and I don't believe it
complies with the POSIX definition of one. The WDM driver model
itself, which relies on the OS mechanism for process synchronization,
makes this troublesome; i.e., hardware interrupts get vectored into
event objects, which rely on the OS to release the driver thread. In a
hard real-time system, the interrupt code would get called directly
from the HW int vector, which can never happen in Windows. (Of course,
it has the pleasant effect of allowing me to type e-mail while I'm
waiting for a download to finish...)

There is (at least one) 3rd party library which claims to provide
"real-time" support for Windows XP: Ardence (formerly VenturCom) makes
a product called RTX:
http://www.ardence.com/embedded/products.aspx?ID=70
(I have never used this product, and I'm not affiliated with them in
any way; I just know of it's existence.)

-- Don
 
Thank you for your help. I was interested in using Windows XP as a
soft real-time OS. I guess that the biggest problem would be the
latencies due to the OS grabbing processor time. Also, we are
interested in having the application produce repeatable results in soft
real-time, but would this be possible given Windows XP
non-deterministic nature?
 
Thank you for your help. I was interested in using Windows XP as a
soft real-time OS. I guess that the biggest problem would be the
latencies due to the OS grabbing processor time. Also, we are
interested in having the application produce repeatable results in soft
real-time, but would this be possible given Windows XP
non-deterministic nature?

Absolutely no multitasking system is deterministic. This is the same
for MSWindows and UNIX-derived systems.
 
Back
Top