Is Windows CE Real-Time ?


Is Windows CE a real-time operating system? – There are many definitions of real time. In the context of the Windows Embedded family of operating systems, we use the definition that was adopted by the Open, Modular, Architecture Control (OMAC) user group: A hard real-time system is a system that would fail if its timing requirements were not met; a soft real-time system can tolerate significant variations in the delivery of operating system services like interrupts, timers, and scheduling.


The above is an extract from the following MSDN/Embedded web page – Further proof of Windows CE real-time support can be found in the following Windows CE 5.0 operating system evaluations from Dedicated Systems, Windows CE 5.0 x86, Windows CE 5.0 ARM


So, the question… Is Windows CE 5.0 a Hard Real Time operating system, and how does your definition of real-time differ from the one given above ?


– Mike

Comments (3)

  1. Larry Mittag says:

    Mike:

    I once sat on a panel at the Embedded Systems Conference with a Microsoft rep that tried to say that the (then-current) version of CE was real-time. Then you guys had a very creative interpretation which you referred to as "bounded realtime", which was weak at best. My experience is that the current version is much more deterministic in operations like queue operations, context switches, etc. No RTOS is going to perform all operations deterministically, but CE does a pretty good job where it can.

    Larry Mittag

  2. Jeff Brown says:

    There is only one true simple defintion of real-time from my simple minded perspective. Real fast and Real accurate from software execution to hardware implementation. So run your software and trigger a hardware output and hook a scope up and see your jitter. In our tests, we connect a digital output to the parrallel port on a PC since this is a very fast output. We trigger a million rising edge events from our real-time kernel extension and measure the maximum plus/minus jitter in each output. The real-time kernel is set to run at a specific task time and the jitter is measured as a percentage of this task time. For a good software to hardware implementation we don’t think your max jitter should exceed 5% of your task time. So now with a Pentium 4 or now Pentium M we can run a task time in the sub 200 us which means our jitter should be no greater than 10us. If we ever exceed that jitter than we are no longer real-time and the system provides latency warnings. So from my view faster is better and we are always pushing the real-time envelope. However, if we take a snapshot in history then real-time is defined by companies like Beckhoff who are pushing the envelope and implementing our threading and priority on a 32 bit CE 5.0 platform which also allows our customers to write their "real-time" applications in conjunction with our real-time applications for automation and control. Even if their real-time means a VB application running at 100ms updates with 1ms jitter. However, I am sure they could think of ways to handle a 5ms update on a CE platform with 500us updates. Exciting times and you can’t help but compare this topic to what Chuck Yeager was doing with the speed of aircraft only it is a lot safer for us techno geeks.