Trata-se de um sistema operacional 32 bits multitarefa robusto, destinado para dispositivos móveis e smartphones, plataforma e padrões abertos. Suporta o desenvolvimento principalmente em C e Java. O Symbian OS certamente visa robustez inigualável, fazendo forte garantia sobre a integridade, segurança dos dados do usuário e capacidade do sistema de funcionar sem falhas, além de totalmente dirigido por uma interface gráfica do usuário.

História

Em 1984 a Psion, que era uma pequena empresa Inglesa, começou a produzir computadores de mão, que culminaram no Psion Series 5, um handheld bastante poderoso para a época, oferecia um volume surpreendente de recursos e rodava um sistema operacional próprio, o EPOC 32.

O Psion Series 5, possuía um processador ARM7100 de apenas 18.4 Mhz, 8MB de memória SRAM, usada para armazenamento e instalação de programas, podia expandir a memória através de cartões Compact Flash de até 128 MB e funcionava com duas pilhas AA que resistiam a ate 30 horas de uso contínuo, possuía uma bateria de backup, como as de agenda eletrônicas para preservar os dados durante as trocas de pilhas.

Ele se tornou o preferido entre engenheiros, médicos e profissionais em geral, pois permitia trabalhar confortavelmente por longos períodos devido ao seu teclado que deslisava quando aberto, substituindo um notebook. Entre os aplicativos instalados, estavam um processador de textos, planília, gerenciador de contatos, agenda, calculadora, leitor de e-mails e navegador, que podiam ser usados caso você comprasse o modem serial. Em termos de hardware, ele era bastante modesto, a começar pelo processador.

O grande destaque era o sistema operacional, que aproveitava muito bem os poucos recursos de hardware mas rodava com um desempenho surpreendente. O psion 5 foi seguidos pelo Psion Series 5 MX, Psion Revo e Psion Series 7 (Com tela colorida), mas como nenhuma fez muito sucesso, a empresa descontinuou com a linha em 2000. Porém o EPOC sobreviveu, dando origem ao Symbian OS.

Symbian Fundation

Embora tenha nascido como um sistema proprietário, ele fez o caminho inverso em 2008, quando a Nokia, que tinha 48% das ações da empresa, comprou o restante da Symbian, incluindo os direitos sobre o sistema, para em seguida anunciar a abertura do código fonte e a transferência do desenvolvimento para uma fundação neutra, a Symbian Fundation, processo que será concluído até 2010.

Com esta decisão, a Nokia garantiu que nenhuma outra empresa comprasse os direitos do sistema, já que a maior parte dos seus aparelhos utilizam Symbian OS e mantendo o sistema com código aberto, não corre o risco das empresas que o utilizam migrem para outra plataforma, como o Andriod, por exemplo.

Hoje, a Symbian Fundation já conta com nomes de peso, como a Motorola, Sony Ericsson e a NTT DoCoMo. No momento, a empresa somente fornece sistemas operacionais para produtos com função de telefone, mas não é uma regra, podem lançar produtos como MP3 Players, Palmtops e inclusive câmeras digitais operadas pelo Symbian.

Plataformas

O Symbian OS foi baseado em 5 pontos chaves: pequenos dispositivos móveis, o mercado de massa, conexão wireless ocasional, variedade de produtos e plataforma aberta para desenvolvimento de terceiros. A família Symbian é dividida em duas plataformas parcialmente incompatíveis. De um lado temos o S60 desenvolvido pela Nokia, encontrado também em alguns aparelhos da LG e Samsung, e o UIQ que encontramos em aparelhos da Sony-Ericsson e da Motorola. Entre os dois, o S60 é o mais usado, simplesmente porque a Nokia vende muitos mais aparelhos.

A relação entre as plataformas pode parecer complicada, mas na verdade não é.O Symbian é o sistema operacional, que inclui drivers e bibliotecas de funções, enquanto o S60 e o UIQ são somente interfaces que rodam sobre ele, incluindo aplicativos e bibliotecas de desenvolvimento. Em comparação com o Linux, o Symbian seria composto pelo Kernel e as bibliorecas básicas do sistema, enquanto o S60 e o UIQ seria KDE (K Desktop Environment) e o Gnome (GNU Network Object Model Environment), interfaces que rodam sobre ele.

