Symbian OS

This article needs to be cleaned up to conform to a higher standard of quality.
This article has been tagged since July 2005.
See Wikipedia:How to edit a page and Category:Wikipedia help for help, or this article's talk page.
It has been suggested that EPOC (computing) be merged into this article or section. (Discuss)


Symbian OS is an operating system with associated libraries, user interface frameworks and reference implementations of common tools, produced by Symbian Ltd.. It is a descendant of Psion's EPOC.

Symbian is currently owned by Ericsson, Panasonic, Nokia, Samsung, Siemens AG and Sony Ericsson.

Contents

Design

There are multiple user interface flavours that use the Symbian OS, such as UIQ and Nokia's (Series 60, Series 80, etc). The adaptability of the user interface enables the use of Symbian OS on various form-factors of hand-held devices: clam-shell or tablet, keyboard and/or pen, PDA or mobile phones, and others.

Symbian OS, with its roots in Psion Software's EPOC (which itself had similarities to the internals of VMS, a grown-up POSIX compatible operating system for mini-computers in the 1980s) is structured like many desktop operating systems, with pre-emptive multitasking, multithreading, and memory protection.

Symbian OS's major advantage is the fact that it was built for handheld devices, with limited resources, that may be running for months or years. There is a strong emphasis on conserving memory, using Symbian-specific programming idioms such as descriptors and a cleanup stack. Together with other techniques, these keep memory usage low and memory leaks rare. There are similar techniques for conserving disk space (though the disks on Symbian devices are usually flash memory). Furthermore, all Symbian OS programming is event-based, and the CPU is switched off when applications are not directly dealing with an event. This is achieved through a programming idiom called active objects. Without using these techniques properly, an application can wear down the battery of a phone in just a couple of hours; with them, the battery lasts for a week.

All of this makes Symbian OS's flavour of C++ very specialised, with a steep learning curve. However, many Symbian OS devices can also be programmed in OPL, Python, Visual Basic, Simkin, and Perl - together with the J2ME and Personal Java flavours of Java.

Competition

Symbian OS competes with other mobile operating systems, such as Windows Mobile, Palm OS, and Linux. It also competes with the embedded operating systems used on lower-end phones, such as NOS and OSE, which tend to be maintained by the phone companies themselves. Symbian OS' major advantage over these embedded operating systems is its modularity - there is runtime linking between DLLs on the device, and an emphasis on plug-in architectures. This makes complex phones quicker to develop, though this is sometimes offset by the complexity of Symbian OS C++ and the awkwardness of going to another company for an OS (instead of doing it in-house).

The advantages over other 'open' OS competitors (such as Linux and Windows Mobile, the last one is not Open Source) are more debatable. Phone vendors and network operators like the customisability of Symbian OS relative to Windows. This customisability, though, makes integrating a Symbian OS phone more difficult. It's possible that Linux goes too far in the other direction, and is simply too hard to make a phone from at the moment. Symbian OS's ground-up design for mobile devices should make it more power- and memory-efficient, as well as being flexible.

Structure

At its lowest level sit the 'base' components of Symbian OS. This includes the kernel (EKA1 or EKA2 - see the 'History' section), along with the user library which allows user-side applications to request things of the kernel. Symbian OS has a microkernel architecture, which means that the minimum necessary is within the kernel. It does contain a scheduler and memory management, but no networking or filesystem support. These things are provided by user-side servers. The base layer includes the file server, which provides a fairly DOS-like view of the filesystems on the device (each drive has a drive letter, and backslashes are used as the directory delimeter).

Immediately above base are a selection of 'system libraries'. These take all shapes and sizes, including for example character set conversion, a DBMS database, and resource file handling.

Further up, the software is not so readily arranged into a stack.

There is a large 'networking and communication' subsystem, which has three main servers - ETEL (EPOC telephony), ESOCK (EPOC sockets) and C32 (responsible for serial communication). Each of these has a plug-in scheme. For example ESOCK allows different ".PRT" protocol modules, implementing different types of networking protocol scheme. There's lots of stuff relating to short-range communication links too, such as Bluetooth, IrDA and USB.

There's also a large amount of 'user interface' code. Even though the user interfaces themselves are maintained by other parties, the base classes and substructure ("UIKON") for all UIs are present in Symbian OS.

There are also a selection of 'application engines' for popular smartphone applications such as calendars, address books, and task lists. A typical Symbian OS application is split up into an engine DLL and a graphical application - the application being a thin wrapper over the engine DLL. Symbian OS provides some of these engine DLLs.

