You are on page 1of 4

The Symbian OS System Model contains the following layers, from top to bottom:

UI Framework Layer
Application Services Layer
OS Services Layer
generic OS services
communications services
multimedia and graphics services
connectivity services
Base Services Layer
Kernel Services & Hardware Interface Layer
The Base Services Layer is the lowest level reachable by user-side operations; it
includes the File Server and User Library, the Plug-In Framework which manages all
plug-ins, Store, Central Repository, DBMS, and cryptographic services. It also
includes the Text Window Server and the Text Shell, the two basic services from
which a completely functional port can be created without the need for any higher
layer services.

Symbian OS has a microkernel architecture, which means that the minimum necessary
is within the kernel to improve robustness, availability, and responsiveness. It
contains a scheduler, memory management, and device drivers, but other services
like networking, telephony, or filesystem support are placed in the OS Services
Layer or Base Services Layer. The inclusion of device drivers means the kernel is
not a true microkernel. The EKA2 real-time kernel has been termed a nanokernel,
containing only the most basic primitives and supporting an extended kernel to
implement any other abstractions.

Symbian OS is designed to emphasize compatibility with other devices, especially


removable media file systems. Early development of EPOC led to adopting FAT as the
internal file system and this remains in the Symbian OS but an object-oriented
persistence model has been placed over the underlying FAT, providing a POSIX-style
interface and a streaming model. The internal data formats rely on using the same
API that create the data to run all file manipulations - this has created the
problems of data-dependence and associated difficulties with changes and data
migration.

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. The subsystem also contains code that pertains to
short-range communication links, such as Bluetooth, IrDA and USB.

There is also a large volume of user interface (UI) Code. Only the base classes
and substructure are contained in Symbian OS, while most of the actual user
interfaces are maintained by third parties. This component is known as UIKON. The
OS also contains the graphics, text layout, and font rendering libraries.

All Symbian applications are built up from three classes defined by the
application architecture: an application class, a document class, and an
application user interface class. These classes create the fundamental application
behaviour. The remaining required functions, the application view, data model, and
data interface, are created independently and interact solely through their APIs
with the other classes. UIQ and S60 both extend this approach, in two different
ways.

Many other things do not yet fit into this model � for example, SyncML, Java ME
providing another set of APIs on top of most of the OS and multimedia. Many of
these 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 it means that
phone vendors need to do a great deal of integration work to make a Symbian OS
phone.

Symbian OS device manufacturers were supplied with an example user-interface layer


called "TechView". It provided a basis to start customisation and was also the
environment in which much Symbian OS test code and example code runs. It is very
similar to the user interface from a Psion Series 5 personal organiser, so it is
not used for any given phone user interface.

On [[16 November]] [[2006]], the 100 millionth [[smartphone]] running the OS was
shipped.<ref>[http://www.thesmartpda.com/50226711/six_years_of_symbian_produces_10
0_models_and_100_million_shipments.php Six Years of Symbian Produces 100 Models
and 100 Million Shipments], The Smart PDA.</ref>