Concorrência

O Symbian é o sistema operacional de liderança no dispositivo móvel inteligente do mercado. Estatística publicadas em novembro de 2008 mostrou que o Symbian OS tinha uma quota de 46,6% dos dispositivos móveis inteligentes expedidos no terceiro trimestre de 2008, com a Apple 17,3% (através do iPhone OS), RIM com 15,3% , Microsoft com 13,5% (com Windows CE e Windows Mobile) e 7,3% das demais, incluindo Palm, Google Android e Linux.

Esrutura do Symbian OS

O Symbian OS é distribuído nas seguintes camadas, de cima para baixo: UI Framework Layer; Application Services Layer; Java ME; OS Services Layer; Base Services Layer; Kernel Services & Hardware Interface Layer.

UI Framework Layer

Camada superior do sistema operacional Symbian, a camada de UI Framework fornece a frameworks e bibliotecas para construção de uma interface de usuário, incluindo hierarquias de classe, base para controles de interface do usuário e utilitários usados pelos componentes de interface do usuário. Esta camada de interface do framework também inclui uma séria de especialidades que são usados pela interface do usuário, mas que são também disponíveis para aplicações, incluindo framework de animações.

A arquitetura de interface do usuário Symbian OS é baseado em um núcleo chamado de Uikon e uma hierquia de classe para controles de interface de usuário chamado de Ambiente de Controle. Juntos, eles fornecem o framework que define o comportamento da GUI (Graphical User Interface) básica, de acordo com a GUI de execução e as interações com gráficos adjacentes da arquitetura.

Application Services Layer

A Camada de Aplicação de Serviços, fornece independente do usuário, a interface de aplicações em Symbian OS. Estes serviços se dividem em três grupos principais:

  • Sistema de nível de serviços, utilizados por todas as aplicações, por exemplo, aplicações de arquiteturas ou de manipulação de textos;
  • Serviços para tipos genéricos de aplicações e aplicações como serviços, por exemplo, cartão de visitas anexados as mensagens e serviços de sincronização de dados, também estão incluídas uma série de outras aplicações como Calendário, Agenda, etc;
  • Serviços baseados em aplicações voltados a certa tecnologias, por exemplo, e-mail, mensagens instantâneas e navegação na internet.

As aplicações em Symbian OS, segue o padrão de arquitetura de software clássico MVC (Model Viewer Controller). O nível de suporte da estrutura, encapsula as informações essenciais das classes e o resumo dos sistemas necessários subjacentes a nível de comportamento, em princípio, um processo completo pode ser escrito sem qualquer outras dependências diretas (com exceção da Biblioteca do usuário).

A Camada de Aplicação e Serviços, reflete a maneira que o sistema como um todo evolui, se por um lado, contém aplicações essenciais, como modelos de contatos por exemplo, bem como um pequeno número de mecanismos de aplicação que são agregadas, como serviços de impressão no PDA-Estilo por exemplo; por outro lado, ele contém o quadro SIP (Session Initiation Protocol), que fornece a base para a próxima geração de aplicações e serviços móveis.

Java ME

Em alguns sentidos, o Java ME não se encaixa nas camadas do sistema operacional, mas a implementação Symbian Java é baseada em torno de:

  • Uma máquina virtual e apoio em camadas para o sistema java, que à complementa com base no padrão de interface de aplicativos MIDP 2.0;
  • Uma implementação na linguagem CLDC (Connected Limited Device Configuration) 1.1, I/O e utilitários de serviços;
  • Um número baixo de plug-in's que implementam a interface entre o CLDC e o sistema nativo.

O suporte a Java foi incluído no sistema operacional Symbian desde o início, mas o sistema inicialmente era baseado em pJava e JavaPhone, depois foi utilizado o Java ME e hoje usa o CLDC.

OS Services Layer