There are, of course, many other things that don't fit into this model - for example, SyncML, J2ME providing another set of APIs on top of most of the OS and multimedia. Quite a few of these things are frameworks, and vendors are expected to supply plug-ins to these frameworks from third parties (for example, Helix player for multimedia codecs). This has the advantage that the APIs to such areas of functionality are the same on many phone models, and that vendors get a lot of flexibility, but means that phone vendors need to do a great deal of integration work to make a Symbian OS phone.

History

In 1980, Psion Software was founded by David Potter.

EPOC16. Psion released several Series 3 devices from 1991 to 1998 which used the EPOC16 OS, also known as SIBO.

EPOC OS Releases 1–3. The Series 5 device, released in 1997, used the first iterations of the EPOC32 OS.

EPOC Release 4. Oregon Osaris and Geofox 1 were released using ER4.

In 1998, Symbian Ltd. is formed as a partnership between Ericsson, Nokia, Motorola and Psion, to explore the convergence between PDAs and mobile phones.

EPOC Release 5. Series 5mx, Series 7, Revo, netBook, netPad, Ericsson MC218, and the Ericsson R380 were released in 1999 using ER5.

ER5U. U = Unicode. The first phone, the Ericsson R380 was released using ER5U in 2000. It was not an 'open' phone - software could not be installed.

Symbian OS v6.0 and v6.1. Sometimes called ER6. The first 'open' Symbian OS phone, the Nokia 9210, was released on 6.0.

Symbian OS v7.0 and v7.0s. First shipped in 2003.

In 2004, Psion sold its stake in Symbian.

Also in 2004, the first worm for mobile phones using Symbian OS, Cabir, was developed, which used Bluetooth to spread itself to nearby phones. See Cabir and Symbian OS threats.

Symbian OS v8.0. First shipped in 2004, one of its advantages would have been a choice of two different kernels (EKA1 or EKA2). However, the EKA2 kernel version did not ship until SymbianOS v8.1b. The kernels behave more or less identically from user-side, but are internally very different. EKA1 was chosen by some manufacturers to maintain compatibility with old device drivers, whilst EKA2 offered advantages such as a hard real-time capability.

Symbian OS v8.1. Basically a cleaned-up version of 8.0, this was available in 8.1a and 8.1b versions, with EKA1 and EKA2 kernels respectively. The 8.1b version, with EKA2's single-chip phone support but no additional security layer, was popular among Japanese phone companies desiring the realtime support but not allowing open application installation.

Symbian OS v9.0. This version was used for internal Symbian purposes only. It was deproductized in 2004.

Symbian OS v9.1. Early in 2005, the newest version of Symbian was announced. Improvements in the OS mean that applications and content, and therefore a developers investment, are better protected than ever. The new ARM EABI binary model means developers need to retool and the security changes mean they may have to recode. The Nokia N91 will probably be the first SymbianOS 9.1 device on the market.

Symbian OS has generally maintained reasonable binary compatibility. In theory the OS was BC from ER1-ER5, then from 6.0 to 8.1b. Substantial changes were needed for 9.0, related to tools and security, but this should be a one-off event. The move from requiring ARMv4 to requiring ARMv5 did not break backwards compatibility.

Devices that have used the Symbian OS

Developing on Symbian OS

Developing on Symbian OS can initially appear confusing, as there is no single SDK available for download from Symbian. Instead, there are SDKs available for each of the main user interface families: UIQ, Series 60, and so-on. Individual phone products, or families, often have SDKs downloadable from the manufacturer's website too. The SDKs contain documentation, the header files and library files required to build Symbian OS software, and a Windows-based emulator ("WINS"). Up until version 8, the SDKs also included a version of the GCC compiler (a cross-compiler) required to build software to work on the device. Symbian OS 9 uses a new ABI and so requires a new compiler - a choice of compilers are available including a new version of GCC (see external links below). Symbian c++ programming is commonly done with a commercial IDE. Previously, Visual Studio was common, but for current versions of Symbian OS, a Symbian-specific version of CodeWarrior is favoured. The CodeWarrior tools will be replaced during 2006 by Carbide.c++, an Eclipse-based IDE developed by Nokia.

Other tools include SuperWaba, which can be used to build Symbian 7 and 7s programs using the Java language.

External links

fr:Symbian OS nl:Symbian ja:Symbian OS pl:Symbian (system operacyjny) fi:Symbian OS sv:Symbian