MS taking some pain out of WinCE?

Microsoft has released WinCE 6.0 – this time as a "shared source" release, with various enhancements.  Some of the big claims-to-fame:  It’s the "first commercial hard real-time OS released as a shared-source product".

I’m not sure exactly what this means.  Perhaps they’re using their source licensing model – "shared sourcing" – as a qualifier?  Since it’s the only RTOS made by Microsoft with sources shared through their license, that makes the "shared" part true.  From that perspective, there are licensing options for source code from most proprietary OS companies, you just can’t post it all to the web for anyone to download.

As far as "open" goes, MS is capitalizing on the fear of the GPL – no-one has challenged it far enough yet to know if using a GPL OS would make it so you have to release your *applications* under a GPL umbrella. But ignoring this bit – there are a number of realtime or at least nearly-deterministic kernels available via GPL and Open Source communities (a quick online search yields over a thousand pages with the exact phrase "Open Source RTOS").

Determinism: putting the "Hard" in Real-time.

There are hundreds of open-source OS’s – some are even
deterministic enough to be "hard realtime".  RealTime is basically "fast enough to keep up" – but hard realtime means "measurably deterministic" – not just fast enough to keep up, but measurably and predictably able to keep up with a given load. WinCE 6 makes the claim that it’s hard realtime  But… is it really a hard-realtime system?  Just claiming you’re "RealTime" isn’t enough – as This Stanford Comparison  shows, some systems claiming to be "Real Time" don’t quite show determinism, especially when running as a "loaded" system.  Part of determinism is being able to give "deterministic" execution – that is, you can be guaranteed that the OS itself won’t take longer than a given window of time to react to the world.  Execution times for critical system activities that vary over an order of magnitude is not a shining example of "determinism" (see page 4!).

I don’t know if you’ve done any research into this part of the topic – but if you do, you’ll notice that many comparisons for determinism messier things like context-switch time and Interrupt Latency (how long it takes the OS to handle an interrupt or change contexts, usually measured under idle and highly-loaded conditions).  I’ve never seen such a document for WinCE – and most of what I’ve seen was either from MS themselves or from companies hired by MS to run their tests.  Though their method is scientific, it requires specific hardware and tools, and their graphs don’t give you the complete story for context switching or interrupt latency.  Since the method isn’t shown against any other RTOS, there’s no comparison possible.

WinCE 6 has extensive use of virtual
memory spaces, including supporting up to 32,000 processes each with a 2GB
addressable virtual address space.  This requires at least changing memory maps, and possibly "swapping" chunks of text and data  between RAM and some fixed storage.  The act of swapping – pushing data to/from physical media – induces indeterminism.

Other than this – there are some interesting developments.

It’s being bundled with Visual Studio with an integrated Platform Builder plug-in.  Microsoft says ""Under one roof, you have the entire development chain from device to application".  Eventually it might have some sort of data visualization tools, perhaps some kind of system event display, maybe even.. hardware-assisted debug… could it be that Microsoft may be joining the DSO trend?