O OS Services Layer é, de fato, a camada ?middleware? Symbain OS; middleware, é um software que faz a mediação entre outros softwares. Ele é utilizado para mover informações entre programas, ocultando ao programador diferenças de protocolos de comunicação, plataformas e dependências do sistema operacional.

Esta camada fornece os servidores, frameworks e bibliotecas, os serviços estão divididos em quatro blocos principais, por área funcional:

  • Serviços do sistema operacional genérico;
  • Serviços de comunicações;
  • Multimídia e serviços gráficos;
  • Serviços de Conectividades.

Juntos, eles fornecem tecnologia específica, mas de aplicativos independentes no sistema operacional.

Base Services Layer

A camada base de serviços, fornece pouco a nível de usuário, ela fornece o servidor de arquivos e as bibliotecas do usuário. Outros frameworks importantes fornecidos por esta camada incluem todos os plug-in?s fornecidos pelo Symbian OS, o banco de dados e a biblioteca de criptografia.

Kernel Services & Hardware Interface Layer

Esta é a camada mais baixa do sistema operacional Symbian OS, engloba o Kernel o hardware, drivers de dispositivos lógicos e físicos, e implementa suporte padrão para todas as plataformas suportadas.

Kernel

O Kernel é responsável pela gestão e controle do sistema operacional, isso contempla funcionalidade para comunicação entre processos, gestão de estruturas para sincronismos, como semáforos, objetos de exclusão mútua e a criação de threads e processos.

O Symbian OS era baseado no mesmo núcleo do EPOC, o EKA1 (EPOC Kernel 1), o núcleo do EKA1, que está presente no Symbian OS até a versão 7, implementa toda a base do sistema e possuía alguns recursos com multi-programação pré-empitva e proteção de memória. Apartir da versão 8.0 do Symbian OS, passou a ser utilizado um novo núcleo, o EKA2, tendo inovações e diferenças em relação aos seus antecessores no suporte do sistema de tempo real, nos múltiplos fluxos de execução e no nanokernel.

O suporte do sistema de tempo real no EKA2, implica em disponibilizar um tempo limite maior para os processos que exigem a prioridade em tempo real. Também faz a gestão dos múltiplos fluxos de execução juntamente com os múltiplos processos. O nanokernel é a camada mais baixa do núcleo que implementa diversas tarefas em um contexto reduzido. No Symbian OS o nanokernel tem sua principal função em simplificar a supervisão dos fluxos de execução e exclusões mútuas. Entretanto, não aceita alocação de memória dinâmica, sendo apenas uma implementação mais simples destes conceitos.

O kernel também é composto por DLL's (Dynamic Link Libraries), que são bibliotecas carregadas na memória do sistema, com funções básicas para as aplicações. As DLL?s são muito utilizadas no Symbian OS, tendo um total de quase 100 bibliotecas em um telefone móvel comum. No Symbian OS v0.9, toda a interface gráfica do usuario é baseada nas DLL's. Existem dois tipos de DLL, estáticas e polimórficas, as estáticas são coleções de classes e de funções básicas do sistema, ou seja, a base de bibliotecas do sistema operacional; as polimórficas funcionam como plug-in's para as aplicações.

Estrutura do Kernel

Um smartphone requer uma plataforma que execute muitos serviços sejam executados em tempo real e ao mesmo tempo tem que lidar com a necessidade de disponibilizar um ambiente de operação e interação similar a um Desktop. Para atender estes dois requisitos de forma adequada o Kernel do Symbian OS tem uma estrutura (Figura 1) mais complexa do que o dos sistemas operacionais comuns.

Figura 1. Estrutura do Kernel do Symbian OS. Fonte: Smartphone Operating System Conceps with Symbian OS.