* [[Ericsson R380]] (2000) was the first commercially available phone based on
Symbian OS. As with the modern "FOMA" phones, this device was closed, and the user
could not install new C++ applications. Unlike those, however, the R380 could not
even run Java applications, and for this reason, some have questioned whether it
can properly be termed a 'smartphone'.
* [[Nokia Series 80]] interface:
**[[Nokia 9210]] Communicator smartphone (32-bit 66&nbsp;MHz [[ARM9]]-based
[[RISC]] [[Central processing unit|CPU]]) (2001), [[Nokia 9300|9300]] Communicator
(2004), [[Nokia 9500|9500]] Communicator (2004) using the [[Nokia Series 80]]
interface
* [[UIQ]] interface:
** Used for PDAs such as [[Sony Ericsson]] P800 (2002), [[Sony Ericsson P900|
P900]] (2003), [[Sony Ericsson P910|P910]] (2004), [[Sony Ericsson P990|P990]]
(2005), [[Sony Ericsson W950|W950]] (2006), [[Sony Ericsson M600|M600]] (2006),
[[Sony Ericsson P1|P1]] (2007), [[Sony Ericsson W960|W960]] (2007), [[Sony
Ericsson G700|G700]] (2008), [[Sony Ericsson G900|G900]] (2008), [[Sony Ericsson
G702|G702]] (2008), Motorola A920, [[Motorola A925|A925]], [[Motorola A1000|
A1000]], [[Motorola Z8|RIZR Z8]], [[Motorola Z10|RIZR Z10]], DoCoMo M1000, BenQ
P30, P31 and [[Nokia 6708]] using this interface.
* [[Nokia]] [[S60 (software platform)|S60]] (2002) interface:
** Nokia S60 is used in various phones, the first being the [[Nokia 7650]], then
the [[Nokia 3650]], followed by the [[Nokia 3620/3660]], [[Nokia 6600]], [[Nokia
7610]], [[Nokia 6670]] and [[Nokia 3230]]. The [[Nokia N-Gage]] and [[Nokia N-
Gage QD]] gaming/smartphone combos are also S60 platform devices. It was also used
on other manufacturers' phones such as the [[Siemens SX1]], [[Sendo]] X,
[[Panasonic X700]], [[Panasonic]] X800, [[Samsung]] SGH-D730, SGH-D720 and the
[[Samsung]] SGH-Z600. Recent, more advanced devices using S60 include the [[Nokia
6620]], [[Nokia 6630]], the [[Nokia 6680]], [[Nokia 6681]] and [[Nokia 6682]],
[[Nokia 6120 classic]], [[Nokia 6121 classic]], [[Nokia 6220]],a next generation
[[Nokia Nseries|Nseries]], including the [[Nokia N70]], [[Nokia N71]], [[Nokia
N72]], [[Nokia N73]], [[Nokia N75]], [[Nokia N76]], [[Nokia N77]], [[Nokia N78]],
[[Nokia N80]], [[Nokia N81]], [[Nokia N82]], [[Nokia N85]], [[Nokia N90]],
[[Nokia N91]], [[Nokia N92]], [[Nokia N93]], [[Nokia N95]] and [[Nokia N96]], the
enterprise (i.e. business) model [[Nokia Eseries|Eseries]], including the [[Nokia
E50]], [[Nokia E51]], [[Nokia E60]], [[Nokia E61]], [[Nokia E62]], [[Nokia E63]],
[[Nokia E65]], [[Nokia E66]], [[Nokia E70]], [[Nokia E71]], [[Nokia E71x]],
[[Nokia E78]], and [[Nokia E90]] and some of the models of Nokia Xpress music
mobiles like [[Nokia 5320]], [[Nokia 5700]] and [[Nokia 5800 XpressMusic]]. For an
up-to-date list, see the [http://www.s60.com/life/s60phones/browseDevices.do
Symbian S60 website].
* [[Nokia Series 90]] interface:
**[[Nokia 7710]] (2004) using the [[Nokia Series 90]] interface.
* [[MOAP]](S) interface:
**[[Fujitsu]], [[Mitsubishi Electric|Mitsubishi]], [[Sony Ericsson]] and [[Sharp
Corporation|Sharp]] phones for [[NTT DoCoMo]] in Japan, using an interface
developed specifically for DoCoMo's [[FOMA]] "Freedom of Mobile Access" network
brand. This UI platform is called MOAP "Mobile Orientated Applications Platform"
and is based on the UI from earlier Fujitsu FOMA models.

process manage.

Provides access to processes, threads, thread-local storage, and access


synchronisation.

These APIs provide support for a programming style that employs multiple threads
or processes that share resource protected by synchronisation mechanisms such as
mutexes. Symbian OS provides alternatives to this style that are better suited to
a limited resource environment:

the active objects framework provided by the Asynchronous Services API is usually
preferred to multi-threading in Symbian OS programming

the active objects framework provided by the Asynchronous Services API is usually
preferred to multi-threading in Symbian OS programming

server programs can be used to serialise access to a shared resource

cFunctionality is provided by a number of APIs. Use them as follows:

Provides access to processes, threads, and thread-local storage.

Processes are usually only manipulated directly by system programs. Threads can be
directly manipulated by multi-threaded programs. Note however that the active
objects framework provided by the Asynchronous Services API is usually preferred
to multi-threading in Symbian OS programming.

A program running in Symbian OS is a process, which can contains one or more


conceptually concurrent threads of execution. Each user process has its own
private address space. A process can create another process.

A thread is the unit of execution within a process. The scheduling of threads is


pre-emptive, i.e. a currently executing thread may be suspended at any time to
allow another thread to run.

mem manage:
Address Space and Process

Programs in Symbian OS consist of a number of processes, each of which contains


one or more conceptually concurrent threads of execution.

Each user process has its own private address space, i.e. a collection of memory
regions which that process can access. A user process cannot directly address
memory areas in the address space of another process. Threads belonging to a user
process run at user privilege level.

The address space of a process consists of a number of chunks, where a chunk is a


region of RAM mapped into contiguous virtual addresses. On creation, a user
process contains one thread (the main thread) and one to three chunks; these are:

Structure of a heap
A heap simply consists of two lists of cells; one is the list of allocated cells
and the other the list of free cells. Each list is anchored in the heap object.

A cell consists of a cell header followed by the body of the cell itself. The body
of the cell is the area of memory which is considered allocated.

The cell header is a struct of type RHeap::SCell defined as part of the RHeap
class in e32std.h.

The following diagram shows a typical mix of free and allocated cells.

You might also like