David Mery, Technology Outreach, Symbian
Revision 2.6, October 2003
This white paper describes the key characteristics required of an operating system designed for mobile phones and explains why Symbian OS is the best-in-class mobile operating system.
Small devices come in many shapes and sizes, each addressing distinct target markets and having different requirements. The market segment we are interested in is that of the mobile phone. The primary requirement of this market segment is that all products are great phones. This segment spans voice-centric phones with information capability (such as Series 60 phones) to information-centric devices with voice capability (such as UIQ and Series 80 phones). These advanced mobile phones integrate fully-featured personal digital assistant (PDA) capabilities with those of a traditional mobile phone in one unit. In this article we'll be looking at the critical factors for operating systems in this market.
It is important to look at the mobile phone market on its own. It has some specific needs that make it unlike other markets such as PCs or fixed domestic appliances. Scaling down a PC operating system or bolting communication capabilities on to a small and basic operating system results in too many fundamental compromises. Symbian believes that the mobile phone market has five key characteristics that make it unique, and require a specifically designed operating system:
To address each of these characteristics is the only way to create good products where technology doesn't limit functionality - and creating good products is the way to grow the mobile phone market. Meeting the impressive growth forecast by analysts in a reasonable time frame is only possible with the right operating system.
Mobile phones are both small and, by definition, mobile. This creates high user expectations. For instance, if you have your agenda on a phone which you also use to make calls and exchange data, you expect to be able to carry it with you at all times and you also expect it to be instantly available whenever you want to use it.
Fulfilling these expectations also makes serious demands on power management. The device needs to be responsive in all situations, and cannot afford to go through a long boot sequence when it is turned on. In fact, it should never be powered down at all, since it must always be able to raise alarms or handle incoming calls. At the same time, a mobile phone must provide many hours of operation on a single charge or set of batteries. Meeting these contradictory requirements can only be done if the whole operating system is designed for efficiency.
At a very basic level the operating system shouldn't be too resource hungry - it should support low-power processors with limited amounts of memory. At a deeper technical level, expensive operations should be minimized. For instance, it is better to implement most of the multi-tasking through event-driven messaging rather than with multi-threading. Multi-threading is expensive as it requires context switching. It can also be hard to use properly as threads need to be correctly synchronized. To create another object in a primarily event-driven operating system doesn't need any context switching and has only a small overhead so should be the preferred solution when possible.
Code reuse should be maximized. This is a goal often stated but rarely achieved. Symbian achieves this by object-oriented design, developing the system at the same time as the primary applications, and by using C++ for all system code, from the kernel upwards. Developing applications at the same time as the operating system ensures that the system is fit for purpose ('a system is not usable until it has been used' ).
The allocation and use of resources must be tightly controlled. This can best be done on a system-wide basis using servers to control system resources. Non-privileged code accesses system resources by becoming a client of these servers (a standard set of servers could include a file server, a window server, a font and bitmap server, a database server, a serial communications server and a socket server).
Reliability is a major issue for mass-market phones. Data loss in a personal mobile phone causes a loss of trust between the user and the phone: a mobile phone must be at least as resilient as paper diaries and agendas. Recalling phones to install service packs is not feasible - your mobile phone should never lock up or come with a major software defect. In fact, you should never ever need to “reboot”, to use a PC term! This is a far cry from desktop computers where bugs, crashes and reboots are expected.
It may come as a surprise to many computer users that a robust and reliable operating system is perfectly achievable. Even though nobody can guarantee bug-free software, a good operating system can make it much easier to write robust and reliable applications. Reliability requires good software engineering (including object orientation) and a good error-handling framework. Good engineering practice greatly helps reduce the number and severity of bugs while the error-handling framework enables graceful recovery from run-time errors such as running out of memory, the battery getting low or dropping a communication link.
Reducing the possibility of user code making the whole system unstable goes a long way towards achieving robustness. Ideally, the kernel of the operating system, with its privileged code, should be small: system servers running without special privilege should handle much of the functionality conventionally handled by device drivers.
An effective memory management system is needed to prevent memory leaks. System resources should be released as soon as they are no longer needed and an effective and easy-to-use error-handling framework should handle out-of-memory errors properly. For systems that are never completely shut down and cannot be rebooted, keeping an accurate track of resources makes the difference between peak performance at all times and slow degradation to partial or total lack of usability. Applications and system modules that allocate blocks of memory should cater for the possibility that none might be available. Defensive programming has to be applied from the operating system up to the application level.
However, reliability alone is not enough to make good products. Sound consumer design is also necessary:
These principles may seem obvious but they are radically different to the trend apparent in current desktop and PDA applications. An operating system targeted at mobile phones must support these goals by offering a high-level of integration with communication and personal information management (PIM) functionality. Symbian OS combines high functionality middleware with superior wireless communications through integrated messaging, and integration of Java and PIM functionality (agenda and contacts).
Accessing remote data, sending email or synchronizing requires some type of connection. Mobility constraints generally make a wireless connection preferable - whether wide area (using wireless telephony) or personal area (such as infrared or Bluetooth).
Wireless connectivity is patchy, with different protocols around the world, fade-outs while moving and incomplete coverage - especially in remote areas, in some buildings or while airborne. It would be most unwise to rely on a permanent connection while mobile and very frustrating for the user were such a connection to be assumed. Wide area wireless networks are - and always will be - much slower than wired networks. An operating system must take this into account by delivering rich applications that are designed to manipulate the user's data while it is on the phone, even when no connection is established. In short, the mobile phone must function as an advanced client, not a thin client, and the operating system must support this. There must be a smooth transition between being a window on the network and a self-sufficient device.
Connectivity requires an operating system with genuine multi-tasking, communications-capable real-time performance and a rich suite of communications protocols. In addition to the real-time requirements to maintain connections, the operating system must provide mechanisms to handle gracefully any disappearance of the connections and inform the user appropriately. To provide a smooth transition to the user and to be able to support forthcoming standards (such as third generation WCDMA and its evolution), the network stacks must be abstracted in such a way that the application-level interface remains consistent whatever protocol stack is plugged in. The operating system has to provide a rich set of APIs to ensure that applications can benefit fully from current connectivity possibilities and be easily adapted to take advantage of new protocols as they come.
There's an apparent contradiction between software developers who ideally want just one popular platform to develop for and manufacturers who each want to have a range of distinctive and innovative products. The circle can be squared by separating the user interface from the core operating system.
Advanced mobile phones or “smartphones” come in all sorts of shapes: from traditional designs resembling today's mobile phones with main input via the phone keypad - to a tablet form factor, which can be operated with a stylus - to keyboard-based phones with larger screens and small keyboards.
The different input mechanisms and form factors strongly influence the intended primary use of devices. With a very small screen and just a keypad, the main use tends to be voice calls. With pen input, browsing is quite convenient, but data entry is not. A keyboard is obviously the most practical mechanism to enter a large amount of data. These distinctions imply that user interfaces are ultimately both device and market dependent.
Product differentiation isn't just a matter of operating system design. The operating system vendor must allow its licensees freedom to innovate and develop new product lines. Whether or not a vendor allows this is a key feature of their commercial model.
To support distinct phone families and yet maximize code reuse, Symbian focuses on the common code: Symbian OS, which includes a multi-tasking multithreaded core, a user interface framework, data services enablers, application engines and integrated PIM functionality and wireless communications. Phone manufacturers are active participants in software development creating a large development organization to extend Symbian OS. This results in thousands of developers among licensees and partners having access to source code and ensuring that Symbian OS remains an 'open standard' - open and advanced.
This enables Symbian OS licensees to produce very different types of mobile phones. This strategy ensures that phone manufacturers can differentiate their products while keeping the learning curve to a minimum.
An operating system for the mass-market must be open for third-party development - by independent software vendors, enterprise IT departments, network operators and Symbian OS licensees. In turn, this implies a manageable learning curve, standard languages such as C++ and Java, along with SDKs, tools, documentation, books, technical support and training.
Symbian OS has a rich set of APIs for independent software developers, partners and licensees to write their applications.
Even though mobile phones are small and mobile, they can offer facilities as rich as those on desktop computers in addition to basics such as voice and data communication. The operating system has to support both conventional and mobile computing paradigms, and developers need knowledge of both.
To reduce the time-to-market, developers should become proficient in as short a time as possible. Supporting standards that they may already know or can easily learn from a multitude of sources is necessary. Standards also make the platform more open and hence attract more developers.
Traditional standards such as Unicode for internationalization, a POSIX API, and Java are a must, but for an operating system to take its place in the connected world, open standards such as TCP/IP, POP3, IMAP4, SMTP, SMS, MMS, Bluetooth, OBEX, WAP, i-mode, Java and SyncML should also be supported.
Symbian has trusted leading partners in the mobile phone market and actively participates in standard organizations (such as the Open Mobile Alliance, and the Java Community Process). Through these, Symbian has advance knowledge of future technologies and can test Symbian OS with many different phone systems ensuring stability and future-proofness of Symbian OS. Furthermore a user interface framework, data service enablers and application engines provide a solid base for application developers to target.
Advanced open, mobile phones are becoming mass-market. For the industry to deliver products that satisfy the many users it is targeting, it has to produce devices with an operating system engineered to take into account the key functional demands of this emerging market.
To fit into the limited amount of memory a mobile phone may have, the operating system must be compact. However, as we have seen, it must still provide a rich set of functionality. What is needed to power a mobile phone is not a mini-operating system but a different operating system - a tailored operating system. Symbian is dedicated to mobile phones and Symbian OS has been designed to meet the requirements of the mobile phone market. Symbian OS is very sophisticated - mini-operating systems can't do what Symbian OS does. They run out of steam.
The five key points - small mobile devices, mass market, intermittent wireless connectivity, diversity of products and an open platform for independent software developers - are the premises on which Symbian OS was designed and developed. This makes it distinct from any desktop, workstation or server operating system. This also makes Symbian OS different from embedded operating systems, or any of its competitors, which weren't designed with all these key points in mind.
Symbian is committed to open standards and is actively working with emerging standards, such as J2ME, Bluetooth, MMS, SyncML, IPv6 and WCDMA. As well as its own developer support organization, books, papers and courses, Symbian delivers a global network of third-party competency and training centers, the Symbian Competence Centers and Symbian Training Centers. These are specifically directed at enabling other organizations and developers to take part in this new economy.
Symbian has announced and implemented a strategy that will see Symbian OS running on many advanced open mobile phones. Products in the market , show the diversity of mobile phones that can be created with Symbian OS. We can look forward to an even wider range of Symbian OS phones.
 Martin Tasker et al. Professional Symbian Programming, Wrox, 2000. Find more information on all Symbian Press books.
 See the up-to-date list of Symbian OS phones
Symbian is a software licensing company that develops and licenses Symbian OS, the global open industry standard operating system for advanced, data-enabled mobile phones. Symbian is headquartered in London, with offices worldwide.
© Copyright 2000-2003 Symbian Software Ltd. All rights reserved. Reproduced with the kind permission of Symbian Software Ltd.
Latest version published at http://www.symbian.com/files/rx/file6383.pdf.
Revision 1.0 published in the June 2000 issue of CutterIT Journal.
Revision 2.4 published in the December/January 2003/04 issue of the IEE Computing & Control Engineering.
Adapted as chapter 2 of How Smartphones Work published in March 2006 (ISBN ISBN 0470028866).