Quanto a estrutura do Kernel a nível de administrador o PDD (Physical device driver), responsável pela comunicação diretamente com o hardware; O LDD (Logical Device Driver), trata-se da interface de comunicação com os níveis superiores do software; O ASSP (Application specific standard product), pode comunicar-se diretamente com o processador, fazer interrupções, controlar acesso direto a memória, gestão de energia, etc; O Personality Layer, trata-se de um modo especial de interação entre o sistema operacional e diretamente o hardware; O RTOS(Real Time OS), foi desenvolvido para implementar a funcionalidade telefônica, ele implementa as funções de GSM do smartphone através da ligação direta com o hardware; O Memory Model, é um modelo de como a memória esta organizada num dispositivo e como sistema operacional irá funcionar com ela; O Symbian OS Kernel, depende do Nanokernel pois implementa os diversos modelos de memória exigidos pela plataforma; O Nanokernel, executa as partes mais básicas e primitivas do Symbian OS e é utilizado, na maioria das vezes, pela parte telefônica do sistema operacional.

Quanto a nível de usuário, temos o Microkernel Servers, que faz os pedidos para inicial as operações em Kernel-Mode, temos o HAL (Harware Abstraction Layer) que oferece suporte ao áudio, vídeo e tecnolgias de aceleração de reconhecimento de voz, dentre outras, já as demais, são bibliotecas do sistema e threads a nível de usuário[Jipping, Michael j. (2007)].

Processos e Threads

O Symbian OS é um sistema operacional multitarefa preemptivo, um aplicativo nesse sistema pode fazer o uso de várias thread's, embora isso não seja recomendado, devido ao custo que é gerado para administração destes recursos. Para evitar esse tipo de situação, o Symbian OS possui um framework para comunicação assíncrona, batizado de Active Objects.

Os Active Objects podem ser usados para implementar processamento cooperativo, simulando a existência de várias thread's. Uma thread qualquer possui um escalonador ativo. O escalonador espera por eventos e quando este acontece, invoca o objeto ativo que estava esperando pelo evento. Uma vez tratado o evento recebido, o escalonador volta a esperar novos eventos, como os objetos ativos funcionam de maneira cooperativa, existe o risco de uma tarefa bloquear todo o processo, o que deve ser evitado.

Os processos no Symbian OS possuem espaço de memória reservado para eles, não sendo possível que outro processo acesse essa área diretamente, por questões de segurança. Vários processos podem ser "executados" ao mesmo tempo, sendo o kernel responsável por realizar a gestão de execução. Cada processo possui pelo menos uma thread, e caso exista mais de uma, todas elas podem acessar o espaço de memória correspondente ao processo que as contém.

Um processo simples é composto por um conjunto de recursos e um fluxo de execução, multithreading é a execução de um processo composto por vários fluxos de execução que concorrem entre si, baseadas em prioridade. O núcleo do Symbian OS disponibiliza o recurso de multithreadind, onde vários fluxos de execução podem executar paralelamente, sem haver necessidade do controle dos fluxos de execução explícito no código em execução.

O nanokernel do Symbain OS suporta os mais simples fluxos de execução do sistema, o sistema também suporta a gerência e sincronização das nanothreads a partir do nanokernel. As nanothreads utilizam uma pilha, única e simples do administrador do sistema, ou seja, só pode ser executável no sistema no modo administrador.

O modelo de arquitetura de muitos serviços no Symbian OS é o cliente/servidor. Um servidor é um aplicativo que não possui interface com o usuário e provê um tipo de funcionalidade para interessados em utiliza-la, por exemplo, o servidor de arquivos. Os serviços usualmente são executados em um processo separado, de modo que a comunicação entre clientes e servidores se dá através do sistema operacional.

Estados dos processos

O estado de um processo é definido pelo que o processo está a fazer. Nós definimos os estados de um processo como segue (Figura 2):

