Virtual Memory and Run Addresses

Symbian OS devices have an MMU which is used to map the addresses seen by running code to real addresses of memory and I/O. The MMU in effect creates a virtual memory map, allowing scattered blocks of RAM to appear contiguous, or for a section of memory to appear at different addresses in different processes, or not at all.

Symbian OS uses the MMU to provide memory protection between processes, to allow sharing of memory, efficient allocation of RAM and to make all processes “see” the same memory layout. Three different memory models are supported by Symbian OS on ARM CPUs:

Fixed processes

For ARM architectures with a virtually-tagged cache, fixed processes avoid the need to flush the cache on context switches by keeping all the code and data at a fixed address. This implies that there can only ever be one instance of each fixed process because the data chunk address cannot be changed.

Important servers such as the file server and window server are fixed.

There is no limit to the number of fixed processes that can be supported. The kernel will attempt to use ARM domains for fixed process protection, but there are a limited number of domains so when they are exhausted normal MMU techniques will be used. Domains are slightly faster in a context switch but this is negligible compared to the real purpose of the fixed process in avoiding the cache flush.