![]() |
|||||||||||||||||||||
|
|||||||||||||||||||||
| August 3rd , 2006 ___________________________________________ CE 6: What’s in it for me? My name is Jason Browne and I am a platform Engineering Manager at BSQUARE Corporation. We are system integrators for Windows® CE, Windows Mobile® and Windows XP Embedded operating systems. I came to BSQUARE from Microsoft® where I was responsible for the Kernel and Performance aspects of Windows CE. I am launching this blog to help developers who are considering adopting Windows CE 6 when it is launched later this year. I hope this blog can be both informative and entertaining. I would love to answer your questions about Windows CE in general or about the specific topics that we are discussing in this blog. If you have questions, please submit them using the submission tool attached to this blog. The more interactive this blog can be, the more interesting it will become. From time to time, I’ll be bringing in guest bloggers from the engineering team at BSQUARE. Several of us are working on Windows CE 6 beta projects and we can share with you our insights into the next version. The big change with Windows CE 6 is the memory model. That’s the topic that I will start with in this first blog. The New Windows CE 6 Memory ModelMicrosoft has taken a bold step in the development of the next version of Windows CE. Most new versions of the operating system are either new features or improvements to existing features. For the next release, currently called CE 6, Microsoft has decided to morph the operating system into a completely new memory structure. With this change they have remapped how the kernel and other system components talk to each other. How will this impact both the developers that are attempting to build their devices using this latest release and the end users that will be taking advantage of its latest architecture and feature set? Let’s examine some of the key points in this change from a flat memory model to a more XP like memory architecture.
In Windows CE 5.0, applications were limited to 32MB of virtual memory. Applications could also take advantage the shared memory area, but this data would be open to all applications and lead to reduced security in the user applications that needed more than 32MB of memory.
In Windows CE 5.0, the system is limited to only 32 processes. The operating system used at least 5 of these “slots” leaving only 27 available to user applications. This forces system developers to use other techniques such as creating a services instead of applications in the instances where they need more than 27 processes.
In Windows CE 5.0, Microsoft defined a shared virtual memory area of about 350MB that could be used to communicate between processes and to help alleviate the problems associated with the 32MB process limit. This area has now been removed from Windows CE 6 since each process now has a 2GB limit. As you can see from the diagram below, the memory map is extremely different between the two operating systems. It’s almost like they have created a completely new operating system, but fortunately it will still be backwards compatible with what Microsoft calls “well behaved Win32 applications”. These applications would only use Win32 APIs to access memory and resources and not use any special tricks such as reading and writing directly to static memory locations and registers that have now been moved in CE 6. The Windows CE 6 Kernel Architecture
In addition to the new memory model, Microsoft has changed how nk.exe, filesys.exe, gwes.exe, device.exe, and coredll.dll are structured. As can be seen from the diagram below, all of these modules that were previously separate applications have now been converted to dlls. This means that a number of the inter-process calls that were previously necessary are now avoided. This should speed up a number of core operating system operations such as file system access, graphics accesses and other driver accesses.
. . . . . . . . . . . . . . . . . . . . . . .
|
|||||||||||||||||||||