In the real world, events often happen simultaneously and with timing that is unpredictable ”usually termed asynchronous behavior. Series 60 applications are designed to behave reliably, to interact smoothly with other applications and with the numerous asynchronous services provided by both Symbian OS and Series 60 Platform. For example, a phone call may interrupt a user composing an email message, a user may switch from Messaging to a Calendar application in the middle of a telephone conversation or an incoming SMS may cause the user to access the Contacts database and forward the SMS onward. By complying with the platform architecture and software design guidelines, application designers can routinely manage such occurrences in the daily lives of smartphone users.
From the outset, Symbian OS was designed for use in small battery- powered devices with extensive communications capabilities. Its key design features include:
Performance ”Designed to maximize battery life through careful device-specific power management.
Multitasking ”Telephony, messaging and communications are fundamental components . All applications are designed to work seamlessly in parallel.
Standards ”The use of technologies based on industry standards is a basic principle of Symbian OS, ensuring that applications are interoperable with solutions from other platform vendors .
Object-oriented software and highly modular architecture.
Memory management optimized for embedded software environment ”very small executable sizes and ROM-based code that executes in place.
Runtime memory requirements are minimized.
Security mechanisms for enabling secure communications and safe data storage.
Application support for an international environment, with built-in Unicode character sets and ease of localization.
Figure I-1 shows a representation of the Symbian OS generic technology (GT) components.
The system kernel, File Server, memory management and device drivers are located in the "Base" Operating System layer. The kernel manages system resources such as memory and is responsible for time-slicing the applications and system tasks . Device drivers provide the control and interface to specific items of hardware ”the keyboard, display, infrared port and so on.
The developer interface to most of the base Operating System functionality is through the EUser Library, via a huge range of static function calls beginning with User:: ”for example, User::After() , which causes the current thread of execution to be suspended until a specified time interval has expired .
The upper layers of the system provide communication and extensive computing services, such as TCP/IP, IMAP4, SMS and database management. Symbian OS components provide data management, communications, graphics, multimedia, security, personal information management (PIM) application engines, messaging engine, Bluetooth, browser engines and support for data synchronization and internationalization.
Symbian C++ APIs enable extremely efficient multitasking and memory management. Memory- intensive operations such as context switching are minimized. Symbian OS applications are primarily event-driven rather than multithreaded. Multithreading is possible and is used with the Operating System, but it is generally avoided in applications, because it potentially creates several kilobytes of overhead per thread. Conversely, a primarily event-driven approach does not need any context switching and can have an overhead as low as a few tens of bytes. Special design attention has also been given to ensure that Symbian OS is robust and reliable.
Client/Server architecture is a key design feature of Symbian OS. User applications and system processes are clients that use the resources of a wide variety of system servers. In Symbian OS, servers can be accessed only by their clients via well-defined interfaces. Virtually all servers run with a high priority, but without system privileges, to ensure a timely response to all of their clients while controlling access to the resources of the system.
Some core application engines, written as servers, enable software developers to create their own user interfaces to the application data and databases. Examples include Contacts, Calendar, Multimedia Services (decoding and rendering of image formats) and Messaging.
Data synchronization is provided through a SyncML engine and external connectivity, such as infrared, Bluetooth and a PC Connectivity suite.