Figura 2 - Processos e Threads
Fonte: Smartphone Operating System Conceps with Symbian OS
  • New(Pronto): Um processo que está sendo criado e tem sua seção de texto construído a partir do código em um programa, a sua seção de dados e pilha são alocadas na memória e componentes de hardware são inicializados;
  • Read(Pronto): Processo que está disponível para execução em um processador, mas à espera de execução;
  • Running(Execução): Um processo que está sendo executado em um processador, que está manipulando o hardware e executando as instruções solicitadas;
  • Waiting(Espera): Processo que está suspenso e aguardando algum evento externo para ocorrer, o evento externo pode ser qualquer coisa, como uma interrupção para a conclusão de um pedido de I/O;
  • Terminated(Terminado): Um processo no estado encerrado foi concluída a sua execução em um processador, quando um processo é finalizado, remove-se as tabelas do sistema e armazenamento de dados, e deixa de ser um processo.
    Observe na Figura 2 que os arcos são rotulados com as operações realizadas para mover um processo entre seus estados. Por exemplo, move um processo de "novo" para "pronto" através do processo de criação. Note também, que o diagrama descreve o caminho percorrido entre os estados.

Um processo, não pode mover-se do "estado novo" imediatamente a um estado de execução, da mesma forma, um processo não pode estar à espera de um externo evento e ir diretamente para o "estado encerrado". E por fim, é importante perceber que, enquanto apenas um processo poder ser executado em um único processador em um dado momento, muitos processos podem estar nos estados de "esperando" ou "pronto" [Jipping, Michael j. (2007)].

Gerência de Memória

Uma plataforma operada pelo Symbian OS oferece os seguintes tipos de memória: RAM (Random Acess Memory), ROM (Read Only Memory), Flash Disk interno e cartões de memória.

A memória RAM é utilizada durante na execução das aplicações, é nela que os programas e o sistema operacional alocam memória durante e execução dos processos e fluxos de execução, geralmente os dispositivos móveis possuem uma quantidade muito pequena de memória RAM.
Parte do sistema operacional Symbian OS fica armazenado na memória ROM, assim como código de boot, drivers e código específico do hardware. A memória ROM é exclusiva do sistema, o usuário não pode manipular nem escrever dados nesta memória.

O Flash Disk representa memórias adicionais que pode funcionar como um disco rígido para leitura e escrita de dados, que pode ser feita pelo utilizador ou pelo sistema de arquivos do sistema operacional. O sistema de arquivos suportado é os comuns nos SO?s da Microsoft, FAT (File Allocation Table) e o LFFS (Logging Fast File System). Os cartões de memória funcionam como discos de armazenamento, só que removíveis, desta maneira é possível alterar a capacidade de armazenamento de um dispositivo.

O kernel do Symbian OS é responsável por alocar a memória física e gerir os recursos físicos da memória RAM, MMU (Memory Management Unit) e caches. Quanto a alocação de memória, ela tem uma implementação simples, baseada em Heap. Heap é uma estrutura de dados organizada como árvore binária, seguindo algumas regras.

O Symbian OS é exemplo de sistema que não usa memória virtual (Swap) para o seu gerenciamento de memória. Ele faz, entretanto, o uso de outros mecanismos para gerenciar sua memória, incluindo os MMU?s.

Assim como a maioria do sistema, o Symbian OS divide a memória em páginas lógicas e molduras físicas. O tamanho usual para as molduras é de 4KB. Visto que o tamanho da memória poderá atingir os 4GB ( pois se trata de sistema 32-bit) e tendo em conta o tamanho das molduras de pagina, facilmente se percebe que se irá obter uma tabela de página com mais de um milhão de entradas. Devido as limitações de tamanho de memória, não é viável para o Symbian OS dedicar 1MB para a tabela de página, pois a pesquisa e acesso a uma tabela de página muito grande, iria provocar uma enorme sobrecarga ao sistema.

Para resolver este problema, o Symbian OS adotou uma tabela de páginas de dois níveis, conforme demonstrado na figura 3. O primeiro nível, page directory, que é indexado pelos primeiros bits do endereço lógico, fornece uma ligação para o segundo nível, que é um conjunto de tabelas de página. Estas tabelas, fornecem uma ligação para uma página específica na memória e são indexados pelos 8 bits do meio do endereço lógico e a página em memória é indexada pelo últimos 12 bits do endereço lógico.

A tradução dos endereços lógicos em endereços físicos é feita por hardware através da MMU e TLB (Translation Lookaside Buffer) presentes na arquitetura do processador ARM.

