Inside the Symbian Kernel
Symbian is an operating system whose history parallels that of the ARM architecture. Like ARM, Symbian was created by a small British computer company, and that company no longer exists. Like ARM, Symbian now enjoys a dominant position in the mobile market. For the last few years, Nokia has been the principal driver behind Symbian development. In 2009, Nokia began buying up all of the third-party bits of the Symbian platform, with a view to open-sourcing it. The kernel was recently released under the Eclipse Public License, and now anyone can download the source and play with it.
Unlike other popular open source kernels, Symbian is not a UNIX clone, and it's not a monolithic kernel. It's one of the youngest kernel designs still being actively deployed, with the current design dating back to only 1998 (and it was unfinished and not in a usable state until a few years afterward).
From Another EPOC
Few computers that I've used invoke a feeling of nostalgia, but the Psion Series 3 is one of them. I got this machine when I was 11 years old, and it was the first palmtop computer I ever owned. It had an 8086-compatible CPU, running at 3.84 MHz, with 256KB of RAM, and with some space used as a RAM disk for file storage. In spite of these constraints, the machine ran a multitasking graphical operating system called EPOC, which was written in assembly language. It managed to provide memory protection by making use of the segmentation mechanism on the chip, in spite of the lack of MMU. It did this by limiting pointers to 16 bits and not permitting user code to modify the segment registers, and so required some support from the compiler as well. This design didn't protect against malicious code, but accidentally getting around this protection was difficult, so it protected against badly written code.
A few years later, Psion released the Series 5 (there was no Series 4) with a completely new architecture. Unlike the Series 3, the Series 5 had an ARM CPU; therefore, it couldn't run the same operating system as its predecessor. The Series 5 ran EPOC32, a completely new kernel written in C++, which borrowed a lot of ideas from EPOC16. This kernel, along with its supporting services, would later be marketed as Symbian.
For several years, this kernel was used and incrementally improved, but it was replaced in 2004 with a new kernel. Symbian 8 came with two kernels: EPOC Kernel Architecture 1 was the old EPOC32 kernel, and EPOC32 Kernel Architecture 2 was a newer, redesigned kernel that had been in development for six years. EKA2, this newer kernel, is the one that has just been open-sourced.
EKA2 introduced real-time guarantees. At the time it was developed, most mobile phones contained two ARM CPUsone for the OS that ran the interface, and one for the OS that ran the radio communications stack. These CPUs had very different requirements. The radio controller needed real-time guarantees and only ran a small amount of heavily audited code. The application processor needed to run the user interface and less-trusted user applications. For certification purposes and security, it was very important that no user application should be able to modify the radio stack. One of the design goals of EKA2 was to support both of these sets of requirements on the same OS.