Figura 3: Tabela de página multi-nivel. Fonte: Smartphone Operating System Concepts with Symbian OS

Quando uma página não está presente na memória, ocorre um erro, pois todas as páginas pertencentes a uma aplicação devem ser carregadas no momento em que é iniciada a aplicação. Tendo em vista que o endereçamento do Symbian OS poderá atingir os 4 GB, apesar de ser improvável que um Smartphone tenha tal quantidade de memória, tal situação causaria uma "exceção não tratada", fazendo com que a aplicação fosse encerrada.

Partes de memória são atribuídas a página através de uma lista de partes livres. Se não existirem partes disponíveis, então ocorre um erro. Não é possível substituir partes de memória usadas como páginas de uma futura aplicação, mesmo que as partes pertençam a uma aplicação que já não esteja executando. Isto acontece porque não existe swapping no Symbian OS, logo não existe um local para onde possam ser copiadas estas páginas.

Há quatro versões diferentes do modelo de implementação de memória no Symbian OS, cada modelo foi projetado para certos tipos de configurações de hardware.

Monving Model: Foi concebido para as arquiteruras mais recentes do ARM, neste modelo a page directory tem 4 KB, e cada entrada possui 4 bytes, o que da um diretório de 16 KB. Embora a segmentação não seja explicitamente utilizada, existe uma organização para o layout da memória. Existe uma parte para guardar os dados pertencentes ao utilizados, e uma parte para guardar os dados relativamente ao Kernel.

Multiple Model: Modelo concebido para a versão 6 da arquitetura ARM. A MMU, nesta versão, difere da utilizada nas versões anteriores. Por exemplo, a page directory, requer um manuseamento diferente uma vez que pode ser seccionada em duas partes, cada um referenciando diferentes conjuntos de tabelas de pagina, user-page tables e kernel-page tables.

Direct Model: Este modelo assume que não existe uma MMU. É um modelo raramente utilizado uma vez que a falta de MMU poderia causar graves problemas de performance. Este modelo é útil para ambientes de desenvolvimento em que por alguma razão seja útil ter a MMU desativada.

Emulator Model: Desenvolvido para suportar o emulador do Symbian OS no Microsoft Windows. Tal como seria de esperar, este modelo apresenta algumas restrições, o emulador roda como um único processo no Windows. O espaço de endereçamento esta limitado a 2 GB (ao invés dos 4GB). Toda a memória disponibilizada para o emulador é acessível por qualquer processo do Symbian OS. Não existe proteção de memória, as bibliotecas do Symbian OS são disponibilizadas como DLL's do Windows, cabendo a este manusear a sua alocação e respectiva gestão de memória [Jipping, Michael j. (2007)].

Gerência de Processador

Os celulares têm sua arquitetura de hardware baseada em microprocessadores assíncronos ARM (Advanced RISC Machine) de 32 bits. As características principais destes microprocessadores são o tamanho reduzido e o baixo consumo de energia, o que corresponde com os requisitos do Symbian OS. O alto desempenho exigido pelo Symbian OS v9.3 é relativo, entre 100 e 200 MHz, quando comparado com os CPU?s dos desktops que chegam a 3GHz. As versões mais recentes, baseadas no EKA2, do Symbian OS são projetados para microprocessador ARM modelo v5T. Um processo em Symbian OS é um executável que tem o seu próprio espaço de memória, uma pilha e um cabeçalho. O Symbian OS, suporta também, múltiplos processos e múltiplos fluxos de execução, todo o processo tem um nome associado ao mesmo, e por padrão é utilizado o nome do arquivo .exe em questão.

A partir da oitava versão do sistema que utiliza o EKA2, o Symbian OS inova o tratamento de multi-programação. Para tratar os processos e fluxos de execução utiliza escalonadores tradicionais, que são controlados pelo nanokernel, alguns processos são considerados de alta prioridade, como o controle das chamadas telefônicas, aplicações de vídeo e música, animações e outras aplicações que usam protocolos de comunicação. A gerência desses processos é implementada com um FIFO (First in, First out), onde os primeiros processos têm a prioridade mais alta da fila. O escalonamento dos fluxos de execução segue uma linha híbrida, onde para cada tipo de processo ou fluxo de execução, o sistema implementa um método para gerenciar os seus recursos. Os múltiplos fluxos de execução são tratados com um escalonador Roud-Robin com prioridades (64 níveis). O nanokernel implementa, internamente, algoritmos escalonadores Round-Robin com prioridades, limite de tempo de execução e semáforos.

A prioridade entre os processos é tratada pelo kernel, seguindo a prioridade dada a cada processo, seja pelo próprio sistema, seja pelo utilizador, ou seja pelo programador. O processo chega ao estado final quando termina a sua execução normal ou num processo de kill (quando é enviado sinais a determinados processo em execução). Também pode ser encerrado por um outro motivo indicado pelo sistema operacional. Neste caso, o processo pode ser interrompido e finalizado de duas formas chamadas de kill itself, quando ele encerra a sua execução ou quando ele é encerrado pro meio de outro processo. Os processos nesse sistema operacional são tratados internamente no núcleo, ou num nível mais baixo, no nanokernel. Este último, implementa alguns escalonadores tradicionais como o FIFO, Round-Robin e semáfores para controlar a fila de processos e fluxos de execução[Jipping, Michael j. (2007)].

Entrada e Saída (I/O)

O hardware do sistema como um todo, possui diversos periféricos ligados través de uma interface. Essa interface constitui em um elemento fundamental para a comunicação do sistema operacional com esses periféricos, e usa-se os controladores para isto. O controlador é projetado para gerenciar e fazer funcionar cada periférico, no intuito de realizar e fazer funcionar suas tarefas, este é responsável por fazer a interação do hardware e software, no caso o sistema operacional, através das interfaces dos dispositivos.

O Symbian OS utiliza duas técnicas de gerência dos processos de entrada e saída, interrupções e DMA (Direct memory acess). As interrupções são determinadas no kernel, a partir dos sinais emitidos em dois registradores do tipo PIC (Programmable Interrupt Controller). Essas interrupções são divididas de duas formas: IRQ (Interrupt Request) ou interrupção normal e FIQ (Fast Interrupt Request) ou interrupção rápida, sendo esta última com maior prioridade sobre as IRQ?s. Essa organização pode ser vista na Figura 4.

Figura 4 - Funcionamento das Interrupções. Fonte: Symbian OS Internals Real-time Kernel Programming

Conforme a Figura 4, o mecanismo de interrupções do sistema tem dois níveis, separados pelos registadores PIC. O PIC nível 1, possui acesso direto ao processador (CPU). Já no PIC nível 2, ele deve passar pelo nível 1 para acontecer a interrupção do processo de E/S. Como o mecanismo de interrupções não é sempre eficiente, utiliza-se a técnica de DMA para agilizar os processos de E/S, parecidos com os conceitos básicos dos SO?s mais conhecidos.

A DMA permite aos periféricos e/ou dispositivos alocar memória diretamente sem que exista um processo no CPU para isto. No Symbian OS é bem comum o uso de DMA em multicanais, onde é permitida mais de uma tranferência de dados de E/S na memória, divididos em canais. Um canal do DMA incializa o processo de tranferencia de dados pelo registrador do dispositivo e endereça memória diretamente. Estes canais são organizados em uma FIFO e controlados pela interface de cada periférico [Sales, Jane. (2005)].

Conclusão

O Symbian OS está em franca ascensão, assim como todos os sistemas operacionais de código aberto, e também devido ao crescimento da tecnologia móvel em todo o mundo. Como a sua base foi muito bem projetada, isto permite que a evolução do sistema e inclusão de novos componentes, como 3G e TV digital, por exemplo, seja rápida para acompanhar a evolução do mercado. Seu funcionamento não requer um hardware muito robusto o que facilicita sua inserção em dispositivos móveis, tendo um custo-beneficio bem melhor que seus concorrêntes.

References